protected function executeImpl(ArrayAdapter $params) { $url = $params->str('url'); $text = $params->str('text'); $note = $params->str('note'); if (!$url || !$text) { return 'Не передан url или текст'; } /* * Если пользователь не просматривал эту страницу и это не администратор - игнорируем. */ $wasOpened = PageOpenWatcher::isPageOpenedByUser($url, PsUser::instOrNull()); if (!$wasOpened && !AuthManager::isAuthorizedAsAdmin()) { return 'Пользователь не открывал страницу'; //--- } $text = UserInputTools::safeShortText($text); $note = $note ? UserInputTools::safeLongText($note) : $note; $saved = UtilsBean::inst()->saveMisprint($url, $text, $note, AuthManager::getUserIdOrNull()); if (!$saved) { return 'Запись не была сохранена'; //--- } return new AjaxSuccess(); }
protected function doProcess(PageContext $ctxt, RequestArrayAdapter $requestParams, ArrayAdapter $buildParams) { $this->authed = AuthManager::isAuthorizedAsAdmin(); if ($this->authed) { $this->adminPage = AdminPagesManager::getInstance()->getCurrentPage(); } else { if (FORM_AdminLoginForm::getInstance()->isValid4Process()) { if (AdminAuthManager::getInstance()->login()) { WebPages::reloadCurPage(); } } } }
protected function doProcess(PageContext $ctxt, RequestArrayAdapter $requestParams, ArrayAdapter $buildParams) { $this->authed = AuthManager::isAuthorizedAsAdmin(); if ($this->authed) { $this->adminPage = AdminPagesManager::getInstance()->getCurrentPage(); } else { //Показываем форму авторизации админа только если используем базовый провайдер безопасности if (PsSecurity::isBasic() && FORM_AdminLoginForm::getInstance()->isValid4Process()) { if (AdminAuthManager::getInstance()->login()) { PsUtil::redirectToSelf(); } } } }
public function toAttay() { $REQULT = array(); if ($this->query && AuthManager::isAuthorizedAsAdmin()) { $REQULT['query'] = $this->query->build($params); $REQULT['params'] = array_to_string($params); } if (!$this->data) { return $REQULT; } //Добавим стандартные обработчики для колонок foreach ($this->columns as $column) { if (starts_with($column, 'dt_')) { $this->addSetting($column, self::COL_DATE); $this->addSetting($column, self::COL_NOWRAP); } } $REQULT['data'] = $this->data; $REQULT['columns'] = $this->columns; $REQULT['settings'] = $this->settings; return $REQULT; }
/** * Список методов, доступных для вызова */ public static function getMethodsList() { if (!AuthManager::isAuthorizedAsAdmin() || PsDefines::isProduction()) { return array(); } if (!is_array(self::$METHODS)) { self::$METHODS = array(); $methodNames = PsUtil::getClassMethods(TestManager::inst(), true, false, true, true); foreach ($methodNames as $name) { $method = new ReflectionMethod(TestManager::inst(), $name); $params['name'] = $name; $params['descr'] = implode("\n", StringUtils::parseMultiLineComments($method->getDocComment())); $params['params'] = array(); /* @var $param ReflectionParameter */ foreach ($method->getParameters() as $param) { $params['params'][] = array('name' => $param->getName(), 'dflt' => $param->isDefaultValueAvailable() ? var_export($param->getDefaultValue(), true) : null); } self::$METHODS[$name] = $params; } } return self::$METHODS; }
/** * Метод строит html листочка на дереве дискуссии: * * <li> * .... * <ul> * <li> * .... * </li> * </ul> * </li> * * @param DiscussionMsg $msg */ public final function buildLeaf(DiscussionMsg $msg, $simple = false) { $msgId = $msg->getId(); $author = $msg->getUser(); $isDeleted = $msg->isDeleted(); $isUserComment = $author->isAuthorised(); $isCanConfirm = !$isUserComment && !$msg->isConfirmed() && !$isDeleted && AuthManager::isAuthorizedAsAdmin(); $notKnown = !$msg->isKnown() && $msg->getUserTo() && $msg->getUserTo()->isIt(PsUser::instOrNull()); $msgUnique = $msg->getUnique(); $threadUnique = $this->SETTINGS->getThreadUnique($msg->getThreadId()); //Мы открываем страницу для показа этого комментария $liId = RequestArrayAdapter::inst()->str(GET_PARAM_GOTO_MSG) === $msgUnique ? " id=\"{$msgUnique}\"" : ''; //Классы li $liClasses = array('msg'); if ($isDeleted) { $liClasses[] = 'deleted'; } //Классы Comment $divClasses = array('comment', $msgUnique); if ($isUserComment) { $divClasses[] = 'user_comment'; } if ($isCanConfirm) { $divClasses[] = 'not_confirmed'; } //Данные для Comment $divData['unique'] = $msgUnique; //Имя пользователя $userName = $author->getName() . ($isUserComment ? ' (вы)' : ''); //КНОПКИ УПРАВЛЕНИЯ СВЕРХУ $controlsTop = array(); if (!$simple) { //Кнопки управления сверху $controlsTop[] = PsHtml::a(array('href' => '#'), '#'); if (!$msg->isRoot()) { $controlsTop[] = PsHtml::a(array('href' => '#', 'class' => 'parent'), '↑'); } } //Кнопки голосования if ($this->SETTINGS->isVotable()) { $userCanVote = AuthManager::isAuthorized() && !$isUserComment; $votes = VotesManager::inst()->getVotesCount($threadUnique, $msgId); $likeCtrl = array(); if ($userCanVote) { $vote = VotesManager::inst()->getUserVotes($threadUnique, $msgId, AuthManager::getUserId()); $likeCtrl[] = PsHtml::a(array('class' => 'like ' . ($vote > 0 ? 'active' : 'clickable')), '+1'); $likeCtrl[] = PsHtml::a(array('class' => 'votes' . ($vote == 0 ? '' : ' clickable') . ($votes == 0 ? '' : ($votes > 0 ? ' green' : ' red'))), abs($votes)); $likeCtrl[] = PsHtml::a(array('class' => 'dislike ' . ($vote < 0 ? 'active' : 'clickable')), '−1'); } else { $likeCtrl[] = PsHtml::a(array('class' => 'votes' . ($votes == 0 ? '' : ($votes > 0 ? ' green' : ' red'))), abs($votes)); } $controlsTop[] = PsHtml::span(array('class' => 'vote'), implode('', $likeCtrl)); } $controlsTop = implode('', $controlsTop); //КНОПКИ УПРАВЛЕНИЯ СНИЗУ $controlsBottom = ''; if (!$simple && !$isDeleted) { $controlsBottom = array(); $controlsBottom['id'] = $msgId; if ($isCanConfirm) { $controlsBottom[SmartyFunctions::ACTION_CONFIRM] = 'Принять'; } if (!$msg->isMaxDeepLevel()) { $controlsBottom[SmartyFunctions::ACTION_REPLY] = 'Ответить'; } if ($isUserComment) { $controlsBottom[SmartyFunctions::ACTION_DELETE] = 'Удалить'; } elseif (AuthManager::isAuthorizedAsAdmin()) { $controlsBottom[SmartyFunctions::ACTION_DELETE] = 'Удалить (админ)'; } $controlsBottom = SmartyFunctions::psctrl($controlsBottom); } //Собираем параметры в кучу $params['msg'] = $msg; $params['new'] = $notKnown; $params['builder'] = $this; $params['liId'] = $liId; $params['liClasses'] = implode(' ', $liClasses); $params['divClasses'] = implode(' ', $divClasses); $params['divData'] = PsHtml::data2string($divData); $params['msgId'] = $msgId; $params['simple'] = $simple; $params['avatar'] = $author->getAvatarImg('42x', array('class' => 'small')); $params['userName'] = $userName; $params['controlsTop'] = $controlsTop; $params['controlsBottom'] = $controlsBottom; if ($msg->isTemplated()) { $params['msgCtt'] = TemplateMessages::inst()->decodeTemplateMsg($msg); } else { $params['msgCtt'] = $msg; } return PSSmarty::template('discussion/common/leaf.tpl', $params)->fetch(); }
/** * Конструктор может быть вызван только из PsUser * * @param int $userId - код пользователя, обязательный параметр * @param array $data - параметры пользователя Могут и не быть */ protected function __construct($userId) { $this->userId = UserBean::inst()->register($userId); $this->canEdit = AuthManager::isIt($userId) || AuthManager::isAuthorizedAsAdmin(); $this->LOGGER = PsLogger::inst(get_called_class()); $this->LOGGER->info('[{}] Instance created, can edit ? {}', $this->userId, var_export($this->canEdit, true)); }
/** * Возвращает минимальный интервал между действиями. */ public static function ACTIVITY_INTERVAL() { return AuthManager::isAuthorizedAsAdmin() ? 0 : ConfigIni::userActivityInterval(); }
/** * From DiscussionController */ protected function assertCanSaveDiscussionMsg(PsUser $author, $parent = null, $threadId = null) { //В ленту пишет сам пользователь или мы авторизованы под администратором или от имени дефолтного администратора $author->isIt($threadId) || $author->isIt(PsUser::defaultAdmin()) || AuthManager::isAuthorizedAsAdmin(); }
/** * Метод возвращает идентификаторы сущностей фолдинга из таблицы. * Для админа вернёт всё (из таблицы), для обычного пользователя - только видимые (из вью). */ public function getAccessibleDbIdents() { return FoldingBean::inst()->getIdents($this, AuthManager::isAuthorizedAsAdmin()); }
/** * Возвращает минимальный интервал между действиями. */ public static function ACTIVITY_INTERVAL() { return AuthManager::isAuthorizedAsAdmin() ? 0 : ACTIVITY_INTERVAL; }
function ps_admin_on($force = false) { if ($force || AuthManager::isAuthorizedAsAdmin()) { Autoload::inst()->registerAdminBaseDir(); } }
public static final function admin() { return AuthManager::isAuthorizedAsAdmin(); }