function BanMemberForTopic($backto, $message_id, $member_id, $user_id, $mod, $page, $om, $site, $is_fav) { $objResponse = new xajaxResponse(); if (get_uid(false) != $user_id) { return $objResponse; } if (get_uid(false)) { $comm = commune::getCommuneIDByMessageID($message_id); $status = commune::GetUserCommuneRel($comm, get_uid(false)); } if ($status['is_moderator'] == 1 || $status['is_admin'] == 1 || $status['is_author'] == 1 || hasPermissions('communes')) { if (($r = commune::BanMemberForComment($member_id)) || true) { if ($site == 'Topic') { $top = commune::GetTopMessageByAnyOther($message_id, NULL, $mod, TRUE); $top['is_viewed'] = 1; } else { $top = commune::GetTopMessageByAnyOther($message_id, $user_id, $mod, TRUE); $site = 'xajaxCommune'; } //print(__commPrntTopic($top, $user_id, $mod, $om, $page, $site, $is_fav)); $objResponse->assign($backto, 'innerHTML', __commPrntTopic($top, $user_id, $mod, $om, $page, $site, $is_fav, null, true)); $comm = commune::GetCommuneByMember($member_id); $sm = new smail(); if ($r) { $comm = commune::GetCommuneByMember($member_id); $sm->CommuneMemberAction($comm['member_user_id'], 'BanMember', $comm); } else { $comm = commune::GetCommuneByMember($member_id); $sm->CommuneMemberAction($comm['member_user_id'], 'WarnMember', $comm); } } } return $objResponse; }
//if (count($_POST) == 0) die('gracias'); //echo '<pre>'; print_r($_POST); echo '</pre>'; exit; $g_page_id = '0|11'; // !!! $rpath = '../'; $grey_commune = 1; $stretch_page = true; $showMainDiv = true; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/links.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/commune.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/smail.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/users.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/stdf.php'; session_start(); $uid = get_uid(); $communeid = isset($_GET['communeid']) ? $_GET['communeid'] : commune::getCommuneIDByMessageID(__paramInit('int', 'post')); if ($communeid == commune::COMMUNE_BLOGS_ID) { $grey_commune = 0; $grey_blogs = 1; } $is_site_admin = hasPermissions('communes'); $header = '../header.php'; // Формируем JS внизу страницы define('JS_BOTTOM', true); $css_file = array('/css/block/b-search/b-search.css', '/css/block/b-spinner/b-spinner.css', '/css/block/b-voting/b-voting.css', '/css/block/b-button/_m/b-button_m.css', '/css/nav.css', '/css/block/b-free-share/b-free-share.css', '/css/block/b-menu/_vertical/b-menu_vertical.css', 'commune.css'); $js_file = array('punycode.min.js', 'mAttach2.js', 'polls.js', 'mAttach.js', 'commune.js', 'drafts.js', 'attachedfiles.js', 'highlight.min.js', 'highlight.init.js', 'mooeditable.commune/MooEditable.ru-RU.js', 'mooeditable.commune/rangy-core.js', 'mooeditable.commune/MooEditable.js', 'mooeditable.commune/MooEditable.Pagebreak.js', 'mooeditable.commune/MooEditable.UI.MenuList.js', 'mooeditable.commune/MooEditable.Extras.js', 'mooeditable.commune/init.js', 'tawl_bem.js', 'polls_new.js', '/css/block/b-filter/b-filter.js', '/css/block/b-shadow/b-shadow.js', 'comments.all.js'); //, 'ckeditor/ckeditor.js' ); $content = 'content.php'; $footer = '../footer.html'; if ($is_site_admin) { $js_file[] = 'banned.js';
/** * Пользовательский иммунитет у команды, топики нельзя заблокировать. * * @staticvar array $is_immunity * * @param int $uid Ид Пользователя * @param array $data Данные пользователя если имеются * @param int $msg_id ID сообщения * * @return bool */ public static function isImmunity($uid, $data = array(), $msg_id = null) { static $is_immunity; if (isset($is_immunity[$uid])) { return $is_immunity[$uid]; } $commune_id = commune::getCommuneIDByMessageID($msg_id); $status = commune::GetUserCommuneRel($commune_id, $uid); if (empty($data)) { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/users.php'; $user = new users(); $user->GetUserByUID($uid); $is_immunity[$uid] = $user->is_team == 't' || strtolower($user->login) == 'admin' || $status['is_moderator'] == 1 || $status['is_admin'] == 1 || $status['is_author'] == 1; } else { $is_immunity[$uid] = $data['is_team'] == 't' || strtolower($data['login']) == 'admin' || $status['is_moderator'] == 1 || $status['is_admin'] == 1 || $status['is_author'] == 1; } return $is_immunity[$uid]; }
/** * Удаление сообщение. * * @param integer $message_id Ид сообщения * @param integer $user_id Кто удаляет * @param integer $user_mod Права удаляющего * @param string &$deleted_time Время удаления комментария * @return integer 1 если удаление прошл успешно, иначе 0 */ function DeleteMessage($message_id, $user_id, $user_mod = 0, &$deleted_time) { global $DB; $message = commune::GetTopMessageByAnyOther($message_id, $_SESSION['uid'], $user_mod); if (get_uid(false)) { $comm = commune::getCommuneIDByMessageID($message_id); $status = commune::GetUserCommuneRel($comm, get_uid(false)); } if ($message['user_id'] != get_uid(false) && !hasPermissions('communes') && !($status['is_moderator'] == 1 || $status['is_admin'] == 1 || $status['is_author'] == 1)) { return 0; // Чужой топик удалять нельзя если ты не админ сайта } if (!$message['parent_id']) { $uid = get_uid(false); $deleted_time = date('Y-m-d H:i:s'); //modified_id обновляю исключительно ради получения имени удалившего модератора, т к в запросе итак предостаточно джоинов. Если спама об редактировании не начнет приходить, то думаю можно оставить $sql = "UPDATE commune_messages SET deleted_id = {$uid}, modified_id = {$uid}, deleted_time = '{$deleted_time}' WHERE id = ?i RETURNING theme_id, parent_id"; if ($res = $DB->query($sql, $message_id)) { if (pg_affected_rows($res)) { // Пересчитать позиции list($theme_id, $parent_id) = pg_fetch_row($res); if (!$parent_id && $theme_id) { $sql = "SELECT re_pos_commune_themes(?i, (SELECT pos FROM commune_themes WHERE id = ?i), NULL);"; $DB->query($sql, $message['commune_id'], $theme_id); } // уведомление об удалении, если удаляет админ if ($message['user_id'] != $user_id) { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/messages.php'; $commune = self::GetCommune($message['commune_id'], get_uid(0)); $member = self::getMember($message['commune_id'], get_uid(0), self::MEMBER_ADMIN | self::MEMBER_MODERATOR); if ($commune['author_uid'] == get_uid(0)) { $deleter = 'admin'; } elseif ($member) { $deleter = 'moder'; } else { $deleter = 'site-moder'; } messages::SendDeletedCommuneTheme($message, $deleter); } require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/user_content.php'; $DB->query('DELETE FROM moderation WHERE rec_id = ?i AND rec_type = ?i', $message_id, user_content::MODER_COMMUNITY); return 1; } else { } // Не удалилось. Значит будем делать UPDATE. } else { return 0; } } $sql = "UPDATE commune_messages\n SET deleted_time = LOCALTIMESTAMP,\n deleted_id = ?i,\n modified_id = ?i\n WHERE id = ?i RETURNING *"; if ($res = $DB->query($sql, $user_id, $user_id, $message['id'])) { return -1; } return 0; }