Example #1
0
 /**
  * Блоги. Утверждение/удаление записи
  * 
  * @param  string $stream_id идентификатор потока
  * @param  int $user_id идентификатор модератора
  * @param  int $from_id идентификатор пользователя
  * @param  int $rec_id идентификатор записи
  * @param  int $rec_type тип записи 
  * @param  int $action действие: 1 - утверждено, 2 - удалено
  * @param  string $is_sent было ли отправлено уведомление
  * @param  string $reason причина удаления
  * @return bool true - успех, false - провал
  */
 function resolveBlogs($stream_id = '', $user_id = 0, $from_id = 0, $rec_id = 0, $rec_type = 0, $action = 1, $is_sent = '', $reason = '')
 {
     $bRet = false;
     $sQuery = 'UPDATE moderation SET moder_num = ?i, status = ?i WHERE rec_id = ?i AND rec_type = ?i AND stream_id = ? RETURNING rec_id';
     $sRecId = $GLOBALS['DB']->val($sQuery, $this->nResolveCnt, $action, $rec_id, self::MODER_BLOGS, $stream_id);
     if ($sRecId) {
         $bRet = true;
         $aData = array('moderator_status' => $user_id);
         if ($rec_type == 1) {
             // топик
             require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/blogs.php';
             require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/admin_log.php';
             $blogs = new blogs();
             $sQuery = 'SELECT bm.title, bm.thread_id AS id, u.uname, u.usurname, bb.blocked_time, bm.fromuser_id 
                 FROM blogs_msgs bm 
                 INNER JOIN users u ON u.uid = bm.fromuser_id 
                 LEFT JOIN blogs_blocked bb ON bb.thread_id = bm.thread_id 
                 WHERE bm.id = ?i';
             $aThread = $GLOBALS['DB']->row($sQuery, $rec_id);
             $sObjName = $aThread['title'] ? $aThread['title'] : '<без темы>';
             $sObjLink = '/blogs/view.php?tr=' . $aThread['id'];
             if ($action == 1 && $aThread['blocked_time']) {
                 $blogs->UnBlocked($aThread['id']);
                 // пишем лог админских действий
                 admin_log::addLog(admin_log::OBJ_CODE_BLOG, 8, $aThread['fromuser_id'], $aThread['id'], $sObjName, $sObjLink, 0, '', 0, '');
             } elseif ($action == 2 && !$aThread['blocked_time']) {
                 $sBlockId = $blogs->Blocked($aThread['id'], $reason, 0, $_SESSION['uid']);
                 // пишем лог админских действий
                 admin_log::addLog(admin_log::OBJ_CODE_BLOG, 7, $aThread['fromuser_id'], $aThread['id'], $sObjName, $sObjLink, 0, '', 0, $reason, $sBlockId);
             }
         } else {
             if ($action == 1 && $rec_type == '2' && $is_sent == 'f') {
                 $aData['is_sent'] = true;
                 // устанавливаем флаг отправки
             }
             $sDeluserId = $GLOBALS['DB']->val('SELECT deluser_id FROM blogs_msgs WHERE id = ?i', $rec_id);
             if ($action == 1 && $sDeluserId && $sDeluserId != $from_id) {
                 $aData['deleted'] = null;
                 $aData['deluser_id'] = null;
                 $aData['deleted_reason'] = '';
             } elseif ($action == 2 && $sDeluserId != $from_id) {
                 $aData['deleted'] = date('Y-m-d H:i:s');
                 $aData['deluser_id'] = $user_id;
                 $aData['deleted_reason'] = $reason;
             }
         }
         $GLOBALS['DB']->update('blogs_msgs', $aData, 'id = ?i', $rec_id);
     }
     return $bRet;
 }
Example #2
0
/**
 * Блокирование/разблокирование треда в блоге
 *
 * @param integer $thread_id     id треда
 * @param string  $reason        причина
 * @param int     $reason_id     ID причины, если она выбрана из списка (таблица admin_reasons, где act_id = 7)
 * @param string  $reason_name   Краткое описание причины действия (из селекта) для лога админских действий
 */
function BlockedThread($thread_id, $reason, $reason_id = null, $reason_name = '')
{
    global $DB;
    session_start();
    $objResponse = new xajaxResponse();
    if (hasPermissions('blogs')) {
        require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/blogs.php';
        $thread_id = intval($thread_id);
        if (is_string($reason) && $reason != '') {
            if (hasPermissions('blogs')) {
                $count = $DB->val("SELECT COUNT(*) FROM blogs_msgs WHERE thread_id = ? AND reply_to IS NULL", $thread_id);
                if ($count) {
                    $blogs = new blogs();
                    $thread = $blogs->GetThreadMsgInfo($thread_id, $error, $perm);
                    // лог админских действий
                    $sObjName = $thread['title'] ? $thread['title'] : '<без темы>';
                    $sObjLink = '/blogs/view.php?tr=' . $thread_id;
                    $reason_id = $reason_id ? $reason_id : null;
                    $reason = str_replace('%USERNAME%', $thread['uname'] . ' ' . $thread['usurname'], $reason);
                    $reason = change_q($reason, FALSE, 0, TRUE);
                    if ($thread['blocked_time']) {
                        $blogs->UnBlocked($thread_id);
                        // пишем лог админских действий
                        admin_log::addLog(admin_log::OBJ_CODE_BLOG, 8, $thread['fromuser_id'], $thread_id, $sObjName, $sObjLink, 0, '', $reason_id, $reason);
                        $objResponse->assign("thread-reason-{$thread_id}", 'innerHTML', '&nbsp;');
                        $objResponse->assign("thread-reason-{$thread_id}", 'style.display', 'none');
                        $objResponse->assign("thread-button-{$thread_id}", 'innerHTML', "<a style='color: Red; font-size:9px;' href='javascript: void(0);' onclick='banned.blockedThread({$thread_id}); return false;'>Блокировать</a>");
                    } else {
                        $sBlockId = $blogs->Blocked($thread_id, $reason, $reason_id, $_SESSION['uid'], false);
                        $thread = $blogs->GetThreadMsgInfo($thread_id, $error, $perm);
                        // пишем лог админских действий
                        admin_log::addLog(admin_log::OBJ_CODE_BLOG, 7, $thread['fromuser_id'], $thread_id, $sObjName, $sObjLink, 0, '', $reason_id, $reason, $sBlockId);
                        $reason = reformat($thread['reason'], 24, 0, 0, 1, 24);
                        $html = BlockedThreadHTML($reason, $thread['blocked_time'], $_SESSION['login'], "{$_SESSION['name']} {$_SESSION['surname']}");
                        $objResponse->assign("thread-reason-{$thread_id}", 'innerHTML', $html);
                        $objResponse->assign("thread-reason-{$thread_id}", 'style.display', 'block');
                        $objResponse->assign("thread-button-{$thread_id}", 'innerHTML', "<a style='color: Red; font-size:9px;' href='javascript: void(0);' onclick='banned.unblockedThread({$thread_id}); return false;'>Разблокировать</a>");
                    }
                } else {
                    $objResponse->alert('Несуществующий топик');
                }
            }
        }
    }
    return $objResponse;
}