Пример #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 причина удаления
  */
 function resolveSbrReqv($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_SBR_REQV, $stream_id);
     if ($sRecId) {
         $data = $GLOBALS['DB']->row("\n                SELECT \n                    sr.*,\n                    COALESCE(srb.src_id::boolean, FALSE) AS is_blocked \n                FROM sbr_reqv AS sr\n                LEFT JOIN sbr_reqv_blocked AS srb ON srb.src_id = sr.user_id\n                WHERE sr.user_id = ?i\n                LIMIT 1\n            ", $rec_id);
         if ($data) {
             require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/Finance/FinanceSmail.php';
             $finSmail = new FinanceSmail();
             $bRet = true;
             if ($action == 1 && $data['is_blocked'] == 't') {
                 //разблокируем если было блокированно
                 $GLOBALS['DB']->query("\n                        DELETE FROM sbr_reqv_blocked \n                        WHERE src_id = ?i\n                    ", $rec_id);
                 //Обновляем статус на "Проверенные данные"
                 if ($GLOBALS['DB']->update('sbr_reqv', array('validate_status' => 2), 'user_id = ?i', $rec_id)) {
                     $finSmail->financeUnBlocked($rec_id);
                 }
             } elseif ($action == 2 && $data['is_blocked'] != 't') {
                 //блокируем
                 $sBlockId = $GLOBALS['DB']->val("\n                        INSERT INTO sbr_reqv_blocked (\n                            src_id, \n                            admin, \n                            reason, \n                            reason_id, \n                            blocked_time) \n                        VALUES(?i, ?i, ?, ?i, NOW()) RETURNING id\n                     ", $rec_id, $user_id, $reason, 0);
                 //Обновляем статус на "Отклоненные данные"
                 if ($GLOBALS['DB']->update('sbr_reqv', array('validate_status' => -1), 'user_id = ?i', $rec_id)) {
                     $finSmail->financeBlocked($rec_id, $reason);
                 }
             }
         }
     }
     return $bRet;
 }
Пример #2
0
/**
 * Удаление сущности
 * 
 * @param  string $sId составной уникальный ID сущности
 * @param  int $sUid UID сздателя сущности
 * @param  string $sReason причина удаления
 * @param  string $sDrawFunc имя функции для выполнения после сохранения
 * @param  string $sParams JSON кодированные дополнительные параметры
 * @return xajaxResponse 
 */
function setDeleted($sId = '', $sUid = 0, $sReason = '', $sDrawFunc = '', $sParams = '')
{
    session_start();
    $objResponse = new xajaxResponse();
    list($rec_content_id, $rec_id, $rec_type) = explode('_', $sId);
    $aParams = _jsonArray($sParams);
    if ($sDrawFunc == 'stream0' || $sDrawFunc == 'stream1' || $sDrawFunc == 'stream2') {
        // удаление в потоках
        resolveContent($aParams['content_id'], $aParams['stream_id'], $sId, 2, $sUid, $aParams['content_cnt'], $aParams['status'], $aParams['is_sent'], $sReason, $objResponse);
    } else {
        require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/user_content.php';
        require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/permissions.php';
        $aPermissions = permissions::getUserPermissions($_SESSION['uid']);
        $user_content = new user_content($_SESSION['uid'], $aPermissions);
        $bSend = false;
        if ($user_content->hasContentPermissions($rec_content_id)) {
            if (strpos($sReason, '%USERNAME%') !== false && $sUid) {
                $user = new users();
                $user->GetUserByUID($sUid);
                $sReason = str_replace('%USERNAME%', $user->uname . ' ' . $user->usurname, $sReason);
            }
            switch ($rec_content_id) {
                case user_content::MODER_MSSAGES:
                    switch ($sDrawFunc) {
                        // дейсвие из переписки между юзерами
                        case 'updateLetter':
                            updateLetter($rec_id, $sUid, 2, $sReason, $objResponse);
                            break;
                        case 'delLetter':
                            // в потоке - важно чтобы поток не был потерян либо перехвачен
                        // в потоке - важно чтобы поток не был потерян либо перехвачен
                        default:
                            delLetter($aParams['stream_id'], $sUid, $rec_id . '_' . $rec_type, $sReason, $objResponse);
                            break;
                    }
                    break;
                case user_content::MODER_BLOGS:
                    require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/blogs.php';
                    if ($rec_type == 1) {
                        // post
                        blogs::MarkDeleteBlog($_SESSION['uid'], $rec_id, $group, $base, $thread_id, $page, $msg, 0, $sReason);
                    } else {
                        // comment
                        blogs::MarkDeleteMsg($_SESSION['uid'], $rec_id, getRemoteIP(), $err, 0, $sReason);
                    }
                    $bSend = true;
                    break;
                case user_content::MODER_TSERVICES:
                    require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/tservices/tservices.php';
                    $tserviceObj = new tservices();
                    if ($tserviceObj->Blocked($rec_id, $_SESSION['uid'], $sReason)) {
                        $objResponse->script("\$('ov-notice22-r').toggleClass('b-shadow_hide');");
                        $objResponse->script("\$\$('#__tservices_blocked,#__tservices_unblocked').toggleClass('b-button_hide');");
                    }
                    break;
                case user_content::MODER_SBR_REQV:
                    require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/sbr_meta.php';
                    require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/Finance/FinanceSmail.php';
                    if (sbr_meta::reqvBlocked($rec_id, $_SESSION['uid'], $sReason, 0, $_SESSION['login'])) {
                        $finSmail = new FinanceSmail();
                        $finSmail->financeBlocked($rec_id, $sReason);
                        $objResponse->script("\$('ov-notice22-r').toggleClass('b-shadow_hide');");
                        $objResponse->script("\$\$('#__finance_blocked,#__finance_unblocked').toggleClass('b-button_hide');");
                    }
                    break;
                default:
                    break;
            }
            if ($bSend) {
                $user_content->sendNotification($_SESSION['uid'], $sUid, $rec_content_id, $rec_id, $rec_type, 2, $sReason);
                $objResponse->script('window.location.reload(true)');
            }
        }
        return $objResponse;
    }
    $objResponse->script("delete banned.buffer['delreason_{$sId}'];");
    $objResponse->script("parent.\$\$(\"div[id^='ov-notice']\").setStyle('display', 'none');");
    $objResponse->script("parent.\$('ov-notice22-r').toggleClass('b-shadow_hide');");
    return $objResponse;
}