Кнопка на форуме "Пожаловатся на спам"

пример реализации

#1 26 марта 2013 в 09:13
Добрый день.

Недавно мне сделали такую кнопку, хочу поделится с общественность деталями.


таблица cms_reports
id int(11)
post_id int(11)
user_id int(11)

component\forum\ajax\report.php
<
  1. ?php
  2. if($_SERVER['HTTP_X_REQUESTED_WITH'] != 'XMLHttpRequest') { die(); }
  3. define("VALID_CMS", 1);
  4. define('PATH', $_SERVER['DOCUMENT_ROOT']);
  5. define('HOST', 'http://' . $_SERVER['HTTP_HOST']);
  6. include(PATH.'/core/cms.php');
  7. $inCore = cmsCore::getInstance();
  8. $inCore->loadClass('config'); //add config
  9. $inCore->loadClass('db'); //add bd
  10. $inCore->loadClass('user'); //add user
  11. $inCore = cmsCore::getInstance();
  12. $inDB = cmsDatabase::getInstance();
  13. $inUser = cmsUser::getInstance();
  14. $inUser->update();
  15. $cfg = $inCore->loadComponentConfig('forum');
  16. $post_id = $inCore->request('id', 'int', '');
  17. if(!$post_id) { die(); }
  18. if(!$inUser->id) { die(); }
  19. //кому и откого ID
  20. $admin_id = '1';
  21. $error = false;
  22. if($post_id) {
  23. $result = $inDB->query("SELECT * FROM cms_forum_posts WHERE id = '$post_id' LIMIT 1");
  24. if ($inDB->num_rows($result)){
  25. $post = $inDB->fetch_assoc($result);
  26. $sql = "SELECT * FROM cms_reports WHERE post_id = '{$post['id']}' AND user_id = '{$inUser->id}' LIMIT 1";
  27. $result = $inDB->query($sql);
  28. if (!$inDB->num_rows($result)){
  29. $inDB->query("INSERT INTO cms_reports (post_id, user_id) VALUES ('{$post['id']}', '{$inUser->id}')");
  30. $sql = "SELECT MIN( id ) AS min FROM cms_forum_posts WHERE thread_id = '{$post['thread_id']}'";
  31. $result = $inDB->query($sql);
  32. if ($inDB->num_rows($result)){
  33. $min_post = $inDB->fetch_assoc($result);
  34. $sql = "SELECT * FROM cms_forum_posts WHERE thread_id = '{$post['thread_id']}' AND id <= {$post['id']}";
  35. $result = $inDB->query($sql);
  36. if ($inDB->num_rows($result)){
  37. $post_count = $inDB->num_rows($result);
  38. $page_post = ceil($post_count / $cfg['pp_thread']);
  39. if($page_post != 0) { $page = $page_post; } else { $page = 1;}
  40. $message = 'Пользователь <a href="/users/'.$inUser->login.'">'.$inUser->nickname.'</a> пожаловался на сообщение #'.$post['id'].', <a target="_blank" href="/forum/thread'.$post['thread_id'].'-'.$page.'.html#'.$post['id'].'" >перейти к сообщению</a>';
  41. cmsUser::sendMessage($inUser->id, $admin_id, $message); }
  42. }
  43. } else {
  44. $error = true;
  45. $error_text = 'Ваша жалоба принята ранее!'; }
  46. } else {
  47. $error = true;
  48. $error_text = 'Ошибка!'; }
  49. }
  50. $data['error'] = $error;
  51. echo json_encode($data);
  52. exit();
  53. }
  54. ?>

component\forum\js\common.js
добавить
  1. function reportPost(id){
  2. $.post('/components/forum/ajax/report.php', {id: id}, function(result){
  3. if(result.error == false){
  4. alert('Подана жалоба');
  5. } else {
  6. alert('Ваша жалоба принята ранее');
  7. }
  8. }, 'json');
  9. }
component\forum\frontend.php
после
  1. echo '<td width="15"><img src="/components/forum/images/toolbar/post-quote.gif"/></td>
  2. <td><a href="javascript:addQuoteText(\''.$p['author'].'\')" title="'.$_LANG['ADD_SELECTED_QUOTE'].'">'.$_LANG['ADD_QUOTE_TEXT'].'</a></td>';
  3. echo '<td width="15"><img style="margin-left:5px" src="/components/forum/images/toolbar/post-reply.gif"/></td>';
  4. echo '<td><a href="/forum/thread'.$t['id'].'-quote'.$p['id'].'.html" title="'.$_LANG['REPLY_FULL_QUOTE'].'">'.$_LANG['REPLY'].'</a></td>';
  5. //добавляем кнопку пожаловаться
  6. echo '<td width="15"><img src="/components/forum/images/toolbar/pinthread.gif"/></td><td><a href="javascript:reportPost(\''.$p['id'].'\')" title="Нажмите если считаете что это сообщение спам">Пожаловаться на спам</a></td>';
#2 26 марта 2013 в 10:38
Scarnru, супер!!! Спасибо огромное!!! =)
#3 27 марта 2013 в 17:57

таблица cms_reports
id int(11)
post_id int(11)
user_id int(11)

Scarnru

для какой версии?
#4 30 марта 2013 в 12:31
1.9
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.