Размер файла: 6.96Kb
<?php
require_once ('../includes/start.php');
require_once ('../includes/functions.php');
require_once ('../includes/header.php');
include_once ('../themes/'.$config['themes'].'/verh.dat');
$minfind = 3; // Минимальное кол-во символов в слове для поиска
$maxfind = 25; // Максимальное кол-во символов в слове для поиска
$act = (isset($_GET['act'])) ? check($_GET['act']) : 'index';
$start = (isset($_GET['start'])) ? abs(intval($_GET['start'])) : 0;
show_title('Поиск по Дневнику');
switch ($act):
############################################################################################
## Вывод всех сообщений ##
############################################################################################
case "index":
echo'<div class="form">';
echo'<form action="search.php?act=search" method="get">';
echo'<input type="hidden" name="act" value="search">';
echo'<b>Запрос:</b><br><input type="text" name="find"><br><br>';
echo'<b>Искать:</b><br>';
echo'<input name="where" type="radio" value="1" checked="checked"> В темах<br>';
echo'<input name="where" type="radio" value="2"> В сообщениях<br><br>';
/* В свободное время доработаю
echo'<b>Тип запроса:</b><br>';
echo'<input name="type" type="radio" value="1" checked="checked"> Или<br>';
echo'<input name="type" type="radio" value="2"> И<br>';*/
echo'<br><input type="submit" value="Поиск"></form></div><br>';
break;
############################################################################################
## Поиск ##
############################################################################################
case 'search':
$find = (isset($_REQUEST['find'])) ? check($_REQUEST['find']) : '';
$type = (isset($_REQUEST['type'])) ? abs(intval($_REQUEST['type'])) : 1;
$where = (isset($_REQUEST['where'])) ? abs(intval($_REQUEST['where'])) : 1;
if (!is_utf($find)){
$find = win_to_utf($find);
}
if (utf_strlen($find) >= $minfind && utf_strlen($find) <= $maxfind) {
$config['newtitle'] = $find.' - Результаты поиска';
//-------------------------- Поиск в темах ----------------------------------//
if ($where == 1){
echo'Поиск запроса <b>"'.$find.'"</b> в темах<br>';
// Индексирование всех тем на сутки
if (@filemtime(DATADIR."datatmp/forumtopics.dat") < time() - 3600 * 24) {
$filetopics = glob(DATADIR.'dataforum/topic*.dat');
if (is_array($filetopics)) {
$arrtopics = array();
foreach ($filetopics as $topic){
$arrtopics[] = file_get_contents($topic);
}
file_put_contents(DATADIR."datatmp/forumtopics.dat", $arrtopics, LOCK_EX);
}
}
$filetopics = file(DATADIR."datatmp/forumtopics.dat");
// Поиск точного совпадения
$topics = array();
foreach ($filetopics as $cachetopics){
$cachedata = explode('|', $cachetopics);
if (utf_stristr($cachedata[3], $find)){
$topics[] = $cachetopics;
}
}
$total = count($topics);
if ($total > 0) {
echo'Найдено совпадений: <b>'.$total.'</b><br><br>';
if ($start < 0 || $start >= $total){$start = 0;}
if ($total < $start + $config['forumtem']){ $end = $total; }
else {$end = $start + $config['forumtem']; }
for ($i = $start; $i < $end; $i++){
$data = explode("|", $topics[$i]);
if ($data[5] == 1) {
} elseif($data[6] == 1) {
} else {
}
$totalpost = counter_string(DATADIR.'dataforum/'.$data[1].'-'.$data[0].'.dat');
echo'<div class="b">';
echo'<b><a href="topic.php?fid='.$data[1].'&id='.$data[0].'">'.$data[3].'</a></b> ('.$totalpost.')</div>';
if($totalpost>0){
$filepost = file(DATADIR.'dataforum/'.$data[1].'-'.$data[0].'.dat');
$datapost = explode("|", end($filepost));
$lastpage = ceil($totalpost/$config['forumpost']) * $config['forumpost'] - $config['forumpost'];
echo'<div>Страницы: ';
forum_navigation('topic.php?fid='.$datapost[1].'&id='.$datapost[0].'&', $config['forumpost'], $totalpost);
echo'Сообщение: '.nickname($datapost[2]).' ('.date_fixed($datapost[5]).')</div>';
} else {echo'Тема пустая! Сообщений еще нет!';}
}
page_strnavigation('search.php?act=search&find='.$find.'&type='.$type.'&where='.$where.'&', $config['forumtem'], $start, $total);
} else {
show_error('По вашему запросу ничего не найдено!');
}
}
//------------------------- Поиск в сообщениях ------------------------------//
if ($where == 2){
echo'Поиск запроса <b>"'.$find.'"</b> в сообщениях<br>';
// Индексирование всех сообщений на сутки
if (@filemtime(DATADIR."datatmp/forumposts.dat") < time() - 3600 * 24) {
$fileposts = glob(DATADIR.'dataforum/*-*.dat');
if (is_array($fileposts)) {
$arrposts = array();
foreach ($fileposts as $post){
$arrposts[] = file_get_contents($post);
}
file_put_contents(DATADIR."datatmp/forumposts.dat", $arrposts, LOCK_EX);
}
}
$fileposts = file(DATADIR."datatmp/forumposts.dat");
$posts = array();
foreach ($fileposts as $cacheposts){
$cachedata = explode('|', $cacheposts);
if (utf_stristr($cachedata[3], $find)){
$posts[] = $cacheposts;
}
}
$total = count($posts);
if ($total > 0) {
echo'Найдено совпадений: <b>'.$total.'</b><br><br>';
if ($start < 0 || $start >= $total){$start = 0;}
if ($total < $start + $config['forumpost']){ $end = $total; }
else {$end = $start + $config['forumpost']; }
for ($i = $start; $i < $end; $i++){
$data = explode("|", $posts[$i]);
$topic = search_string(DATADIR."dataforum/topic".$data[1].".dat", $data[0], 0);
if ($topic) {
echo'<div class="b"><b><a href="topic.php?fid='.$data[1].'&id='.$data[0].'">'.$topic[3].'</a></b></div>';
echo'<div>'.bb_code($data[3]).'<br>';
echo'Написал: <a href="/pages/anketa.php?uz='.$data[2].'">'.nickname($data[2]).'</a> '.user_online($data[2]).' ('.date_fixed($data[5]).')</div>';
}
}
page_strnavigation('search.php?act=search&find='.$find.'&type='.$type.'&where='.$where.'&', $config['forumpost'], $start, $total);
} else {
show_error('По вашему запросу ничего не найдено!');
}
}
} else {
show_error('Ошибка! Запрос должен содержать от 3 до 50 символов!');
}
echo' <a href="search.php">Вернуться</a><br>';
break;
default:
redirect("search.php");
endswitch;
echo'<a href="index.php">В Дневник</a><br>';
echo'<a href="/index.php"></a><br>';
include_once ('../themes/'.$config['themes'].'/niz.dat');
?>