/**
  * Запуск обработки
  */
 public function Exec()
 {
     /**
      * Получаем страны
      */
     $aCountries = E::ModuleGeo()->GetGroupCountriesByTargetType('user', 20);
     /**
      * Формируем облако тегов
      */
     E::ModuleTools()->MakeCloud($aCountries);
     /**
      * Выводим в шаблон
      */
     E::ModuleViewer()->Assign('aCountryList', $aCountries);
 }
 /**
  * Запуск обработки
  */
 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);
     }
 }
Exemple #3
0
 /**
  * Запуск обработки
  */
 public function Exec()
 {
     $iLimit = C::Val('widgets.tags.params.limit', 70);
     // * Получаем список тегов
     $aTags = E::ModuleTopic()->GetOpenTopicTags($iLimit);
     // * Расчитываем логарифмическое облако тегов
     if ($aTags) {
         E::ModuleTools()->MakeCloud($aTags);
         // * Устанавливаем шаблон вывода
         E::ModuleViewer()->Assign('aTags', $aTags);
     }
     // * Теги пользователя
     if ($oUserCurrent = E::ModuleUser()->GetUserCurrent()) {
         $aTags = E::ModuleTopic()->GetOpenTopicTags($iLimit, $oUserCurrent->getId());
         // * Расчитываем логарифмическое облако тегов
         if ($aTags) {
             E::ModuleTools()->MakeCloud($aTags);
             // * Устанавливаем шаблон вывода
             E::ModuleViewer()->Assign('aTagsUser', $aTags);
         }
     }
 }
Exemple #4
0
 /**
  * Редактирование блога
  *
  */
 protected function EventEditBlog()
 {
     // Меню
     $this->sMenuSubItemSelect = '';
     $this->sMenuItemSelect = 'profile';
     // Передан ли в URL номер блога
     $sBlogId = $this->GetParam(0);
     if (!($oBlog = E::ModuleBlog()->GetBlogById($sBlogId))) {
         return parent::EventNotFound();
     }
     $this->oCurrentBlog = $oBlog;
     // Проверяем тип блога
     if ($oBlog->getType() == 'personal') {
         return parent::EventNotFound();
     }
     // Проверям, авторизован ли пользователь
     if (!E::ModuleUser()->IsAuthorization()) {
         E::ModuleMessage()->AddErrorSingle(E::ModuleLang()->Get('not_access'), E::ModuleLang()->Get('error'));
         return R::Action('error');
     }
     // Проверка на право редактировать блог
     if (!E::ModuleACL()->IsAllowEditBlog($oBlog, $this->oUserCurrent)) {
         E::ModuleMessage()->AddErrorSingle(E::ModuleLang()->Get('not_access'), E::ModuleLang()->Get('not_access'));
         return R::Action('error');
     }
     E::ModuleHook()->Run('blog_edit_show', array('oBlog' => $oBlog));
     // * Устанавливаем title страницы
     E::ModuleViewer()->AddHtmlTitle($oBlog->getTitle());
     E::ModuleViewer()->AddHtmlTitle(E::ModuleLang()->Get('blog_edit'));
     E::ModuleViewer()->Assign('oBlogEdit', $oBlog);
     if (!isset($this->aBlogTypes[$oBlog->getType()])) {
         $this->aBlogTypes[$oBlog->getType()] = $oBlog->getBlogType();
     }
     E::ModuleViewer()->Assign('aBlogTypes', $this->aBlogTypes);
     // Устанавливаем шаблон для вывода
     $this->SetTemplateAction('add');
     // Если нажали кнопку "Сохранить"
     if (F::isPost('submit_blog_add')) {
         // Запускаем проверку корректности ввода полей при редактировании блога
         if (!$this->checkBlogFields($oBlog)) {
             return false;
         }
         // issue 151 (https://github.com/altocms/altocms/issues/151)
         // Некорректная обработка названия блога
         // $oBlog->setTitle(strip_tags(F::GetRequestStr('blog_title')));
         $oBlog->setTitle(E::ModuleTools()->RemoveAllTags(F::GetRequestStr('blog_title')));
         // Парсим описание блога
         $sText = E::ModuleText()->Parse(F::GetRequestStr('blog_description'));
         $oBlog->setDescription($sText);
         // Если меняется тип блога, фиксируем это
         if ($oBlog->getType() != F::GetRequestStr('blog_type')) {
             $oBlog->setOldType($oBlog->getType());
         }
         $oBlog->setType(F::GetRequestStr('blog_type'));
         $oBlog->setLimitRatingTopic(floatval(F::GetRequestStr('blog_limit_rating_topic')));
         if ($this->oUserCurrent->isAdministrator() || $this->oUserCurrent->isModerator()) {
             $oBlog->setUrl(F::GetRequestStr('blog_url'));
             // разрешаем смену URL блога только админу
         }
         // Обновляем блог
         E::ModuleHook()->Run('blog_edit_before', array('oBlog' => $oBlog));
         if ($this->_updateBlog($oBlog)) {
             E::ModuleHook()->Run('blog_edit_after', array('oBlog' => $oBlog));
             R::Location($oBlog->getUrlFull());
         } else {
             E::ModuleMessage()->AddErrorSingle(E::ModuleLang()->Get('system_error'), E::ModuleLang()->Get('error'));
             return R::Action('error');
         }
     } else {
         // Загружаем данные в форму редактирования блога
         $_REQUEST['blog_title'] = $oBlog->getTitle();
         $_REQUEST['blog_url'] = $oBlog->getUrl();
         $_REQUEST['blog_type'] = $oBlog->getType();
         $_REQUEST['blog_description'] = $oBlog->getDescription();
         $_REQUEST['blog_limit_rating_topic'] = $oBlog->getLimitRatingTopic();
         $_REQUEST['blog_id'] = $oBlog->getId();
     }
     return true;
 }
 /**
  * Обработка редактирования топика
  *
  * @param ModuleTopic_EntityTopic $oTopic
  *
  * @return mixed
  */
 protected function SubmitEdit($oTopic)
 {
     $oTopic->_setValidateScenario('topic');
     // * Сохраняем старое значение идентификатора блога
     $iBlogIdOld = $oTopic->getBlogId();
     // * Заполняем поля для валидации
     $iBlogId = F::GetRequestStr('blog_id');
     // if blog_id is empty then save blog not changed
     if (is_numeric($iBlogId)) {
         $oTopic->setBlogId($iBlogId);
     }
     // issue 151 (https://github.com/altocms/altocms/issues/151)
     // Некорректная обработка названия блога
     // $oTopic->setTitle(strip_tags(F::GetRequestStr('topic_title')));
     $oTopic->setTitle(E::ModuleTools()->RemoveAllTags(F::GetRequestStr('topic_title')));
     $oTopic->setTextSource(F::GetRequestStr('topic_text'));
     if ($this->oContentType->isAllow('link')) {
         $oTopic->setSourceLink(F::GetRequestStr('topic_field_link'));
     }
     $oTopic->setTags(F::GetRequestStr('topic_field_tags'));
     $oTopic->setUserIp(F::GetUserIp());
     if ($this->oUserCurrent && ($this->oUserCurrent->isAdministrator() || $this->oUserCurrent->isModerator())) {
         if (F::GetRequestStr('topic_url') && $oTopic->getTopicUrl() != F::GetRequestStr('topic_url')) {
             $sTopicUrl = E::ModuleTopic()->CorrectTopicUrl(F::TranslitUrl(F::GetRequestStr('topic_url')));
             $oTopic->setTopicUrl($sTopicUrl);
         }
     }
     // * Проверка корректности полей формы
     if (!$this->checkTopicFields($oTopic)) {
         return false;
     }
     // * Определяем в какой блог делаем запись
     $nBlogId = $oTopic->getBlogId();
     if ($nBlogId == 0) {
         $oBlog = E::ModuleBlog()->GetPersonalBlogByUserId($oTopic->getUserId());
     } else {
         $oBlog = E::ModuleBlog()->GetBlogById($nBlogId);
     }
     // * Если блог не определен выдаем предупреждение
     if (!$oBlog) {
         E::ModuleMessage()->AddErrorSingle(E::ModuleLang()->Get('topic_create_blog_error_unknown'), E::ModuleLang()->Get('error'));
         return false;
     }
     // * Проверяем права на постинг в блог
     if (!E::ModuleACL()->IsAllowBlog($oBlog, $this->oUserCurrent)) {
         E::ModuleMessage()->AddErrorSingle(E::ModuleLang()->Get('topic_create_blog_error_noallow'), E::ModuleLang()->Get('error'));
         return false;
     }
     // * Проверяем разрешено ли постить топик по времени
     if (isPost('submit_topic_publish') && !$oTopic->getPublishDraft() && !E::ModuleACL()->CanPostTopicTime($this->oUserCurrent)) {
         E::ModuleMessage()->AddErrorSingle(E::ModuleLang()->Get('topic_time_limit'), E::ModuleLang()->Get('error'));
         return;
     }
     $oTopic->setBlogId($oBlog->getId());
     // * Получаемый и устанавливаем разрезанный текст по тегу <cut>
     list($sTextShort, $sTextNew, $sTextCut) = E::ModuleText()->Cut($oTopic->getTextSource());
     $oTopic->setCutText($sTextCut);
     $oTopic->setText(E::ModuleText()->Parser($sTextNew));
     // Получаем ссылки, полученные при парсинге текста
     $oTopic->setTextLinks(E::ModuleText()->GetLinks());
     $oTopic->setTextShort(E::ModuleText()->Parser($sTextShort));
     // * Изменяем вопрос/ответы, только если еще никто не голосовал
     if ($this->oContentType->isAllow('poll') && F::GetRequestStr('topic_field_question') && F::GetRequest('topic_field_answers', array()) && $oTopic->getQuestionCountVote() == 0) {
         $oTopic->setQuestionTitle(strip_tags(F::GetRequestStr('topic_field_question')));
         $oTopic->clearQuestionAnswer();
         $aAnswers = F::GetRequest('topic_field_answers', array());
         foreach ($aAnswers as $sAnswer) {
             $sAnswer = trim((string) $sAnswer);
             if ($sAnswer) {
                 $oTopic->addQuestionAnswer($sAnswer);
             }
         }
     }
     $aPhotoSetData = E::ModuleMresource()->GetPhotosetData('photoset', $oTopic->getId());
     $oTopic->setPhotosetCount($aPhotoSetData['count']);
     $oTopic->setPhotosetMainPhotoId($aPhotoSetData['cover']);
     // * Publish or save as a draft
     $bSendNotify = false;
     if (isset($_REQUEST['submit_topic_publish'])) {
         // If the topic has not been published then sets date of show (publication date)
         if (!$oTopic->getPublish() && !$oTopic->getDateShow()) {
             $oTopic->setDateShow(F::Now());
         }
         $oTopic->setPublish(1);
         if ($oTopic->getPublishDraft() == 0) {
             $oTopic->setPublishDraft(1);
             $oTopic->setDateAdd(F::Now());
             $bSendNotify = true;
         }
     } else {
         $oTopic->setPublish(0);
     }
     // * Принудительный вывод на главную
     if (E::ModuleACL()->IsAllowPublishIndex($this->oUserCurrent)) {
         if (F::GetRequest('topic_publish_index')) {
             $oTopic->setPublishIndex(1);
         } else {
             $oTopic->setPublishIndex(0);
         }
     }
     // * Запрет на комментарии к топику
     $oTopic->setForbidComment(F::GetRequest('topic_forbid_comment', 0));
     // Если запрет на индексацию не устанавливался вручную, то задаем, как у блога
     $oBlogType = $oBlog->GetBlogType();
     if ($oBlogType && !$oTopic->getIndexIgnoreLock()) {
         $oTopic->setTopicIndexIgnore($oBlogType->GetIndexIgnore());
     } else {
         $oTopic->setTopicIndexIgnore(false);
     }
     $oTopic->setShowPhotoset(F::GetRequest('topic_show_photoset', 0));
     E::ModuleHook()->Run('topic_edit_before', array('oTopic' => $oTopic, 'oBlog' => $oBlog));
     // * Сохраняем топик
     if ($this->_updateTopic($oTopic)) {
         E::ModuleHook()->Run('topic_edit_after', array('oTopic' => $oTopic, 'oBlog' => $oBlog, 'bSendNotify' => &$bSendNotify));
         // * Обновляем данные в комментариях, если топик был перенесен в новый блог
         if ($iBlogIdOld != $oTopic->getBlogId()) {
             E::ModuleComment()->UpdateTargetParentByTargetId($oTopic->getBlogId(), 'topic', $oTopic->getId());
             E::ModuleComment()->UpdateTargetParentByTargetIdOnline($oTopic->getBlogId(), 'topic', $oTopic->getId());
         }
         // * Обновляем количество топиков в блоге
         if ($iBlogIdOld != $oTopic->getBlogId()) {
             E::ModuleBlog()->RecalculateCountTopicByBlogId($iBlogIdOld);
         }
         E::ModuleBlog()->RecalculateCountTopicByBlogId($oTopic->getBlogId());
         // * Добавляем событие в ленту
         E::ModuleStream()->Write($oTopic->getUserId(), 'add_topic', $oTopic->getId(), $oTopic->getPublish() && (!$oBlogType || !$oBlog->getBlogType()->IsPrivate()));
         // * Рассылаем о новом топике подписчикам блога
         if ($bSendNotify) {
             E::ModuleTopic()->SendNotifyTopicNew($oBlog, $oTopic, $oTopic->getUser());
         }
         if (!$oTopic->getPublish() && !$this->oUserCurrent->isAdministrator() && !$this->oUserCurrent->isModerator() && $this->oUserCurrent->getId() != $oTopic->getUserId()) {
             R::Location($oBlog->getUrlFull());
         }
         R::Location($oTopic->getUrl());
     } else {
         E::ModuleMessage()->AddErrorSingle(E::ModuleLang()->Get('system_error'));
         F::SysWarning('System Error');
         return R::Action('error');
     }
 }
Exemple #6
0
 /**
  * Загружает в шаблонизатор необходимые переменные
  *
  */
 protected function AssignVars()
 {
     E::ModuleViewer()->Assign('sAction', static::$sAction);
     E::ModuleViewer()->Assign('sEvent', static::$sActionEvent);
     E::ModuleViewer()->Assign('aParams', static::$aParams);
     E::ModuleViewer()->Assign('PATH_WEB_CURRENT', E::ModuleTools()->Urlspecialchars(static::$sCurrentFullUrl));
 }