Пример #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 resolveProjects($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_PROJECTS, $stream_id);
     if ($sRecId) {
         $bRet = true;
         $GLOBALS['DB']->update('projects', array('moderator_status' => $user_id), 'id = ?i', $rec_id);
         require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/projects.php';
         require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/admin_log.php';
         $projects = new projects();
         $project = $projects->GetPrjCust($rec_id);
         $sObjLink = getFriendlyURL('project', $rec_id);
         // лог админских действий
         if ($action == 1 && $project['blocked_time']) {
             // разблокируем
             $projects->UnBlocked($rec_id);
             admin_log::addLog(admin_log::OBJ_CODE_PROJ, 10, $from_id, $rec_id, $project['name'], $sObjLink, 0, '', 0, '');
         } elseif ($action == 2 && !$project['blocked_time']) {
             // блокируем
             $sBlockId = $projects->Blocked($rec_id, $reason, 0, $user_id, true);
             // Удаляем черновики жалобы
             require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/drafts.php';
             drafts::DeleteDraftByPrjID($rec_id);
             $projects->DeleteComplains($rec_id);
             // пишем лог админских действий
             admin_log::addLog(admin_log::OBJ_CODE_PROJ, 9, $from_id, $rec_id, $project['name'], $sObjLink, 0, '', 0, $reason, $sBlockId);
         }
     }
     return $bRet;
 }
Пример #2
0
/**
 * Изменение блокировки проекта.
 * 
 * @param int    $project_id ID проекта
 * @param int    $act_id     ID нового действия (admin_actions)
 * @param int    $src_id     ID исходного действия (projects_blocked)
 * @param string $reason     причина
 * @param int    $reason_id  ID причины, если она выбрана из списка (таблица admin_reasons, где act_id = 9)
 *
 * @return object xajaxResponse
 */
function updatePrjBlock($project_id, $act_id, $src_id, $reason = '', $reason_id = null)
{
    session_start();
    $objResponse = new xajaxResponse();
    if (hasPermissions('projects')) {
        require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/projects.php';
        $projects = new projects();
        $project = $projects->GetPrjCust($project_id);
        $sObjLink = '/projects/?pid=' . $project_id;
        // лог админских действий
        $reason_id = $reason_id ? $reason_id : null;
        $reason = str_replace('%USERNAME%', $project['uname'] . ' ' . $project['usurname'], $reason);
        $reason = change_q($reason, false, 0, true);
        if ($act_id == 10 && $src_id) {
            // разблокируем проект
            $projects->UnBlocked($project_id);
            // пишем лог админских действий
            admin_log::addLog(admin_log::OBJ_CODE_PROJ, 10, $project['user_id'], $project_id, $project['name'], $sObjLink, 0, '', $reason_id, $reason);
            // так как появилось новое действие в логе?
            $objResponse->script('window.location="/siteadmin/admin_log/?site=proj";');
        } elseif ($act_id == 9 && $src_id) {
            // редактируем текущую блокировку в projects_blocked, admin_log обновится триггером
            admin_log::updateProjBlock($src_id, $reason, $reason_id);
            $reason = reformat($project['blocked_reason'], 24, 0, 0, 1, 24);
            $objResponse->script('window.location.reload(true)');
        } elseif ($act_id == 9 && !$src_id) {
            // блокируем проект
            $sBlockId = $projects->Blocked($project_id, $reason, $reason_id, $_SESSION['uid']);
            $project = $projects->GetPrjCust($project_id);
            // пишем лог админских действий
            admin_log::addLog(admin_log::OBJ_CODE_PROJ, 9, $project['user_id'], $project_id, $project['name'], $sObjLink, 0, '', $reason_id, $reason, $sBlockId);
            // так как появилось новое действие в логе?
            $objResponse->script('window.location="/siteadmin/admin_log/?site=proj";');
        }
    }
    return $objResponse;
}
Пример #3
0
/**
 * Блокирование/разблокирование проекта
 * 
 * @param integer $project_id    id проекта
 * @param string  $reason        причина
 * @param int     $reason_id     ID причины, если она выбрана из списка (таблица admin_reasons, где act_id = 9)
 * @param string  $reason_name   Краткое описание причины действия (из селекта) для лога админских действий
 */
function BlockedProject($project_id, $reason, $reason_id = null, $reason_name = '')
{
    global $DB;
    $objResponse = new xajaxResponse();
    $project_id = intval($project_id);
    session_start();
    if (hasPermissions('projects')) {
        require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/projects.php';
        if (is_string($reason) && $reason != '') {
            if (hasPermissions('projects')) {
                $count = $DB->val("SELECT COUNT(*) FROM projects WHERE id = ?", $project_id);
                if ($count) {
                    $projects = new projects();
                    $project = $projects->GetPrjCust($project_id);
                    $sObjLink = getFriendlyURL('project', $project_id);
                    // лог админских действий
                    $reason_id = $reason_id ? $reason_id : null;
                    $reason = str_replace('%USERNAME%', $project['uname'] . ' ' . $project['usurname'], $reason);
                    $reason = change_q($reason, FALSE, 0, TRUE);
                    $mem = new memBuff();
                    $mem->delete("prjMsgsCnt{$project['user_id']}");
                    if ($project['blocked_time']) {
                        $projects->UnBlocked($project_id);
                        // пишем лог админских действий
                        admin_log::addLog(admin_log::OBJ_CODE_PROJ, 10, $project['user_id'], $project_id, $project['name'], $sObjLink, 0, '', $reason_id, $reason);
                        $objResponse->assign("project-reason-{$project_id}", 'innerHTML', ' ');
                        $objResponse->assign("project-reason-{$project_id}", 'style.display', 'none');
                        $objResponse->assign("project-button-{$project_id}", 'innerHTML', "<a class='b-post__link b-post__link_dot_c10601' href='javascript: void(0);' onclick='banned.blockedProject({$project_id}); return false;'>Заблокировать</a>");
                    } else {
                        $projects->DeleteComplains($project_id);
                        $sBlockId = $projects->Blocked($project_id, $reason, $reason_id, $_SESSION['uid']);
                        $project = $projects->GetPrjCust($project_id);
                        // Удаляем черновик
                        require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/drafts.php';
                        drafts::DeleteDraftByPrjID($project_id);
                        // пишем лог админских действий
                        admin_log::addLog(admin_log::OBJ_CODE_PROJ, 9, $project['user_id'], $project_id, $project['name'], $sObjLink, 0, '', $reason_id, $reason, $sBlockId);
                        $reason = reformat($project['blocked_reason'], 24, 0, 0, 1, 24);
                        $html = BlockedProjectHTML($reason, $project['blocked_time'], $_SESSION['login'], "{$_SESSION['name']} {$_SESSION['surname']}");
                        $objResponse->assign("project-reason-{$project_id}", 'innerHTML', $html);
                        $objResponse->assign("project-reason-{$project_id}", 'style.display', 'block');
                        $objResponse->assign("project-button-{$project_id}", 'innerHTML', "<a style='color: Red;' href='javascript: void(0);' onclick='banned.unblockedProject({$project_id}); return false;'>Разблокировать</a>");
                    }
                } else {
                    $objResponse->alert('Несуществующий проект');
                }
            }
        }
    }
    return $objResponse;
}