/** * Комментарии к предложениям по проектам. Утверждение/удаление записи * * @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 resolvePrjDialog($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_PRJ_DIALOG, $stream_id); if ($sRecId) { require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/projects_offers_dialogue.php"; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/admin_log.php'; $bRet = true; $dialogue = projects_offers_dialogue::getDialogueMessageById($rec_id); $sObjName = $dialogue['project_name']; $sObjLink = getFriendlyURL('project', $dialogue['project_id']); $aData = array('moderator_status' => $user_id); if ($action == 1) { if ($is_sent == 'f') { // отправка уведомления о новом сообщении require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/pmail.php'; $pmail = new pmail(); $pmail->NewPrjMessageOnOffer($rec_id); $aData['is_sent'] = true; // устанавливаем флаг отправки } if ($dialogue['is_blocked'] == 't') { projects_offers_dialogue::UnBlocked($rec_id); // пишем лог админских действий admin_log::addLog(admin_log::OBJ_CODE_PROJ, admin_log::ACT_ID_PRJ_DIALOG_UNBLOCK, $from_id, $rec_id, $sObjName, $sObjLink, 0, '', 0, ''); } } elseif ($action == 2 && $dialogue['is_blocked'] != 't') { $sReason = 'Содержит запрещенную информацию'; $sBlockId = projects_offers_dialogue::Blocked($rec_id, $reason, 0, $_SESSION['uid'], true); // пишем лог админских действий admin_log::addLog(admin_log::OBJ_CODE_PROJ, admin_log::ACT_ID_PRJ_DIALOG_BLOCK, $from_id, $rec_id, $sObjName, $sObjLink, 0, '', 0, $sReason, $sBlockId); } $GLOBALS['DB']->update('projects_offers_dialogue', $aData, 'id = ?i', $rec_id); } return $bRet; }
/** * Блокирование/разблокирование комментария к предложению по проекту * * @param int $dialogue_id ID комментария * @param string $reason причина * @param int $reason_id ID причины, если она выбрана из списка (таблица admin_reasons, где act_id = 27) * @param string $reason_name Краткое описание причины действия (из селекта) для лога админских действий * @return object xajaxResponse */ function BlockedDialogue($dialogue_id, $reason, $reason_id = null, $reason_name = '') { session_start(); $objResponse = new xajaxResponse(); if (hasPermissions('users')) { require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/projects_offers_dialogue.php"; $dialogue_id = intval($dialogue_id); $dialogue = projects_offers_dialogue::getDialogueMessageById($dialogue_id); if ($dialogue) { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/users.php'; $objUser = new users(); $objUser->GetUserByUID($dialogue['user_id']); // лог админских действий $sObjName = $dialogue['project_name']; $sObjLink = getFriendlyURL('project', $dialogue['project_id']); $reason_id = $reason_id ? $reason_id : 0; $reason = str_replace('%USERNAME%', $objUser->uname . ' ' . $objUser->usurname, $reason); $reason = change_q($reason, FALSE, 0, TRUE); if ($dialogue['is_blocked'] == 't') { projects_offers_dialogue::UnBlocked($dialogue_id); // пишем лог админских действий admin_log::addLog(admin_log::OBJ_CODE_PROJ, admin_log::ACT_ID_PRJ_DIALOG_UNBLOCK, $dialogue['user_id'], $dialogue_id, $sObjName, $sObjLink, 0, '', $reason_id, $reason); $objResponse->assign("dialogue-block-{$dialogue_id}", 'innerHTML', ' '); $objResponse->assign("dialogue-block-{$dialogue_id}", 'style.display', 'none'); $objResponse->assign("dialogue-button-{$dialogue_id}", 'innerHTML', '<a class="admn" href="javascript:void(0);" onclick="banned.blockedDialogue(' . $dialogue_id . ')">Заблокировать</a>'); } else { $sBlockId = projects_offers_dialogue::Blocked($dialogue_id, $reason, $reason_id, $_SESSION['uid']); // пишем лог админских действий admin_log::addLog(admin_log::OBJ_CODE_PROJ, admin_log::ACT_ID_PRJ_DIALOG_BLOCK, $dialogue['user_id'], $dialogue_id, $sObjName, $sObjLink, 0, '', $reason_id, $reason, $sBlockId); $reason = reformat($reason, 24, 0, 0, 1, 24); $html = BlockedDialogueHTML($reason, $_SESSION['login'], "{$_SESSION['name']} {$_SESSION['surname']}"); $objResponse->assign("dialogue-block-{$dialogue_id}", 'innerHTML', $html); $objResponse->assign("dialogue-block-{$dialogue_id}", 'style.display', 'block'); $objResponse->assign("dialogue-button-{$dialogue_id}", 'innerHTML', '<a class="admn" href="javascript:void(0);" onclick="banned.unblockedDialogue(' . $dialogue_id . ')">Разблокировать</a>'); } } else { $objResponse->alert('Несуществующее предложение'); } } return $objResponse; }