Esempio n. 1
0
/**
 * Блокировка/разблокировка топика администратором сообщества.
 * 
 * @param int    $commune_id ID сообщества
 * @param int    $topic_id   ID топика
 * @param int    $topic_id   ID сообщения
 * @param string $action     действие ('block' или 'unblock')
 *
 * @return bool true - успех, false - провал
 */
function BlockedTopic($commune_id = 0, $topic_id = 0, $msg_id = 0, $action = 'unblock')
{
    global $session;
    session_start();
    $objResponse = new xajaxResponse();
    $commune_id = intval($commune_id);
    $topic_id = intval($topic_id);
    $msg_id = intval($msg_id);
    $uid = get_uid(false);
    if ($uid) {
        $status = commune::GetUserCommuneRel($commune_id, $uid);
    }
    if ($status['is_moderator'] == 1 || $status['is_admin'] == 1 || $status['is_author'] == 1 || hasPermissions('communes')) {
        commune::BlockedTopic($topic_id, $msg_id, $action);
        if ($action == 'block') {
            require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/users.php';
            $user = new users();
            $user->GetUserByUID($uid);
            $html = "<div class='br-moderation-options'>\n                <a href='/about/feedback/' class='lnk-feedback' style='color: #fff;'>Служба поддержки</a>\n                <div class='br-mo-status'><strong>Сообщение заблокировано!</strong></div>\n                <p class='br-mo-info'>" . ($user->login ? "Заблокировал: <a href='/users/{$user->login}' style='color: #FF6B3D'>{$user->uname} {$user->usurname} [{$user->login}]</a><br />" : '') . 'Дата блокировки: ' . dateFormat('d.m.Y', $blocked_time) . '.</p>
            </div>';
            $objResponse->assign("theme-reason-{$topic_id}", 'innerHTML', $html);
            $objResponse->assign("theme-button-{$topic_id}", 'innerHTML', '<a href="javascript:void(0)" onclick="if(warning()) xajax_BlockedTopic(' . $commune_id . ',' . $topic_id . ',' . $msg_id . ',\'unblock\')" class="lnk-red">Разблокировать</a>');
        } else {
            $objResponse->assign("theme-reason-{$topic_id}", 'innerHTML', '&nbsp;');
            $objResponse->assign("theme-button-{$topic_id}", 'innerHTML', '<a href="javascript:void(0)" onclick="if(warning()) xajax_BlockedTopic(' . $commune_id . ',' . $topic_id . ',' . $msg_id . ',\'block\')" class="lnk-red">Заблокировать</a>');
        }
    }
    return $objResponse;
}
Esempio n. 2
0
 /**
 * Голосование
 *
 * @param integer $commune_id ИД сообщества
 * @param integer $user_id    Ид пользователя
 * @param integer $rating       Голос
 * @return  Возвращает: -1, если голос ПРОТИВ был принят; 1, если голос ЗА был принят;
    				0, если голос не принят или ошибка.
  			Принят -- то есть, пошел в расчет, рейтинг изменился.
 */
 function TopicVote($topic_id, $user_id, $rating)
 {
     global $DB;
     $vB = (int) self::GetUserTopicVote($topic_id, $user_id);
     if ($vB == 0) {
         $rating = $rating > 0 ? 1 : -1;
     } elseif ($vB < 0 && $rating > 0) {
         $rating = 0;
     } elseif ($vB > 0 && $rating < 0) {
         $rating = 0;
     } elseif ($vB == $rating) {
         return 0;
     } elseif ($vB < 0 && $rating < 0) {
         return 0;
     } elseif ($vB > 0 && $rating > 0) {
         return 0;
     }
     $sql = "UPDATE commune_users_messages SET rating = ?i\n            WHERE message_id = ?i\n                AND user_id = ?i;";
     $res = $DB->query($sql, $rating, $topic_id, $user_id);
     if (!pg_affected_rows($res)) {
         $insert_table = self::getTableName('commune_users_messages', self::getCommuneIDByMessageID($topic_id));
         $sql = "INSERT INTO {$insert_table} (message_id, user_id, rating)\n                VALUES (?i, ?i, ?i)";
         $res = $DB->query($sql, $topic_id, $user_id, $rating);
     }
     $rate = self::GetTopicRating($topic_id);
     $actionRate = commune_carma::actionByRate($rate, commune_carma::getScale('post'));
     if ($actionRate == 'banned') {
         $themes = current(commune::getCommunePostByIds(array($topic_id)));
         if (!commune_carma::isImmunity($themes['user_id'], array(), $topic_id) && $themes['id'] > 0) {
             commune::BlockedTopic($themes['theme_id'], $topic_id, 'block');
         }
     }
     //    $vB = (int)self::GetUserTopicVote($topic_id, $user_id);
     $vA = (int) self::GetUserTopicVote($topic_id, $user_id);
     return ($vA > $vB) - ($vA < $vB);
 }