Example #1
0
 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();
 }
Example #2
0
 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();
             }
         }
     }
 }
Example #3
0
 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();
             }
         }
     }
 }
Example #4
0
 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;
 }
Example #5
0
 /**
  * Список методов, доступных для вызова
  */
 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;
 }
Example #6
0
 /**
  * Метод строит 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();
 }
Example #7
0
 /**
  * Конструктор может быть вызван только из 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));
 }
Example #8
0
 /**
  * Возвращает минимальный интервал между действиями.
  */
 public static function ACTIVITY_INTERVAL()
 {
     return AuthManager::isAuthorizedAsAdmin() ? 0 : ConfigIni::userActivityInterval();
 }
Example #9
0
 /**
  * From DiscussionController
  */
 protected function assertCanSaveDiscussionMsg(PsUser $author, $parent = null, $threadId = null)
 {
     //В ленту пишет сам пользователь или мы авторизованы под администратором или от имени дефолтного администратора
     $author->isIt($threadId) || $author->isIt(PsUser::defaultAdmin()) || AuthManager::isAuthorizedAsAdmin();
 }
Example #10
0
 /**
  * Метод возвращает идентификаторы сущностей фолдинга из таблицы.
  * Для админа вернёт всё (из таблицы), для обычного пользователя - только видимые (из вью).
  */
 public function getAccessibleDbIdents()
 {
     return FoldingBean::inst()->getIdents($this, AuthManager::isAuthorizedAsAdmin());
 }
Example #11
0
 /**
  * Возвращает минимальный интервал между действиями.
  */
 public static function ACTIVITY_INTERVAL()
 {
     return AuthManager::isAuthorizedAsAdmin() ? 0 : ACTIVITY_INTERVAL;
 }
Example #12
0
function ps_admin_on($force = false)
{
    if ($force || AuthManager::isAuthorizedAsAdmin()) {
        Autoload::inst()->registerAdminBaseDir();
    }
}
Example #13
0
 public static final function admin()
 {
     return AuthManager::isAuthorizedAsAdmin();
 }