View file load/search.php

File size: 8.15Kb
<?php
#-----------------------------------------------------#
#          ********* ROTORCMS *********               #
#             Made by   :  VANTUZ                     #
#               E-mail  :  [email protected]         #
#                 Site  :  http://pizdec.ru           #
#             WAP-Site  :  http://visavi.net          #
#                  ICQ  :  36-44-66                   #
#  Вы не имеете право вносить изменения в код скрипта #
#        для его дальнейшего распространения          #
#-----------------------------------------------------#
require_once ('../includes/start.php');
require_once ('../includes/functions.php');
require_once ('../includes/header.php');
include_once ('../themes/header.php');

$act = (isset($_GET['act'])) ? check($_GET['act']) : 'index';
$start = (isset($_GET['start'])) ? abs(intval($_GET['start'])) : 0;

show_title('site.png', 'Поиск в файлах');

if (is_user()) {
	switch ($act):
	############################################################################################
	##                                    Главная поиска                                      ##
	############################################################################################
		case "index":

			$config['newtitle'] = 'Поиск в файлах';

			echo '<div class="form"><form action="search.php?act=search&amp;'.SID.'" method="get">';
			echo '<input type="hidden" name="act" value="search" />';

			echo 'Запрос:<br />';
			echo '<input type="text" name="find" /><br />';

			echo 'Искать:<br />';
			echo '<input name="where" type="radio" value="0" checked="checked" /> В названии<br />';
			echo '<input name="where" type="radio" value="1" /> В описании<br /><br />';

			echo 'Тип запроса:<br />';
			echo '<input name="type" type="radio" value="0" checked="checked" /> И<br />';
			echo '<input name="type" type="radio" value="1" /> Или<br />';
			echo '<input name="type" type="radio" value="2" /> Полный<br /><br />';

			echo '<input type="submit" value="Поиск" /></form></div><br />';

		break;

		############################################################################################
		##                                          Поиск                                         ##
		############################################################################################
		case "search":

			$find = check(strval($_GET['find']));
			$type = abs(intval($_GET['type']));
			$where = abs(intval($_GET['where']));

			if (!is_utf($find)){
				$find = win_to_utf($find);
			}

			if (utf_strlen($find) >= 3 && utf_strlen($find) <= 50) {

				$findmewords = explode(" ", utf_lower($find));

				$arrfind = array();
				foreach ($findmewords as $val) {
					if (utf_strlen($val) >= 3) {
						$arrfind[] = (empty($type)) ? '+'.$val.'*' : $val.'*';
					}
				}

				$findme = implode(" ", $arrfind);

				if ($type == 2 && count($findmewords) > 1) {
					$findme = "\"$find\"";
				}

				$config['newtitle'] = $find.' - Результаты поиска';

				$wheres = (empty($where)) ? 'title' : 'text';

				$loadfind = ($type.$wheres.$find);

				// ----------------------------- Поиск в названии -------------------------------//
				if ($wheres == 'title') {
					echo 'Поиск запроса <b>&quot;'.$find.'&quot;</b> в названии<br />';

					if (empty($_SESSION['loadfindres']) || $loadfind!=$_SESSION['loadfind']) {

						$querysearch = DB::run() -> query("SELECT `downs_id` FROM `downs` WHERE `downs_active`=? AND MATCH (`downs_title`) AGAINST ('".$findme."' IN BOOLEAN MODE) LIMIT 100;", array(1));
						$result = $querysearch -> fetchAll(PDO::FETCH_COLUMN);

						$_SESSION['loadfind'] = $loadfind;
						$_SESSION['loadfindres'] = $result;
					}

					$total = count($_SESSION['loadfindres']);

					if ($total > 0) {
						if ($start >= $total) {
							$start = 0;
						}

						echo 'Найдено совпадений: <b>'.$total.'</b><br /><br />';

						$result = implode(',', $_SESSION['loadfindres']);

						$querydown = DB::run() -> query("SELECT `downs`.*, `cats_name` FROM `downs` LEFT JOIN `cats` ON `downs`.`downs_cats_id`=`cats`.`cats_id` WHERE `downs_id` IN (".$result.") ORDER BY `downs_time` DESC LIMIT ".$start.", ".$config['downlist'].";");

						while ($data = $querydown -> fetch()) {
							$filesize = (!empty($data['downs_link'])) ? read_file(BASEDIR.'load/files/'.$data['downs_link']) : 0;

							echo '<div class="b"><img src="../images/img/zip.gif" alt="image" /> ';
							echo '<b><a href="down.php?act=view&amp;id='.$data['downs_id'].'&amp;'.SID.'">'.$data['downs_title'].'</a></b> ('.$filesize.')</div>';

							echo '<div>Категория: <a href="down.php?cid='.$data['downs_cats_id'].'&amp;'.SID.'">'.$data['cats_name'].'</a><br />';
							echo 'Скачиваний: '.$data['downs_load'].'<br />';
							echo 'Добавил: '.profile($data['downs_user']).' ('.date_fixed($data['downs_time']).')</div>';
						}

						page_strnavigation('search.php?act=search&amp;find='.urlencode($find).'&amp;type='.$type.'&amp;where='.$where.'&amp;', $config['downlist'], $start, $total);
					} else {
						show_error('По вашему запросу ничего не найдено!');
					}
				}
				// --------------------------- Поиск в описании -------------------------------//
				if ($wheres == 'text') {
					echo 'Поиск запроса <b>&quot;'.$find.'&quot;</b> в описании<br />';

					if (empty($_SESSION['loadfindres']) || $loadfind!=$_SESSION['loadfind']) {

						$querysearch = DB::run() -> query("SELECT `downs_id` FROM `downs` WHERE `downs_active`=? AND MATCH (`downs_text`) AGAINST ('".$findme."' IN BOOLEAN MODE) LIMIT 100;", array(1));
						$result = $querysearch -> fetchAll(PDO::FETCH_COLUMN);

						$_SESSION['loadfind'] = $loadfind;
						$_SESSION['loadfindres'] = $result;
					}

					$total = count($_SESSION['loadfindres']);

					if ($total > 0) {
						if ($start >= $total) {
							$start = 0;
						}

						echo 'Найдено совпадений: <b>'.$total.'</b><br /><br />';

						$result = implode(',', $_SESSION['loadfindres']);

						$querydown = DB::run() -> query("SELECT `downs`.*, `cats_name` FROM `downs` LEFT JOIN `cats` ON `downs`.`downs_cats_id`=`cats`.`cats_id` WHERE `downs_id` IN (".$result.") ORDER BY `downs_time` DESC LIMIT ".$start.", ".$config['downlist'].";");

						while ($data = $querydown -> fetch()) {
							$filesize = (!empty($data['downs_link'])) ? read_file(BASEDIR.'load/files/'.$data['downs_link']) : 0;

							echo '<div class="b"><img src="../images/img/zip.gif" alt="image" /> ';
							echo '<b><a href="down.php?act=view&amp;id='.$data['downs_id'].'&amp;'.SID.'">'.$data['downs_title'].'</a></b> ('.$filesize.')</div>';

							if (utf_strlen($data['downs_text']) > 300) {
								$data['downs_text'] = strip_tags(bb_code($data['downs_text']), '<br>');
								$data['downs_text'] = utf_substr($data['downs_text'], 0, 300).'...';
							}

							echo '<div>'.$data['downs_text'].'<br />';

							echo 'Категория: <a href="down.php?cid='.$data['downs_cats_id'].'&amp;'.SID.'">'.$data['cats_name'].'</a><br />';
							echo 'Добавил: '.profile($data['downs_user']).' ('.date_fixed($data['downs_time']).')</div>';
						}

						page_strnavigation('search.php?act=search&amp;find='.urlencode($find).'&amp;type='.$type.'&amp;where='.$where.'&amp;', $config['downlist'], $start, $total);
					} else {
						show_error('По вашему запросу ничего не найдено!');
					}
				}

			} else {
				show_error('Ошибка! Запрос должен содержать от 3 до 50 символов!');
			}

			echo '<img src="../images/img/back.gif" alt="image" /> <a href="search.php?'.SID.'">Вернуться</a><br />';
		break;

	default:
		redirect("search.php?".SID);
	endswitch;

} else {
	show_login('Вы не авторизованы, чтобы использовать поиск, необходимо');
}

echo '<img src="../images/img/reload.gif" alt="image" /> <a href="index.php?'.SID.'">Категории</a><br />';

include_once ('../themes/footer.php');
?>