<?php
/*********************************************************************************************
 * e107 PLUGIN: Auto Gallery
 * VERSION:     2.xx
 * DESCRIPTION: A media/image gallery, where galleries are based on a directory structure. 
 *              Thumbnails are automatically generated through Imagemagick or GD.
 * WRITTEN BY:  Mr_Visible (www.cerebralsynergy.com)
 * DATE:        11/04/2007
 *
 * Released under the terms and conditions of the
 * GNU General Public License (http://gnu.org).
 ********************************************************************************************/

$startAG = microtime(true);

require_once(dirname(__FILE__)."/def.php");
require_once(dirname(__FILE__)."/language.php");

if (!AUTOGAL_ENABLESEARCH) {header("location:".AUTOGAL_AUTOGALLERY); exit;}

$searchMatch    = ($_POST['autogal_searchMatch'] ? $_POST['autogal_searchMatch'] : "");
$searchForGal   = ($_POST['autogal_searchForGal'] ? $_POST['autogal_searchForGal'] : ($searchMatch ? 0 : 1));
$searchForImg   = ($_POST['autogal_searchForImg'] ? $_POST['autogal_searchForImg'] : ($searchMatch ? 0 : 1));
$searchForFla   = ($_POST['autogal_searchForFla'] ? $_POST['autogal_searchForFla'] : ($searchMatch ? 0 : 1));
$searchForMov   = ($_POST['autogal_searchForMov'] ? $_POST['autogal_searchForMov'] : ($searchMatch ? 0 : 1));
$searchForAud   = ($_POST['autogal_searchForAud'] ? $_POST['autogal_searchForAud'] : ($searchMatch ? 0 : 1));

$searchGallery  = ($_GET['gallery'] ? rawurldecode($_GET['gallery']) : '');
$searchGallery  = (isset($_POST['autogal_searchGallery']) ? rawurldecode($_POST['autogal_searchGallery']) : $searchGallery);

$searchFieldNam = ($_POST['autogal_searchFieldNam'] ? $_POST['autogal_searchFieldNam'] : ($searchMatch ? 0 : 1));
$searchFieldExt = ($_POST['autogal_searchFieldExt'] ? $_POST['autogal_searchFieldExt'] : 0);
$searchFieldSub = ($_POST['autogal_searchFieldSub'] ? $_POST['autogal_searchFieldSub'] : 0);
$searchFieldDes = ($_POST['autogal_searchFieldDes'] ? $_POST['autogal_searchFieldDes'] : 0);
$searchGo       = $_POST['autogal_searchGo'];

$resultsSortBy = 'title';

$start = ($_GET['start'] ? $_GET['start'] : 0);

define("e_PAGETITLE", AUTOGAL_TITLE. " / " . AUTOGAL_LANG_SEARCH_L1);
require_once(HEADERF);

$text = "
<form name='autogal_search' method='post'>
<table width='97%' class='border' colspan='2'> 
<tr> 
	<td class='forumheader3' width='30%'><b>".AUTOGAL_LANG_SEARCH_L2."</b><br /><span class='smalltext'>".str_replace("[MINSEARCHLEN]", AUTOGAL_MINSEARCHSTRLEN, AUTOGAL_LANG_SEARCH_L3)."</span></td>
	<td class='forumheader3' width='70%'><input type='text' name='autogal_searchMatch' size='30' class='tbox' value=\"".htmlspecialchars($searchMatch)."\"></td>
</tr>
<tr>
	<td class='forumheader3'><b>".AUTOGAL_LANG_SEARCH_L4."</b><br /><span class='smalltext'>".AUTOGAL_LANG_SEARCH_L5."</span></td>
	<td class='forumheader3'>
		<input type='checkbox' name='autogal_searchForGal'".($searchForGal ? " checked='checked'" : "").">".AUTOGAL_LANG_SEARCH_L6."&nbsp;&nbsp;
		<input type='checkbox' name='autogal_searchForImg'".($searchForImg ? " checked='checked'" : "").">".AUTOGAL_LANG_SEARCH_L7."&nbsp;&nbsp;
		<input type='checkbox' name='autogal_searchForFla'".($searchForFla ? " checked='checked'" : "").">".AUTOGAL_LANG_SEARCH_L8."&nbsp;&nbsp;
		<input type='checkbox' name='autogal_searchForMov'".($searchForMov ? " checked='checked'" : "").">".AUTOGAL_LANG_SEARCH_L9."&nbsp;&nbsp;
		<input type='checkbox' name='autogal_searchForAud'".($searchForAud ? " checked='checked'" : "").">".AUTOGAL_LANG_SEARCH_L30."&nbsp;&nbsp;
	</td>
</tr>
<tr>
	<td class='forumheader3'><b>".AUTOGAL_LANG_SEARCH_L10."</b><br /><span class='smalltext'>".AUTOGAL_LANG_SEARCH_L11."</span></td>
	<td class='forumheader3'><select class='tbox' name='autogal_searchGallery'>".AutoGal_GallerySelect($searchGallery)."</select></td>
</tr>
<tr>
	<td class='forumheader3'><b>".AUTOGAL_LANG_SEARCH_L12."</b><br /><span class='smalltext'>".AUTOGAL_LANG_SEARCH_L13."</span></td>
	<td class='forumheader3'>
		<input type='checkbox' name='autogal_searchFieldNam'".($searchFieldNam ? " checked='checked'" : "").">".AUTOGAL_LANG_SEARCH_L14."&nbsp;&nbsp;
		<input type='checkbox' name='autogal_searchFieldExt'".($searchFieldExt ? " checked='checked'" : "").">".AUTOGAL_LANG_SEARCH_L15."&nbsp;&nbsp;
		".(AUTOGAL_USEXMLMETA && AUTOGAL_XMLSEARCH ? "
		<input type='checkbox' name='autogal_searchFieldDes'".($searchFieldDes ? " checked='checked'" : "").">".AUTOGAL_LANG_SEARCH_L17."&nbsp;&nbsp;
		<input type='checkbox' name='autogal_searchFieldSub'".($searchFieldSub ? " checked='checked'" : "").">".AUTOGAL_LANG_SEARCH_L16."&nbsp;&nbsp;
		" : "")."
	</td>
</tr>
<tr>
	<td class='forumheader3' colspan='2' style='text-align:center'><input name='autogal_searchGo' class='button' type='submit' value='".AUTOGAL_LANG_SEARCH_L0."'></td>
</tr>
</table>
</form>";

if ($searchGo)
{
	if (strlen(str_replace("*", "", $searchMatch)) < AUTOGAL_MINSEARCHSTRLEN)
	{
		$text .= "<br /><br /><div style='text-align:center'><b>".str_replace("[MINSEARCHLEN]", AUTOGAL_MINSEARCHSTRLEN, AUTOGAL_LANG_SEARCH_L18)."</b></div>";
	}
	elseif ((!$searchForGal)&&(!$searchForImg)&&(!$searchForFla)&&(!$searchForMov)&&(!$searchForAud))
	{
		$text .= "<br /><br /><div style='text-align:center'><b>".AUTOGAL_LANG_SEARCH_L19."</b></div>";
	}
	elseif ((!$searchFieldNam)&&(!$searchFieldExt)&&(AUTOGAL_USEXMLMETA && AUTOGAL_XMLSEARCH && (!$searchFieldDes)&&(!$searchFieldSub)))
	{
		$text .= "<br /><br /><div style='text-align:center'><b>".AUTOGAL_LANG_SEARCH_L20."</b></div>";
	}
	else
	{
		$numResults = 0;
		$numTests = 0;
		$isSearchMeta = (((AUTOGAL_USEXMLMETA)&&(AUTOGAL_XMLSEARCH))&&(($searchFieldDes)||($searchFieldSub)));
		$searchStr = preg_quote($searchMatch);
		$searchStr = str_replace("\*", ".*", $searchStr);
		$searchResults = array();
		
		$eles = AutoGal_GetGalleryElements($searchGallery, true, 'name');
		$eles = array_merge($eles['galleries'], $eles['files']);
		
		foreach ($eles as $eleInfo)
		{
			$element = $eleInfo['element'];
			
			if ($isSearchMeta)
			{
				$eleInfo = AutoGal_GetElementInfo($element, true);
			}
			
			if ($eleInfo['isgallery'])
			{
				if (!$searchForGal) continue;
			}
			else
			{
				if (!$eleInfo['isnonimg'] && !$searchForImg) continue;
				if ($eleInfo['isflash'] && !$searchForFla) continue;
				if ($eleInfo['ismovie'] && !$searchForMov) continue;
				if ($eleInfo['isaudio'] && !$searchForAud) continue;
			}

			$criteraOK = false;
			if ((!$criteraOK)&&($searchFieldNam))
			{
				if (preg_match("/($searchStr)/mi", $eleInfo['title'], $match)) {$eleInfo["__searchMatch__"] = $match[1]; $criteraOK = true;}
			}
			if ((!$criteraOK)&&($searchFieldExt))
			{
				if (preg_match("/($searchStr)/mi", $eleInfo['extension'], $match)) {$eleInfo["__searchMatch__"] = $match[1]; $criteraOK = true;}
			}
			if ((!$criteraOK)&&($searchFieldSub))
			{
				if (preg_match("/($searchStr)/mi", $eleInfo['submitbyusername'], $match)) {$eleInfo["__searchMatch__"] = $match[1]; $criteraOK = true;}
			}
			if ((!$criteraOK)&&($searchFieldDes))
			{
				$desc = $eleInfo['description'];
				$desc = preg_replace("/\[[\/\w\=\s]+\]/", '', $desc);
				$desc = str_replace("\n", ' ', $desc);
				if (preg_match("/($searchStr)/mi", $desc, $match)) {$eleInfo["__searchMatch__"] = $match[1]; $criteraOK = true;}
			}
			
			if ($criteraOK)
			{
				$searchResults[] = $eleInfo;
				$numResults ++;
			}
			
			if ($numResults > AUTOGAL_SEARCHMAXRESULTS) break;
		}
			
		if ($numResults <= 0)
		{
			$text .= "<br /><br /><div style='text-align:center'><b>".AUTOGAL_LANG_SEARCH_L21."</b></div>";
		}
		else
		{
			$text .= "
			<br />
			<br />
			<div style='text-align:center'>
			<h".AUTOGAL_TITLEHEADSTYLE.">".AUTOGAL_LANG_SEARCH_L22." ($numResults)</h".AUTOGAL_TITLEHEADSTYLE.">
			</div>
			<br />
			<table class='border' width='97%'>
			<tr>
				<td class='forumheader' style='text-align:center'><b>".AUTOGAL_LANG_SEARCH_L23."</b></td>
				<td class='forumheader' style='text-align:center'><b>".AUTOGAL_LANG_SEARCH_L24."</b></td>
				<td class='forumheader' style='text-align:center'><b>".AUTOGAL_LANG_SEARCH_L25."</b></td>".
				($searchFieldExt ? "<td class='forumheader' style='text-align:center'><b>".AUTOGAL_LANG_SEARCH_L26."</b></td>" : '').
				($searchFieldSub ? "<td class='forumheader' style='text-align:center'><b>".AUTOGAL_LANG_SEARCH_L27."</b></td>" : '').
				($searchFieldDes ? "<td class='forumheader' style='text-align:center'><b>".AUTOGAL_LANG_SEARCH_L28."</b></td>" : '').
			"</tr>\n";
			
			foreach ($searchResults as $eleInfo)
			{
				$name = $eleInfo['title'];
				$name = preg_replace("/".preg_quote($eleInfo['__searchMatch__'])."/im", "<font color='red'><b>".$eleInfo['__searchMatch__']."</b></font>", $name);
				$name = $eleInfo['ahref'].">$name</a>";
				
				$thumb = "";
				if ($eleInfo['type'] == 'Gallery')
				{
					if ($eleInfo['defimg'])
					{
						$thumb = "<a href=\"".$eleInfo['link']."\">".$eleInfo['defimghtml']."</a>";
					}
				}
				else
				{
					$thumb = $eleInfo['ahref'].">".$eleInfo['imgthumbhtml']."</a>";
				}
				
				if ($eleInfo['description'])
				{
					$desc = $eleInfo['description'];
					$desc = preg_replace("/\[[\/\w\=\s]+\]/", '', $desc);
					$desc = str_replace("\n", ' ', $desc);
					$desc = preg_replace("/".preg_quote($eleInfo['__searchMatch__'])."/im", "<font color='red'><b>".$eleInfo['__searchMatch__']."</b></font>", $desc);
				}
				else
				{
					$desc = '-';
				}
				
				$ext = $eleInfo['extension'];
				$ext = preg_replace("/".preg_quote($eleInfo['__searchMatch__'])."/im", "<font color='red'><b>".$eleInfo['__searchMatch__']."</b></font>", $ext);
				
				$subUsername = $eleInfo['submitbyusername'];
				$subUsername = preg_replace("/".preg_quote($eleInfo['__searchMatch__'])."/im", "<font color='red'><b>".$eleInfo['__searchMatch__']."</b></font>", $subUsername);
				
				if ($eleInfo['submitbyuserid'] > 0)
				{
					$eleInfo['submituserlink'] = "<a href=\"".e_BASE."user.php?id.".$eleInfo['submitbyuserid']."\">$subUsername</a>";
				}
				else
				{
					$eleInfo['submituserlink'] = $subUsername;
				}
				
				$galInfo = AutoGal_GetElementInfo($eleInfo['gallery']);
	
				$text .= "
				<tr>
					<td class='forumheader3' style='text-align:center'>".($thumb ? "$thumb<br />" : '')."$name</td>
					<td class='forumheader3' style='text-align:center'><a href=\"".$galInfo['link']."\">".$galInfo['title']."</a></td>
					<td class='forumheader3' style='text-align:center'>".$eleInfo['filetypetitle']."</td>".
					($searchFieldExt ? "<td class='forumheader3' style='text-align:center'>$ext</td>" : '').
					($searchFieldSub ? "<td class='forumheader3' style='text-align:center'>".$eleInfo['submituserlink']."</td>" : '').
					($searchFieldDes ? "<td class='forumheader3' style='text-align:center'>$desc</td>" : '').
				"</tr>\n";
			}
			
			$text .= "</table>\n".($numResults >= AUTOGAL_SEARCHMAXRESULTS ? "<br />".str_replace("[MAXRESULTS]", AUTOGAL_SEARCHMAXRESULTS, AUTOGAL_LANG_SEARCH_L29) : '');
		}
	}
}
	
$botLinks = AutoGal_GetBotLinks('', true, true, true, false);
$text = "<br />$text<br /><div style='text-align:center'>".(count($botLinks) > 0 ? "<br />".implode(' ', $botLinks) : '')."</div>";

if (AUTOGAL_SHOWAUTOGALVER)
{
	$agVer = AutoGal_GetVersion();
	$autoGalVer = 
	"<div class='smalltext' style='text-align:center'>".
	AUTOGAL_LANG_L1.
	"<a target='_blank' href='".AUTOGAL_DOWNLOADURL."'>Auto Gallery</a> v$agVer".
	"</div>";
}
else
{
	$autoGalVer = '';
}

$ns->tablerender(AUTOGAL_TITLE.' - '.AUTOGAL_LANG_SEARCH_L1, $text);
$AGTime = microtime(true) - $startAG;
print "<div class='smalltext' style='text-align:center'>".str_replace("[TIME]", substr("$AGTime", 0, 5), AUTOGAL_LANG_L5)."</div>";
print $autoGalVer;

if (AUTOGAL_SHOW_FOOTER){require_once(FOOTERF);}

/*****************************************************************************************************
 * 
 ****************************************************************************************************/
function AutoGal_CmpSearchResults($a, $b)
{
	global $sortBy;

	$cmpA = $a[$resultsSortBy];
	$cmpB = $b[$resultsSortBy];
	
	$cmpA = strtolower($cmpA);
	$cmpB = strtolower($cmpB );
      
	if ($cmpA == $cmpB) return 0;
	return ($cmpA < $cmpB) ? -1 : 1;
}


?>