<?php
/*
////////////////////////////////////////////////////////////////////////////////
// JohnCMS Mobile Content Management System //
// Project site: http://johncms.com //
// Support site: http://gazenwagen.com //
////////////////////////////////////////////////////////////////////////////////
// Lead Developer: Oleg Kasyanov (AlkatraZ) alkatraz@gazenwagen.com //
// Development Team: Eugene Ryabinin (john77) john77@gazenwagen.com //
// Dmitry Liseenko (FlySelf) flyself@johncms.com //
////////////////////////////////////////////////////////////////////////////////
*/
define('_IN_JOHNCMS', 1);
$headmod = 'forumsearch';
require('../incfiles/core.php');
$lng_forum = $core->load_lng('forum');
$textl = $lng_forum['search_forum'];
require('../incfiles/head.php');
/*
-----------------------------------------------------------------
Функция подсветки результатов запроса
-----------------------------------------------------------------
*/
function ReplaceKeywords($keywords, $value) {
$a = stripos(mb_strtolower($value), mb_strtolower($keywords));
if ($a === false)
return $value;
else {
$zamen = 'qwertyzxcytrewq';
$b = substr($value, $a, strlen($keywords));
preg_match_all("/<.*>/Usi", $value, $out);
$value = preg_replace('/<.*>/Usi', $zamen, $value);
$value = str_replace($b, '<span style="background-color: #FFFF33">' . $b . '</span>', $value);
$heck = 0;
for ($i = 0; $i < count($out[0]); $i++) {
$heck = strpos($value, $zamen, $heck);
$value = substr($value, 0, $heck) . $out[0][$i] . substr($value, $heck + strlen($zamen));
}
return $value;
}
}
echo '<p>' . functions::forum_new(1) . '</p>';
echo '<div class="phdr"><a href="index.php"><b>' . $lng['forum'] . '</b></a> | ' . $lng['search'] . '</div>';
/*
-----------------------------------------------------------------
Принимаем данные, выводим форму поиска
-----------------------------------------------------------------
*/
$search = isset($_POST['search']) ? trim($_POST['search']) : '';
$search = $search ? $search : rawurldecode(trim($_GET['search']));
$search = preg_replace("/[^\w\x7F-\xFF\s]/", " ", $search);
$search_t = isset($_REQUEST['t']) ? 1 : 0;
$search = preg_replace('/ {2,}/', ' ', $search);
$search = str_replace('qwertyzxcytrewq', '', $search);
echo '<div class="gmenu"><form action="search.php" method="post"><p>' .
'<input type="text" value="' . ($search ? functions::checkout($search) : '') . '" name="search" />' .
'<input type="submit" value="' . $lng['search'] . '" name="submit" /><br />' .
'<input name="t" type="checkbox" value="1" ' . ($search_t ? 'checked="checked"' : '') . ' /> ' . $lng_forum['search_topic_name'] .
'</p></form></div>';
/*
-----------------------------------------------------------------
Проверям на ошибки
-----------------------------------------------------------------
*/
$error = false;
if ($search && (mb_strlen($search) < 4 || mb_strlen($search) > 64))
$error = $lng_forum['error_search_lenght'];
if ($search && !$error) {
/*
-----------------------------------------------------------------
Выводим результаты запроса
-----------------------------------------------------------------
*/
$array = explode(' ', $search);
$count = count($array);
echo '<div class="bmenu">' . $lng['search_results'] . '</div>';
$total = mysql_result(mysql_query("SELECT COUNT(*) FROM `forum`
WHERE MATCH (`text`) AGAINST ('" . mysql_real_escape_string($search) . "')
AND `type` = '" . ($search_t ? 't' : 'm') . "'" . ($rights >= 7 ? "" : " AND `close` != '1'")), 0);
if ($total) {
$searchs = str_replace(' ', '|', $search);
$req = mysql_query("SELECT * FROM `forum` WHERE MATCH (`text`) AGAINST ('" . mysql_real_escape_string($search) . "') AND `type` = '" . ($search_t ? 't' : 'm') . "' LIMIT $start, $kmess");
while ($res = mysql_fetch_assoc($req)) {
echo $i % 2 ? '<div class="list2">' : '<div class="list1">';
if (!$search_t) {
$req_t = mysql_query("SELECT `id`,`text` FROM `forum` WHERE `id` = '" . $res['refid'] . "'");
$res_t = mysql_fetch_assoc($req_t);
echo '<b>' . $res_t['text'] . '</b><br />';
} else {
$req_p = mysql_query("SELECT `text` FROM `forum` WHERE `refid` = '" . $res['id'] . "' ORDER BY `id` ASC LIMIT 1");
$res_p = mysql_fetch_assoc($req_p);
if ($count > 1) {
for ($s = 0; $s <= count($array); $s++) {
if (mb_strlen($array[$s]) >= 3) {
$res['text'] = ReplaceKeywords($array[$s], $res['text']);
}
}
} else {
$res['text'] = ReplaceKeywords($search, $res['text']);
}
echo '<b>' . $res['text'] . '</b><br />';
}
echo '<a href="../users/profile.php?user=' . $res['user_id'] . '">' . $res['from'] . '</a> ';
echo ' <span class="gray">(' . date("d.m.Y / H:i", $res['time'] + $set_user['sdvig'] * 3600) . ')</span><br/>';
$text = $search_t ? $res_p['text'] : $res['text'];
$text = functions::checkout(mb_substr($text, 0, 400), 2, 1);
$text = str_replace('qwertyzxcytrewq', '', $text);
$text = preg_replace('#\[c\](.*?)\[/c\]#si', '<div class="quote">\1</div>', $text);
if (!$search_t) {
if ($count > 1) {
for ($s = 0; $s <= count($array); $s++) {
if (mb_strlen($array[$s]) >= 3) {
$text = ReplaceKeywords($array[$s], $text);
}
}
} else {
$text = ReplaceKeywords($search, $text);
}
}
echo $text;
if (mb_strlen($res['text']) > 400)
echo '...<a href="index.php?act=post&id=' . $res['id'] . '">' . $lng_forum['read_all'] . ' >></a>';
echo '<br /><a href="index.php?id=' . ($search_t ? $res['id'] : $res_t['id']) . '">' . $lng_forum['to_topic'] . '</a>'
. ($search_t ? '' : ' | <a href="index.php?act=post&id=' . $res['id'] . '">' . $lng_forum['to_post'] . '</a>');
echo '</div>';
++$i;
}
} else {
echo '<div class="rmenu"><p>' . $lng['search_results_empty'] . '</p></div>';
}
echo '<div class="phdr">' . $lng['total'] . ': ' . $total . '</div>';
if ($total > $kmess) {
// Навигация по страницам
echo '<p>' . functions::display_pagination('search.php?' . ($search_t ? 't=1&' : '') . 'search=' . rawurlencode($search) . '&', $start, $total, $kmess) . '</p>' .
'<p><form action="search.php?' . ($search_t ? 't=1&' : '') . 'search=' . rawurlencode($search) . '" method="post">' .
'<input type="text" name="page" size="2"/>' .
'<input type="submit" value="' . $lng['to_page'] . ' >>"/>' .
'</form></p>';
}
} else {
/*
-----------------------------------------------------------------
Выводим сообщение об ошибке
-----------------------------------------------------------------
*/
if ($error)
echo functions::display_error($error);
/*
-----------------------------------------------------------------
Инструкции для поиска
-----------------------------------------------------------------
*/
echo '<div class="phdr"><small>' . $lng_forum['search_help'] . '</small></div>';
}
echo '<p>' . ($search ? '<a href="search.php">' . $lng['search_new'] . '</a><br />' : '') . '<a href="index.php">' . $lng['to_forum'] . '</a></p>';
require('../incfiles/end.php');
?>