Beispiel #1
0
 public function getUserPassedLessons()
 {
     $result = array();
     if (AuthManager::isAuthorized()) {
         foreach (TRBean::inst()->getPassedLessons(AuthManager::getUserId()) as $id) {
             $result["tr{$id}"] = true;
         }
     }
     return $result;
 }
Beispiel #2
0
 /**
  * Метод строит список постов, в которых появились новые комментарии, и показывает их администратору.
  * 
  * Выпуск №1 (3)
  * Архимед (7)
  */
 public function getPostsWithUncheckedCommentsHtml()
 {
     $adminId = AuthManager::getUserId();
     $result = array();
     /* @var $pp PostsProcessor */
     foreach (Handlers::getInstance()->getPostsProcessors() as $pp) {
         $bean = $pp->dbBean();
         $table = $bean->getPostsTable();
         $table_comments = $bean->getCommentsTable();
         $query = "SELECT p.id_post, (SELECT count(*)\n             FROM {$table_comments} c\n            WHERE     c.id_post = p.id_post\n                  AND c.b_deleted = 0\n                  AND c.b_confirmed = 0\n                  AND c.id_user <> ?) as comments_count\n  FROM v_{$table} p\n WHERE EXISTS\n          (SELECT *\n             FROM {$table_comments} c\n            WHERE     c.id_post = p.id_post\n                  AND c.b_deleted = 0\n                  AND c.b_confirmed = 0\n                  AND c.id_user <> ?)";
         $posts = $this->getArray($query, array($adminId, $adminId));
         foreach ($posts as $post) {
             $result[] = '<li>' . $pp->postHref($post['id_post'], null, 'comments') . ' (' . $post['comments_count'] . ')</li>';
         }
     }
     return '<ul>' . implode('', $result) . '</ul>';
 }
Beispiel #3
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();
 }
Beispiel #4
0
 protected function processRequest(ArrayAdapter $params)
 {
     $smarty['discussion'] = FeedbackManager::inst()->buildDiscussion(false, AuthManager::getUserId(), true);
     return new IdentPageFilling($smarty);
 }
Beispiel #5
0
 public function delUserAnswer($ansId)
 {
     $this->BEAN->delImgAnswer($ansId, $this->id, AuthManager::getUserId());
 }
Beispiel #6
0
 public function processRequest(ArrayAdapter $params)
 {
     $trees = CommentsNotifyManager::getInstance()->getUserPostCommentsInfo(AuthManager::getUserId());
     return new IdentPageFilling(array('trees' => $trees));
 }
Beispiel #7
0
 /**
  * Получает количество новых ответов на сообщения пользователя в рамках обратной связи
  */
 public function getUserUnreadedFeedbacksCount()
 {
     return $this->getUserUnknownMsgsCnt(AuthManager::getUserId(), AuthManager::getUserId());
 }
Beispiel #8
0
 /**
  * Привязка popup-страницы к пользователю.
  * Метод должен работать максимально быстро - не будем проверять видимость страницы, просто проверим,
  * существует ли она.
  */
 public function toggleUserPopup($isAdd, $type, $ident)
 {
     $canBeVis = PopupVis::isCanBeVisible($this->getPagePopupVisibility($type, $ident));
     check_condition($canBeVis, "Незарегистрированный плагин с типом [{$type}] и идентификатором [{$ident}]");
     PopupBean::inst()->toggleUserPopup(AuthManager::getUserId(), $isAdd, $type, $ident);
 }
Beispiel #9
0
 /**
  * Метод переносит содержимое сообщения в таблицу ps_discussion_backup перед его удалением.
  */
 private function backupMsg($msgId)
 {
     $themeCol = $this->themeColumn ? $this->themeColumn : 'null';
     $threadCol = $this->threadIdColumn ? $this->threadIdColumn : 'null';
     $this->update("INSERT INTO ps_discussion_backup\n(v_table, id_msg, id_parent, id_root, id_thread, id_user, id_user_to, id_user_delete, dt_event, dt_event_delete, n_deep, theme, content)\nSELECT ?, {$this->idColumn}, id_parent, id_root, {$threadCol}, id_user, id_user_to, ?, dt_event, unix_timestamp(), n_deep, {$themeCol}, content\n  FROM   {$this->table} WHERE  {$this->idColumn} = ?", array($this->table, AuthManager::getUserId(), $msgId));
 }
Beispiel #10
0
 public function dropTestingResults($idTestingRes)
 {
     TestingBean::inst()->dropTestingResults($idTestingRes, AuthManager::getUserId());
 }