/** * Проекты. Утверждение/удаление записи * * @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; }
/** * Изменение блокировки проекта. * * @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; }
/** * Блокирование/разблокирование проекта * * @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; }