Недавно мне сделали такую кнопку, хочу поделится с общественность деталями.
таблица cms_reports
id int(11)
post_id int(11)
user_id int(11)
component\forum\ajax\report.php
<
?php include(PATH.'/core/cms.php'); $inCore = cmsCore::getInstance(); $inCore->loadClass('config'); //add config $inCore->loadClass('db'); //add bd $inCore->loadClass('user'); //add user $inCore = cmsCore::getInstance(); $inDB = cmsDatabase::getInstance(); $inUser = cmsUser::getInstance(); $inUser->update(); $cfg = $inCore->loadComponentConfig('forum'); $post_id = $inCore->request('id', 'int', ''); //кому и откого ID $admin_id = '1'; $error = false; if($post_id) { $result = $inDB->query("SELECT * FROM cms_forum_posts WHERE id = '$post_id' LIMIT 1"); if ($inDB->num_rows($result)){ $post = $inDB->fetch_assoc($result); $sql = "SELECT * FROM cms_reports WHERE post_id = '{$post['id']}' AND user_id = '{$inUser->id}' LIMIT 1"; $result = $inDB->query($sql); if (!$inDB->num_rows($result)){ $inDB->query("INSERT INTO cms_reports (post_id, user_id) VALUES ('{$post['id']}', '{$inUser->id}')"); $sql = "SELECT MIN( id ) AS min FROM cms_forum_posts WHERE thread_id = '{$post['thread_id']}'"; $result = $inDB->query($sql); if ($inDB->num_rows($result)){ $min_post = $inDB->fetch_assoc($result); $sql = "SELECT * FROM cms_forum_posts WHERE thread_id = '{$post['thread_id']}' AND id <= {$post['id']}"; $result = $inDB->query($sql); if ($inDB->num_rows($result)){ $post_count = $inDB->num_rows($result); if($page_post != 0) { $page = $page_post; } else { $page = 1;} $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>'; cmsUser::sendMessage($inUser->id, $admin_id, $message); } } } else { $error = true; $error_text = 'Ваша жалоба принята ранее!'; } } else { $error = true; $error_text = 'Ошибка!'; } } $data['error'] = $error; } ?>
component\forum\js\common.js
добавить
function reportPost(id){ $.post('/components/forum/ajax/report.php', {id: id}, function(result){ if(result.error == false){ alert('Подана жалоба'); } else { alert('Ваша жалоба принята ранее'); } }, 'json'); }
после
echo '<td width="15"><img src="/components/forum/images/toolbar/post-quote.gif"/></td> <td><a href="javascript:addQuoteText(\''.$p['author'].'\')" title="'.$_LANG['ADD_SELECTED_QUOTE'].'">'.$_LANG['ADD_QUOTE_TEXT'].'</a></td>'; echo '<td width="15"><img style="margin-left:5px" src="/components/forum/images/toolbar/post-reply.gif"/></td>'; echo '<td><a href="/forum/thread'.$t['id'].'-quote'.$p['id'].'.html" title="'.$_LANG['REPLY_FULL_QUOTE'].'">'.$_LANG['REPLY'].'</a></td>'; //добавляем кнопку пожаловаться echo '<td width="15"><img src="/components/forum/images/toolbar/pinthread.gif"/></td><td><a href="javascript:reportPost(\''.$p['id'].'\')" title="Нажмите если считаете что это сообщение спам">Пожаловаться на спам</a></td>';