예제 #1
0
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;
}
예제 #2
0
//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';
예제 #3
0
 /**
  * Пользовательский иммунитет у команды, топики нельзя заблокировать.
  * 
  * @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];
 }
예제 #4
0
 /**
  * Удаление сообщение.
  *
  * @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;
 }