Поиск в сообщениях пользователей

+15
1.18K
Как просил lezginka в соседнем посте, написал поиск для сообщений. Не знаю как с безопасностью, писал "на коленке" 10 мин. Добавил в свой демо сайт — rbdt.v-irshavi.com/ логин/пароль — user

Не особо утруждался делать красивый вывод результатов, каждый может заточить под себя.
Установка:

1. В файле /components/users/router.php в конце перед return $routes; вставим
  1. $routes[] = array(
  2. '_uri' => '/^users\/([0-9]+)\/searchmsg.html$/i',
  3. 'do' => 'searchmsg',
  4. 1 => 'id'
  5. );
2. В файле /components/users/frontend.php перед if ($do=='karma'){
  1. if ($do=='searchmsg'){
  2.  
  3. $word = preg_replace("/[^\w\x7F-\xFF\s]/", " ", $_POST["word"]);
  4. $user_id = $inUser->id;
  5. $usr = $model->getUserShort($id);
  6. if (!$usr) { cmsCore::error404(); }
  7. echo '<div class="con_heading" style="margin-bottom:25px">'.$_LANG['MY_MESS'].'</div>
  8. <form action="/users/'.$id.'/searchmsg.html" method="POST" name="poisk"><input type="text" name="word" size="20" value="">
  9. <a href="javascript:document.poisk.submit();">Поиск</a></form><br>
  10. <div class="usr_msgmenu_tabs">
  11. <a class="usr_msgmenu_link in_link" href="/users/'.$id.'/messages.html">'.$_LANG['INBOX'].'</a>
  12. <a class="usr_msgmenu_link out_link" href="/users/'.$id.'/messages-sent.html">'.$_LANG['SENT'].'</a>
  13. <a class="usr_msgmenu_link new_link" href="/users/'.$id.'/messages-new.html">'.$_LANG['WRITE'].'</a>
  14. </div> <h3>Результаты поиска:</h3>';
  15. if (strlen($word)>= 4){
  16. $sql = "SELECT *, b.id, b.nickname FROM cms_user_msg a LEFT
  17. JOIN cms_users b ON a.from_id = b.id WHERE a.to_id = $id AND UPPER(a.message) LIKE '%".strtoupper($word)."%'";
  18.  
  19. $result = $inDB->query($sql);
  20.  
  21. if ($inDB->num_rows($result)>0){
  22. while($m = $inDB->fetch_assoc($result)){
  23. if ($m[nickname] == '') { $m[nickname]='Служба рассылки';}
  24. echo '<br><b> Отправлено:'.$m[senddate].' Отправитель:'.$m[nickname].'</b><br>';
  25.  
  26. echo '<pre>'.$m[message].'</pre>';
  27. echo '<br><hr>';
  28. }
  29. } else { echo '<p>По Вашему запросу ничего не найдено!</p>'; }
  30. mysql_free_result($result); } else
  31. { echo '<p>Для поиска введите минимум 4 символа!</p>'; }
  32. }
Как вы заметили, в этом тексте и есть вывод найденых сообщений, тут правим все под себя. Мне просто лень было все выносить в шаблон.

3. Ну и добавляем форму поиска в шаблон, в файле com_users_messages.tpl в нужном месте, а у меня после <div class="con_heading" style="margin-bottom:25px">{$LANG.MY_MESS}</div>
  1. <form action="/users/{$id}/searchmsg.html" method="POST" name="poisk"><input type="text" name="word" size="20" value="">
  2. <a href="javascript:document.poisk.submit();">Поиск</a></form>

Вроде работает. Может кто дополнит, если надо. Если кто то может угостить пивом — мой кошелек R209550522002 Спасибо!
Нет комментариев. Ваш будет первым!

Еще от автора

Обновление компонента "Replacement замена в контенте" + бонус
Как и обещал, поработал над обновлением компонента Replacement.
Replacement - замена в контенте. Компонент для ICMS 2.x
Компонент на основе фильтра "Красивые заметки в тексте" для первой версии. По просьбам пользователей сделал подобное для второй ветки.
Фильтр ICMS Note - Красивые заметки в тексте
Опять же по просьбе Nomin сделал фильтр для создания красивых заметок в тексте.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.