Файл: CMS/comm/comm_forum_search.php
Строк: 161
<?php
if (!defined('CMS')) { die('Access Denied!'); }
$data = '';
$data = $db->selectRow("SELECT ?_comm_comm.*, ?_comm_category.*
FROM ?_comm_comm LEFT JOIN ?_comm_category
ON ?_comm_comm.`comm_cats_id` = ?_comm_category.`cats_id`
WHERE `comm_url` = ? LIMIT 1;", $soo);
if (empty($data) || !is_array($data)) {
$inSes->addMessage('Ошибка! Сообщество не найдено или ссылка неверна!');
gen_red('index', '', RND);
}
if (empty($data['comm_forum'])) {
$inSes->addMessage('Ошибка! Форум не найден или ссылка неверна!');
gen_red('index', '', RND);
}
$arr_admins = @explode(',', $data['comm_admins']);
$users = array();
if ($is_logged) {
$users = $db->selectRow("SELECT * FROM ?_comm_users WHERE `cu_comm` = ? AND `cu_user` = ? LIMIT 1;", $data['comm_id'], $log);
if ($data['comm_user'] == $log) {
$is_admin_soo = true;
}
if (in_array($log, $arr_admins) && $users['cu_admin'] == 1) {
$is_moder_soo = true;
}
}
if ($data['comm_status'] == 1 && empty($users)) {
$inSes->addMessage('Форум только для участников сообщества!');
gen_red('index', '', RND);
}
$periods = array(
'0' => 'За все время',
'7' => 'Последние 7 дней',
'30' => 'Последние 30 дней',
'60' => 'Последние 60 дней',
'90' => 'Последние 90 дней',
'180' => 'Последние 180 дней',
'365' => 'Последние 365 дней');
$forums = array();
$rows = $db->select("SELECT `forums_id`,`forums_name` FROM ?_comm_forums WHERE `forums_comm` = ? ORDER BY `forums_order` ASC;", $data['comm_id']);
$forums[0] = 'Не имеет значения';
if (!empty($rows) && count($rows) > 0) {
foreach($rows as $row) {
$forums[$row['forums_id']] = $row['forums_name'];
}
}
$section = !empty($_REQUEST['section']) ? abs(intval($_REQUEST['section'])) : 0; // Раздел
$period = !empty($_REQUEST['period']) ? abs(intval($_REQUEST['period'])) : 0; // Период
$where = !empty($_REQUEST['where']) ? abs(intval($_REQUEST['where'])) : 0; // Где Искать
$type = !empty($_REQUEST['type']) ? abs(intval($_REQUEST['type'])) : 0; // Тип запроса
$lang['OR'] = 'или';
$lang['AND'] = 'и';
$lang['SEARCH_WORD'] = '«%s»';
if (!empty($_REQUEST['q'])) {
$q = check(trim($_REQUEST['q']));
$logic = (empty($type)) ? 'AND' : 'OR';
$title = (empty($where)) ? 'в сообщениях' : 'в темах';
show_header($q . ' - Результаты поиска ' . $title);
echo '<div class="b"><a href="#down">' . icon('down.png') . '</a> ';
echo 'Новые: <a title="Новые темы" href="' . gen_uri('new_themes', '', RND) . '">темы</a>, ';
echo '<a title="Новые сообщения" href="' . gen_uri('new_posts', '', RND) . '">сообщения</a></div>';
if (cms_strlen($q) < 50) {
$q = explode(' ', $q);
$find = $query = array();
foreach($q as $val) {
if (cms_strlen($val) >= 3) {
$query[] = sprintf($lang['SEARCH_WORD'], check($val));
$find[] = $val;
}
}
array_splice($find, 3);
$query = implode(' ' . $lang[$logic] . ' ', $query);
if (count($find) > 0) {
if (!empty($where)) { // Поиск в темах
$searchsec = ($section > 0) ? "`topics_forums_id` = " . $section . " AND" : '';
$searchper = ($period > 0) ? "`topics_last_time` > " . (SITE_TIME - ($period * 24 * 60 * 60)) . " AND" : '';
if ($type == 2) {
$find[0] = implode(' ', $q);
}
$search1 = (isset($find[1]) && $type != 2) ? $logic . " `topics_title` LIKE '%" . $find[1] . "%'" : '';
$search2 = (isset($find[2]) && $type != 2) ? $logic . " `topics_title` LIKE '%" . $find[2] . "%'" : '';
$onpage = !empty($config['themes_num']) ? num($config['themes_num']) : 10;
if ($page > 1) $from = ($page - 1) * $onpage; else $from = 0;
$rows = $db->selectPage($total, "SELECT * FROM ?_comm_topics WHERE `topics_comm` = ? AND " . $searchsec . " " . $searchper . " `topics_title` LIKE '%" . $find[0] . "%' " . $search1 . " " . $search2 . " LIMIT ?d, ?d", $data['comm_id'], $from, $onpage);
if (!empty($rows) && $total > 0) {
$c = $from + 1;
list($start, $stop) = get_page();
?>
<div class="b">
- Поиск запроса <b><?=$query?></b> в темах<br />
- Всего найдено: <strong><?=intval( $total )?></strong><br />
- Показаны результаты с <strong><?=intval( $start + 1)?></strong>
по <strong><?=intval( $stop )?></strong> место<br />
</div>
<?php
foreach($rows as $row) {
if ($row['topics_locked'] == 1) {
$icon = 'sticky-notes-pin.png';
}
else if ($row['topics_closed'] == 1) {
$icon = 'lock.png';
}
else $icon = 'post_new.png';
echo '<div class="b">' . icon($icon, 'icons');
echo '<a href="' . gen_uri('topic', $row['topics_id'], RND) . '"><b>' . $row['topics_title'] . '</b></a> (' . $row['topics_posts'] . ')<br />Страницы: ' . forum_navigation('topic', $row['topics_id'], $config['post_num'], $row['topics_posts']);
echo 'Сообщение: ' . nickname($row['topics_last_user']) . ' (' . get_date($row['topics_last_time']) . ')</div>';
}
$qq = '';
$qq = !empty($type) ? 'type=' . $type : '';
$qq = !empty($where) ? 'where=' . $where : '';
$qq = !empty($period) ? 'period=' . $period : '';
$qq = !empty($section) ? 'section=' . $section : '';
$qq .= '&q=' . implode(' ', $q);
echo show_pages(gen_uri('search', '', $qq) . '&' . RND);
}
else {
show_error('По вашему запросу ничего не найдено!');
}
}
else { // Поиск в сообщениях
$searchsec = ($section > 0) ? "`posts_forums_id` = " . $section . " AND" : '';
$searchper = ($period > 0) ? "`posts_time` > " . (SITE_TIME - ($period * 24 * 60 * 60)) . " AND" : '';
if ($type == 2) {
$find[0] = implode(' ', $q);
}
$search1 = (isset($find[1]) && $type != 2) ? $logic . " `posts_text` LIKE '%" . $find[1] . "%'" : '';
$search2 = (isset($find[2]) && $type != 2) ? $logic . " `posts_text` LIKE '%" . $find[2] . "%'" : '';
$onpage = !empty($config['themes_num']) ? num($config['themes_num']) : 10;
if ($page > 1) $from = ($page - 1) * $onpage; else $from = 0;
$rows = $db->selectPage($total, "SELECT `p`.*, `t`.`topics_title`
FROM ?_comm_posts `p` LEFT JOIN ?_comm_topics `t`
ON `p`.`posts_topics_id` = `t`.`topics_id`
WHERE `p`.`posts_comm` = ? AND " . $searchsec . " " . $searchper . " `posts_text` LIKE '%" . $find[0] . "%' " . $search1 . " " . $search2 . "
LIMIT ?d, ?d", $data['comm_id'], $from, $onpage);
if (!empty($rows) && $total > 0) {
$c = $from + 1;
list($start, $stop) = get_page();
?>
<div class="b">
- Поиск запроса <b><?=$query?></b> в сообщениях<br />
- Всего найдено: <strong><?=intval( $total )?></strong><br />
- Показаны результаты с <strong><?=intval( $start + 1)?></strong>
по <strong><?=intval( $stop )?></strong> место<br />
</div>
<?php
foreach($rows as $row) {
if (!empty($config['anonymity'])) {
$ip_ua = '<span class="data">(' . $row['posts_brow'] . ', ' . $row['posts_ip'] . ')</span>';
}
else $ip_ua = '';
echo '<div class="b">' . icon('folder.png', 'icons');
echo ' <a href="' . gen_uri('topic', $row['posts_topics_id'], 'pid=' . $row['posts_id'] . '&' . RND) . '"><b>' . $row['topics_title'] . '</b></a><br />' . nl2br(bb_code($row['posts_text'])) . '<br />';
echo 'Написал: ' . users_anketa($row['posts_user']);
echo ' ' . user_online($row['posts_user']) . ' <small>(' . get_date($row['posts_time']) . ')</small><br />';
echo $ip_ua . '</div>';
}
$qq = '';
$qq = !empty($type) ? 'type=' . $type : '';
$qq = !empty($where) ? 'where=' . $where : '';
$qq = !empty($period) ? 'period=' . $period : '';
$qq = !empty($section) ? 'section=' . $section : '';
$qq .= '&q=' . implode(' ', $q);
echo show_pages(gen_uri('search', '', $qq) . '&' . RND);
}
else {
show_error('По вашему запросу ничего не найдено!');
}
}
}
else {
show_error('Ошибка! Необходимо не менее 3-х символов в слове!');
}
}
else {
show_error('Ошибка! Запрос должен содержать не более 50 символов!');
}
}
else {
show_header('Поиск по форуму');
echo '<div class="b"><a href="#down">' . icon('down.png') . '</a> ';
echo 'Новые: <a title="Новые темы" href="' . gen_uri('new_themes', '', RND) . '">темы</a>, ';
echo '<a title="Новые сообщения" href="' . gen_uri('new_posts', '', RND) . '">сообщения</a></div>';
}
$form = new cmsForm(gen_uri('search', $id, RND));
$form->addText('Запрос:', 'q', request('q'));
$form->addSelect('Раздел:', 'section', $section, $forums);
$form->addSelect('Период:', 'period', (int) request('period'), $periods);
$form->addRadio('<br />Где Искать:', 'where', (int) request('where'), array('0' => 'В сообщениях', '1' => 'В темах'));
$form->addRadio('<br />Тип запроса:', 'type', (int) request('type'), array('0' => 'И', '1' => 'Или', '2' => 'Полный'));
echo $form->Submit('Найти');
unset($form);
echo '<div class="b"><a href="#up">' . icon('up.png') . '</a> ';
echo ' <a href="' . gen_uri('index', '', RND) . '">В сообщество</a> | ';
echo '<a href="' . gen_uri('forum', '', RND) . '">Форум</a> | ';
echo '<a href="' . gen_uri('top', '', RND) . '">Топ тем</a> | ';
echo '<b>Поиск</b></div>';