Просмотр файла blog/search.php

Размер файла: 9.35Kb
  1. <?php
  2. #-----------------------------------------------------#
  3. # ********* ROTORCMS ********* #
  4. # Made by : VANTUZ #
  5. # E-mail : visavi.net@mail.ru #
  6. # Site : http://pizdec.ru #
  7. # WAP-Site : http://visavi.net #
  8. # ICQ : 36-44-66 #
  9. # Вы не имеете право вносить изменения в код скрипта #
  10. # для его дальнейшего распространения #
  11. #-----------------------------------------------------#
  12. require_once ('../includes/start.php');
  13. require_once ('../includes/functions.php');
  14. require_once ('../includes/header.php');
  15. include_once ('../themes/header.php');
  16.  
  17. if (isset($_GET['act'])) {
  18. $act = check($_GET['act']);
  19. } else {
  20. $act = 'index';
  21. }
  22. if (isset($_GET['start'])) {
  23. $start = abs(intval($_GET['start']));
  24. } else {
  25. $start = 0;
  26. }
  27.  
  28. show_title('site.png', 'Поиск в блогах');
  29.  
  30. if (is_user()) {
  31. switch ($act):
  32. ############################################################################################
  33. ## Главная поиска ##
  34. ############################################################################################
  35. case 'index':
  36.  
  37. $config['newtitle'] = 'Поиск в блогах';
  38.  
  39. echo '<div class="form"><form action="search.php?act=search&amp;'.SID.'" method="get">';
  40. echo '<input type="hidden" name="act" value="search" />';
  41.  
  42. echo 'Запрос:<br />';
  43. echo '<input type="text" name="find" size="50" /><br />';
  44.  
  45. echo 'Искать:<br />';
  46. echo '<input name="where" type="radio" value="0" checked="checked" /> В заголовке<br />';
  47. echo '<input name="where" type="radio" value="1" /> В тексте<br /><br />';
  48.  
  49. echo 'Тип запроса:<br />';
  50. echo '<input name="type" type="radio" value="0" checked="checked" /> И<br />';
  51. echo '<input name="type" type="radio" value="1" /> Или<br />';
  52. echo '<input name="type" type="radio" value="2" /> Полный<br /><br />';
  53.  
  54. echo '<input type="submit" value="Поиск" /></form></div><br />';
  55. break;
  56.  
  57. ############################################################################################
  58. ## Поиск ##
  59. ############################################################################################
  60. case 'search':
  61.  
  62. $find = check(strval($_GET['find']));
  63. $type = abs(intval($_GET['type']));
  64. $where = abs(intval($_GET['where']));
  65.  
  66. if (!is_utf($find)){
  67. $find = win_to_utf($find);
  68. }
  69.  
  70. if (utf_strlen($find) <= 50) {
  71. $findme = utf_lower($find);
  72. $findmewords = explode(" ", $findme);
  73.  
  74. $arrfind = array();
  75. foreach ($findmewords as $valfind) {
  76. if (utf_strlen($valfind) >= 3) {
  77. $arrfind[] = $valfind;
  78. }
  79. }
  80. array_splice($arrfind, 3);
  81.  
  82. if (count($arrfind) > 0) {
  83. $config['newtitle'] = $find.' - Результаты поиска';
  84.  
  85. $types = (empty($type)) ? 'AND' : 'OR';
  86. $wheres = (empty($where)) ? 'title' : 'text';
  87.  
  88. $blogfind = ($types.$wheres.$find);
  89.  
  90. // ----------------------------- Поиск в названии -------------------------------//
  91. if ($wheres == 'title') {
  92. echo 'Поиск запроса <b>&quot;'.$find.'&quot;</b> в заголовке<br />';
  93.  
  94. if ($type == 2) {
  95. $arrfind[0] = $findme;
  96. }
  97. $search1 = (isset($arrfind[1]) && $type != 2) ? $types." `blogs_title` LIKE '%".$arrfind[1]."%'" : '';
  98. $search2 = (isset($arrfind[2]) && $type != 2) ? $types." `blogs_title` LIKE '%".$arrfind[2]."%'" : '';
  99.  
  100. if (empty($_SESSION['blogfindres']) || $blogfind!=$_SESSION['blogfind']) {
  101.  
  102. $querysearch = DB::run() -> query("SELECT `blogs_id` FROM `blogs` WHERE `blogs_title` LIKE '%".$arrfind[0]."%' ".$search1." ".$search2." LIMIT 500;");
  103. $result = $querysearch -> fetchAll(PDO::FETCH_COLUMN);
  104.  
  105. $_SESSION['blogfind'] = $blogfind;
  106. $_SESSION['blogfindres'] = $result;
  107. }
  108.  
  109. $total = count($_SESSION['blogfindres']);
  110.  
  111. if ($total > 0) {
  112. if ($start >= $total) {
  113. $start = last_page($total, $config['blogpost']);
  114. }
  115.  
  116. echo 'Найдено совпадений: <b>'.$total.'</b><br /><br />';
  117.  
  118. $result = implode(',', $_SESSION['blogfindres']);
  119.  
  120. $queryblog = DB::run() -> query("SELECT `blogs`.*, `cats_id`, `cats_name` FROM `blogs` LEFT JOIN `catsblog` ON `blogs`.`blogs_cats_id`=`catsblog`.`cats_id` WHERE `blogs_id` IN (".$result.") ORDER BY `blogs_time` DESC LIMIT ".$start.", ".$config['blogpost'].";");
  121.  
  122. while ($data = $queryblog -> fetch()) {
  123. if ($data['blogs_rating'] > 0) {
  124. $data['blogs_rating'] = '<span style="color:#00aa00">+'.$data['blogs_rating'].'</span>';
  125. }
  126. if ($data['blogs_rating'] < 0) {
  127. $data['blogs_rating'] = '<span style="color:#ff0000">'.$data['blogs_rating'].'</span>';
  128. }
  129.  
  130. echo '<div class="b"><img src="../images/img/edit.gif" alt="image" /> ';
  131. echo '<b><a href="blog.php?act=view&amp;id='.$data['blogs_id'].'&amp;'.SID.'">'.$data['blogs_title'].'</a></b> ('.$data['blogs_rating'].')</div>';
  132.  
  133. echo '<div>Категория: <a href="blog.php?cid='.$data['cats_id'].'&amp;'.SID.'">'.$data['cats_name'].'</a><br />';
  134. echo 'Просмотров: '.$data['blogs_read'].'<br />';
  135. echo 'Автор: '.profile($data['blogs_user']).' ('.date_fixed($data['blogs_time']).')</div>';
  136. }
  137.  
  138. page_strnavigation('search.php?act=search&amp;find='.urlencode($find).'&amp;type='.$type.'&amp;where='.$where.'&amp;', $config['blogpost'], $start, $total);
  139. } else {
  140. show_error('По вашему запросу ничего не найдено!');
  141. }
  142. }
  143. // --------------------------- Поиск в текте -------------------------------//
  144. if ($wheres == 'text') {
  145. echo 'Поиск запроса <b>&quot;'.$find.'&quot;</b> в тексте<br />';
  146.  
  147. if ($type == 2) {
  148. $arrfind[0] = $findme;
  149. }
  150. $search1 = (isset($arrfind[1]) && $type != 2) ? $types." `blogs_text` LIKE '%".$arrfind[1]."%'" : '';
  151. $search2 = (isset($arrfind[2]) && $type != 2) ? $types." `blogs_text` LIKE '%".$arrfind[2]."%'" : '';
  152.  
  153. if (empty($_SESSION['blogfindres']) || $blogfind!=$_SESSION['blogfind']) {
  154.  
  155. $querysearch = DB::run() -> query("SELECT `blogs_id` FROM `blogs` WHERE `blogs_text` LIKE '%".$arrfind[0]."%' ".$search1." ".$search2." LIMIT 500;");
  156. $result = $querysearch -> fetchAll(PDO::FETCH_COLUMN);
  157. $_SESSION['blogfind'] = $blogfind;
  158. $_SESSION['blogfindres'] = $result;
  159. }
  160.  
  161. $total = count($_SESSION['blogfindres']);
  162.  
  163. if ($total > 0) {
  164. if ($start >= $total) {
  165. $start = last_page($total, $config['blogpost']);
  166. }
  167.  
  168. echo 'Найдено совпадений: <b>'.$total.'</b><br /><br />';
  169.  
  170. $result = implode(',', $_SESSION['blogfindres']);
  171.  
  172. $queryblog = DB::run() -> query("SELECT `blogs`.*, `cats_id`, `cats_name` FROM `blogs` LEFT JOIN `catsblog` ON `blogs`.`blogs_cats_id`=`catsblog`.`cats_id` WHERE `blogs_id` IN (".$result.") ORDER BY `blogs_time` DESC LIMIT ".$start.", ".$config['blogpost'].";");
  173.  
  174. while ($data = $queryblog -> fetch()) {
  175. if ($data['blogs_rating'] > 0) {
  176. $data['blogs_rating'] = '<span style="color:#00aa00">+'.$data['blogs_rating'].'</span>';
  177. }
  178. if ($data['blogs_rating'] < 0) {
  179. $data['blogs_rating'] = '<span style="color:#ff0000">'.$data['blogs_rating'].'</span>';
  180. }
  181.  
  182. echo '<div class="b"><img src="../images/img/edit.gif" alt="image" /> ';
  183. echo '<b><a href="blog.php?act=view&amp;id='.$data['blogs_id'].'&amp;'.SID.'">'.$data['blogs_title'].'</a></b> ('.$data['blogs_rating'].')</div>';
  184.  
  185. if (utf_strlen($data['blogs_text']) > 200) {
  186. $data['blogs_text'] = strip_tags(bb_code($data['blogs_text']), '<br>');
  187. $data['blogs_text'] = utf_substr($data['blogs_text'], 0, 200).'...';
  188. }
  189.  
  190. echo '<div>'.$data['blogs_text'].'<br />';
  191.  
  192. echo 'Категория: <a href="blog.php?cid='.$data['cats_id'].'&amp;'.SID.'">'.$data['cats_name'].'</a><br />';
  193. echo 'Автор: '.profile($data['blogs_user']).' ('.date_fixed($data['blogs_time']).')</div>';
  194. }
  195.  
  196. page_strnavigation('search.php?act=search&amp;find='.urlencode($find).'&amp;type='.$type.'&amp;where='.$where.'&amp;', $config['blogpost'], $start, $total);
  197. } else {
  198. show_error('По вашему запросу ничего не найдено!');
  199. }
  200. }
  201. } else {
  202. show_error('Ошибка! Необходимо не менее 3-х символов в слове!');
  203. }
  204. } else {
  205. show_error('Ошибка! Запрос должен содержать не более 50 символов!');
  206. }
  207.  
  208. echo '<img src="../images/img/back.gif" alt="image" /> <a href="search.php?'.SID.'">Вернуться</a><br />';
  209. break;
  210.  
  211. default:
  212. redirect("search.php?".SID);
  213. endswitch;
  214. } else {
  215. show_login('Вы не авторизованы, чтобы использовать поиск, необходимо');
  216. }
  217.  
  218. echo '<img src="../images/img/reload.gif" alt="image" /> <a href="index.php?'.SID.'">К блогам</a><br />';
  219.  
  220. include_once ('../themes/footer.php');
  221. ?>