/**
  * Запуск обработки
  */
 public function Exec()
 {
     // * Пользователь авторизован?
     if ($oUserCurrent = E::ModuleUser()->GetUserCurrent()) {
         if (!($oUser = $this->getParam('user'))) {
             $oUser = $oUserCurrent;
         }
         // * Получаем список тегов
         $aTags = E::ModuleFavourite()->GetGroupTags($oUser->getId(), 'topic', false, 70);
         // * Расчитываем логарифмическое облако тегов
         E::ModuleTools()->MakeCloud($aTags);
         // * Устанавливаем шаблон вывода
         E::ModuleViewer()->Assign('aFavouriteTopicTags', $aTags);
         // * Получаем список тегов пользователя
         $aTags = E::ModuleFavourite()->GetGroupTags($oUser->getId(), 'topic', true, 70);
         // * Расчитываем логарифмическое облако тегов
         E::ModuleTools()->MakeCloud($aTags);
         // * Устанавливаем шаблон вывода
         E::ModuleViewer()->Assign('aFavouriteTopicUserTags', $aTags);
         E::ModuleViewer()->Assign('oFavouriteUser', $oUser);
     }
 }
Esempio n. 2
0
 /**
  * Удаляет топики из избранного по списку
  *
  * @param  array $aTopicsId    Список ID топиков
  *
  * @return bool
  */
 public function DeleteFavouriteTopicByArrayId($aTopicsId)
 {
     return E::ModuleFavourite()->DeleteFavouriteByTargetId($aTopicsId, 'topic');
 }
Esempio n. 3
0
 /**
  * Формирует из REQUEST массива фильтр для отбора писем
  *
  * @return array
  */
 protected function BuildFilter()
 {
     // * Текущий пользователь
     $aFilter = array('user_id' => $this->oUserCurrent->getId());
     // * Дата старта поиска
     if ($start = F::GetRequestStr('start')) {
         if (F::CheckVal($start, 'text', 6, 10) && substr_count($start, '.') == 2) {
             list($d, $m, $y) = explode('.', $start);
             if (@checkdate($m, $d, $y)) {
                 $aFilter['date_min'] = "{$y}-{$m}-{$d}";
             } else {
                 E::ModuleMessage()->AddError(E::ModuleLang()->Get('talk_filter_error_date_format'), E::ModuleLang()->Get('talk_filter_error'));
                 unset($_REQUEST['start']);
             }
         } else {
             E::ModuleMessage()->AddError(E::ModuleLang()->Get('talk_filter_error_date_format'), E::ModuleLang()->Get('talk_filter_error'));
             unset($_REQUEST['start']);
         }
     }
     // * Дата окончания поиска
     if ($end = F::GetRequestStr('end')) {
         if (F::CheckVal($end, 'text', 6, 10) && substr_count($end, '.') == 2) {
             list($d, $m, $y) = explode('.', $end);
             if (@checkdate($m, $d, $y)) {
                 $aFilter['date_max'] = "{$y}-{$m}-{$d} 23:59:59";
             } else {
                 E::ModuleMessage()->AddError(E::ModuleLang()->Get('talk_filter_error_date_format'), E::ModuleLang()->Get('talk_filter_error'));
                 unset($_REQUEST['end']);
             }
         } else {
             E::ModuleMessage()->AddError(E::ModuleLang()->Get('talk_filter_error_date_format'), E::ModuleLang()->Get('talk_filter_error'));
             unset($_REQUEST['end']);
         }
     }
     // * Ключевые слова в теме сообщения
     if (($sKeyRequest = F::GetRequest('keyword')) && is_string($sKeyRequest)) {
         $sKeyRequest = urldecode($sKeyRequest);
         preg_match_all('~(\\S+)~u', $sKeyRequest, $aWords);
         if (is_array($aWords[1]) && isset($aWords[1]) && count($aWords[1])) {
             $aFilter['keyword'] = '%' . implode('%', $aWords[1]) . '%';
         } else {
             unset($_REQUEST['keyword']);
         }
     }
     // * Ключевые слова в тексте сообщения
     if (($sKeyRequest = F::GetRequest('keyword_text')) && is_string($sKeyRequest)) {
         $sKeyRequest = urldecode($sKeyRequest);
         preg_match_all('~(\\S+)~u', $sKeyRequest, $aWords);
         if (is_array($aWords[1]) && isset($aWords[1]) && count($aWords[1])) {
             $aFilter['text_like'] = '%' . implode('%', $aWords[1]) . '%';
         } else {
             unset($_REQUEST['keyword_text']);
         }
     }
     // * Отправитель
     if (($sSender = F::GetRequest('sender')) && is_string($sSender)) {
         $aFilter['user_login'] = F::Array_Str2Array(urldecode($sSender), ',', true);
     }
     // * Адресат
     if (($sAddressee = F::GetRequest('addressee')) && is_string($sAddressee)) {
         $aFilter['user_login'] = F::Array_Str2Array(urldecode($sAddressee), ',', true);
     }
     // * Искать только в избранных письмах
     if (F::GetRequest('favourite')) {
         $aTalkIdResult = E::ModuleFavourite()->GetFavouritesByUserId($this->oUserCurrent->getId(), 'talk', 1, 500);
         // ограничиваем
         $aFilter['id'] = $aTalkIdResult['collection'];
         $_REQUEST['favourite'] = 1;
     } else {
         unset($_REQUEST['favourite']);
     }
     return $aFilter;
 }
Esempio n. 4
0
 /**
  * Удаляет письмо из избранного
  *
  * @param  ModuleFavourite_EntityFavourite $oFavourite    Объект избранного
  *
  * @return bool
  */
 public function DeleteFavouriteTalk(ModuleFavourite_EntityFavourite $oFavourite)
 {
     return $oFavourite->getTargetType() == 'talk' ? E::ModuleFavourite()->DeleteFavourite($oFavourite) : false;
 }
Esempio n. 5
0
 /**
  * Сохраняет теги для избранного
  *
  */
 protected function EventFavouriteSaveTags()
 {
     // * Пользователь авторизован?
     if (!$this->oUserCurrent) {
         E::ModuleMessage()->AddErrorSingle(E::ModuleLang()->Get('need_authorization'), E::ModuleLang()->Get('error'));
         return;
     }
     // * Объект уже должен быть в избранном
     if ($oFavourite = E::ModuleFavourite()->GetFavourite(F::GetRequestStr('target_id'), F::GetRequestStr('target_type'), $this->oUserCurrent->getId())) {
         // * Обрабатываем теги
         $aTags = explode(',', trim(F::GetRequestStr('tags'), "\r\n\t\v ."));
         $aTagsNew = array();
         $aTagsNewLow = array();
         $aTagsReturn = array();
         foreach ($aTags as $sTag) {
             $sTag = trim($sTag);
             if (F::CheckVal($sTag, 'text', 2, 50) && !in_array(mb_strtolower($sTag, 'UTF-8'), $aTagsNewLow)) {
                 $sTagEsc = htmlspecialchars($sTag);
                 $aTagsNew[] = $sTagEsc;
                 $aTagsReturn[] = array('tag' => $sTagEsc, 'url' => $this->oUserCurrent->getUserWebPath() . 'favourites/' . $oFavourite->getTargetType() . 's/tag/' . $sTagEsc . '/');
                 $aTagsNewLow[] = mb_strtolower($sTag, 'UTF-8');
             }
         }
         if (!count($aTagsNew)) {
             $oFavourite->setTags('');
         } else {
             $oFavourite->setTags(join(',', $aTagsNew));
         }
         E::ModuleViewer()->AssignAjax('aTags', $aTagsReturn);
         E::ModuleFavourite()->UpdateFavourite($oFavourite);
         return;
     }
     E::ModuleMessage()->AddErrorSingle(E::ModuleLang()->Get('system_error'), E::ModuleLang()->Get('error'));
 }
Esempio n. 6
0
 /**
  * Удаляет комментарии из избранного по списку
  *
  * @param  array $aCommentsId    Список ID комментариев
  *
  * @return bool
  */
 public function DeleteFavouriteCommentsByArrayId($aCommentsId)
 {
     return E::ModuleFavourite()->DeleteFavouriteByTargetId($aCommentsId, 'comment');
 }
Esempio n. 7
0
 /**
  * Список топиков из избранного по тегу
  */
 protected function EventFavouriteTopicsTag()
 {
     if (!$this->CheckUserProfile()) {
         return parent::EventNotFound();
     }
     // * Пользователь авторизован и просматривает свой профиль?
     if (!$this->oUserCurrent || $this->oUserProfile->getId() != $this->oUserCurrent->getId()) {
         return parent::EventNotFound();
     }
     $this->sMenuSubItemSelect = 'topics';
     $sTag = F::UrlDecode($this->GetParamEventMatch(3, 0), true);
     // * Передан ли номер страницы
     $iPage = $this->GetParamEventMatch(4, 2) ? $this->GetParamEventMatch(4, 2) : 1;
     // * Получаем список избранных топиков
     $aResult = E::ModuleFavourite()->GetTags(array('target_type' => 'topic', 'user_id' => $this->oUserProfile->getId(), 'text' => $sTag), array('target_id' => 'desc'), $iPage, Config::Get('module.topic.per_page'));
     $aTopicId = array();
     foreach ($aResult['collection'] as $oTag) {
         $aTopicId[] = $oTag->getTargetId();
     }
     $aTopics = E::ModuleTopic()->GetTopicsAdditionalData($aTopicId);
     // * Формируем постраничность
     $aPaging = E::ModuleViewer()->MakePaging($aResult['count'], $iPage, Config::Get('module.topic.per_page'), Config::Get('pagination.pages.count'), $this->oUserProfile->getUserUrl() . 'favourites/topics/tag/' . htmlspecialchars($sTag));
     // * Загружаем переменные в шаблон
     E::ModuleViewer()->Assign('aPaging', $aPaging);
     E::ModuleViewer()->Assign('aTopics', $aTopics);
     E::ModuleViewer()->Assign('sFavouriteTag', htmlspecialchars($sTag));
     E::ModuleViewer()->AddHtmlTitle(E::ModuleLang()->Get('user_menu_profile') . ' ' . $this->oUserProfile->getLogin());
     E::ModuleViewer()->AddHtmlTitle(E::ModuleLang()->Get('user_menu_profile_favourites'));
     // * Устанавливаем шаблон вывода
     $this->SetTemplateAction('favourite_topics');
 }