2011-07-20 00:32:36 +03:00
|
|
|
|
<?php
|
2011-07-24 14:48:08 +03:00
|
|
|
|
/*-------------------------------------------------------
|
|
|
|
|
*
|
|
|
|
|
* LiveStreet Engine Social Networking
|
|
|
|
|
* Copyright © 2008 Mzhelskiy Maxim
|
|
|
|
|
*
|
|
|
|
|
*--------------------------------------------------------
|
|
|
|
|
*
|
|
|
|
|
* Official site: www.livestreet.ru
|
|
|
|
|
* Contact e-mail: rus.engine@gmail.com
|
|
|
|
|
*
|
|
|
|
|
* GNU General Public License, version 2:
|
|
|
|
|
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
|
|
|
|
|
*
|
|
|
|
|
---------------------------------------------------------
|
|
|
|
|
*/
|
2011-07-20 00:32:36 +03:00
|
|
|
|
|
2011-07-24 14:48:08 +03:00
|
|
|
|
/**
|
|
|
|
|
* Обработка УРЛа вида /photoset/ - управление своими топиками(тип: фотосет)
|
|
|
|
|
*
|
|
|
|
|
*/
|
2011-07-20 00:32:36 +03:00
|
|
|
|
class ActionPhotoset extends Action {
|
|
|
|
|
/**
|
|
|
|
|
* Главное меню
|
|
|
|
|
*
|
|
|
|
|
* @var unknown_type
|
|
|
|
|
*/
|
|
|
|
|
protected $sMenuHeadItemSelect='blog';
|
|
|
|
|
/**
|
|
|
|
|
* Меню
|
|
|
|
|
*
|
|
|
|
|
* @var unknown_type
|
|
|
|
|
*/
|
|
|
|
|
protected $sMenuItemSelect='photoset';
|
|
|
|
|
/**
|
|
|
|
|
* СубМеню
|
|
|
|
|
*
|
|
|
|
|
* @var unknown_type
|
|
|
|
|
*/
|
|
|
|
|
protected $sMenuSubItemSelect='add';
|
|
|
|
|
/**
|
|
|
|
|
* Текущий юзер
|
|
|
|
|
*
|
|
|
|
|
* @var unknown_type
|
|
|
|
|
*/
|
|
|
|
|
protected $oUserCurrent=null;
|
2011-08-28 21:49:01 +03:00
|
|
|
|
|
2011-07-20 00:32:36 +03:00
|
|
|
|
/**
|
|
|
|
|
* Инициализация
|
|
|
|
|
*
|
|
|
|
|
* @return unknown
|
|
|
|
|
*/
|
|
|
|
|
public function Init() {
|
|
|
|
|
/**
|
|
|
|
|
* Проверяем авторизован ли юзер
|
|
|
|
|
*/
|
|
|
|
|
$this->oUserCurrent=$this->User_GetUserCurrent();
|
2011-08-28 21:49:01 +03:00
|
|
|
|
$this->SetDefaultEvent('add');
|
2011-07-20 00:32:36 +03:00
|
|
|
|
$this->Viewer_AddHtmlTitle($this->Lang_Get('topic_photoset_title'));
|
2011-08-28 21:49:01 +03:00
|
|
|
|
|
2011-07-24 14:48:08 +03:00
|
|
|
|
/**
|
|
|
|
|
* Загружаем в шаблон JS текстовки
|
|
|
|
|
*/
|
|
|
|
|
$this->Lang_AddLangJs(array(
|
2012-04-07 08:29:49 +03:00
|
|
|
|
'topic_photoset_photo_delete','topic_photoset_mark_as_preview','topic_photoset_photo_delete_confirm',
|
|
|
|
|
'topic_photoset_is_preview','topic_photoset_upload_choose'
|
|
|
|
|
));
|
2011-07-20 00:32:36 +03:00
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* Регистрируем евенты
|
|
|
|
|
*
|
|
|
|
|
*/
|
2011-07-24 00:55:56 +03:00
|
|
|
|
protected function RegisterEvent() {
|
|
|
|
|
$this->AddEvent('add','EventAdd'); // Добавление топика
|
|
|
|
|
$this->AddEvent('edit','EventEdit'); // Редактирование топика
|
|
|
|
|
$this->AddEvent('deleteimage','EventDeletePhoto'); // Удаление изображения
|
2011-07-20 18:03:19 +03:00
|
|
|
|
$this->AddEvent('upload','EventUpload'); // Загрузка изображения
|
|
|
|
|
$this->AddEvent('getMore','EventGetMore'); // Загрузка изображения на сервер
|
2011-07-24 00:55:56 +03:00
|
|
|
|
$this->AddEvent('setimagedescription','EventSetPhotoDescription'); // Установка описания к фото
|
2011-07-20 00:32:36 +03:00
|
|
|
|
}
|
2011-07-24 00:55:56 +03:00
|
|
|
|
|
|
|
|
|
|
2011-07-20 00:32:36 +03:00
|
|
|
|
/**********************************************************************************
|
2012-04-07 08:29:49 +03:00
|
|
|
|
************************ РЕАЛИЗАЦИЯ ЭКШЕНА ***************************************
|
|
|
|
|
**********************************************************************************
|
|
|
|
|
*/
|
2011-07-24 00:55:56 +03:00
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* AJAX подгрузка следующих фото
|
|
|
|
|
*
|
|
|
|
|
* @return unknown
|
2011-07-20 00:32:36 +03:00
|
|
|
|
*/
|
2011-07-24 00:55:56 +03:00
|
|
|
|
protected function EventGetMore() {
|
|
|
|
|
$this->Viewer_SetResponseAjax('json');
|
2011-08-28 21:49:01 +03:00
|
|
|
|
/**
|
|
|
|
|
* Существует ли топик
|
|
|
|
|
*/
|
2011-07-24 00:55:56 +03:00
|
|
|
|
$oTopic = $this->Topic_getTopicById(getRequest('topic_id'));
|
|
|
|
|
if (!$oTopic || !getRequest('last_id')) {
|
|
|
|
|
$this->Message_AddError($this->Lang_Get('system_error'), $this->Lang_Get('error'));
|
|
|
|
|
return false;
|
|
|
|
|
}
|
2011-08-28 21:49:01 +03:00
|
|
|
|
/**
|
|
|
|
|
* Получаем список фото
|
|
|
|
|
*/
|
2011-07-24 00:55:56 +03:00
|
|
|
|
$aPhotos = $oTopic->getPhotosetPhotos(getRequest('last_id'), Config::Get('module.topic.photoset.per_page'));
|
|
|
|
|
$aResult = array();
|
|
|
|
|
if (count($aPhotos)) {
|
2011-08-28 21:49:01 +03:00
|
|
|
|
/**
|
|
|
|
|
* Формируем данные для ajax ответа
|
|
|
|
|
*/
|
2011-07-24 00:55:56 +03:00
|
|
|
|
foreach($aPhotos as $oPhoto) {
|
|
|
|
|
$aResult[] = array('id' => $oPhoto->getId(), 'path_thumb' => $oPhoto->getWebPath('50crop'), 'path' => $oPhoto->getWebPath(), 'description' => $oPhoto->getDescription());
|
|
|
|
|
}
|
|
|
|
|
$this->Viewer_AssignAjax('photos', $aResult);
|
|
|
|
|
}
|
|
|
|
|
$this->Viewer_AssignAjax('bHaveNext', count($aPhotos)==Config::Get('module.topic.photoset.per_page'));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* AJAX удаление фото
|
|
|
|
|
*
|
|
|
|
|
*/
|
|
|
|
|
protected function EventDeletePhoto() {
|
|
|
|
|
$this->Viewer_SetResponseAjax('json');
|
2011-08-28 21:49:01 +03:00
|
|
|
|
|
2011-07-24 00:55:56 +03:00
|
|
|
|
/**
|
|
|
|
|
* Проверяем авторизован ли юзер
|
|
|
|
|
*/
|
|
|
|
|
if (!$this->User_IsAuthorization()) {
|
|
|
|
|
$this->Message_AddErrorSingle($this->Lang_Get('not_access'),$this->Lang_Get('error'));
|
2011-08-28 21:49:01 +03:00
|
|
|
|
return Router::Action('error');
|
2011-07-24 00:55:56 +03:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$oPhoto = $this->Topic_getTopicPhotoById(getRequest('id'));
|
|
|
|
|
if ($oPhoto) {
|
|
|
|
|
if ($oPhoto->getTopicId()) {
|
|
|
|
|
// проверяем права на топик
|
|
|
|
|
if ($oTopic=$this->Topic_GetTopicById($oPhoto->getTopicId()) and $this->ACL_IsAllowEditTopic($oTopic,$this->oUserCurrent)) {
|
|
|
|
|
if ($oTopic->getPhotosetCount()>1) {
|
|
|
|
|
$this->Topic_deleteTopicPhoto($oPhoto);
|
|
|
|
|
/**
|
|
|
|
|
* Если удаляем главную фотку топика, то её необходимо сменить
|
|
|
|
|
*/
|
|
|
|
|
if ($oPhoto->getId()==$oTopic->getPhotosetMainPhotoId()) {
|
|
|
|
|
$aPhotos = $oTopic->getPhotosetPhotos(0,1);
|
|
|
|
|
$oTopic->setPhotosetMainPhotoId($aPhotos[0]->getId());
|
|
|
|
|
}
|
|
|
|
|
$oTopic->setPhotosetCount($oTopic->getPhotosetCount()-1);
|
|
|
|
|
$this->Topic_UpdateTopic($oTopic);
|
|
|
|
|
$this->Message_AddNotice($this->Lang_Get('topic_photoset_photo_deleted'), $this->Lang_Get('attention'));
|
|
|
|
|
} else {
|
|
|
|
|
$this->Message_AddError($this->Lang_Get('topic_photoset_photo_deleted_error_last'), $this->Lang_Get('error'));
|
|
|
|
|
}
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
$this->Topic_deleteTopicPhoto($oPhoto);
|
|
|
|
|
$this->Message_AddNotice($this->Lang_Get('topic_photoset_photo_deleted'), $this->Lang_Get('attention'));
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
$this->Message_AddError($this->Lang_Get('system_error'), $this->Lang_Get('error'));
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* AJAX установка описания фото
|
|
|
|
|
*
|
|
|
|
|
*/
|
|
|
|
|
protected function EventSetPhotoDescription() {
|
|
|
|
|
$this->Viewer_SetResponseAjax('json');
|
2011-08-28 21:49:01 +03:00
|
|
|
|
|
2011-07-24 00:55:56 +03:00
|
|
|
|
/**
|
|
|
|
|
* Проверяем авторизован ли юзер
|
|
|
|
|
*/
|
|
|
|
|
if (!$this->User_IsAuthorization()) {
|
|
|
|
|
$this->Message_AddErrorSingle($this->Lang_Get('not_access'),$this->Lang_Get('error'));
|
2011-08-28 21:49:01 +03:00
|
|
|
|
return Router::Action('error');
|
2011-07-24 00:55:56 +03:00
|
|
|
|
}
|
2011-08-28 21:49:01 +03:00
|
|
|
|
|
2011-07-24 00:55:56 +03:00
|
|
|
|
$oPhoto = $this->Topic_getTopicPhotoById(getRequest('id'));
|
|
|
|
|
if ($oPhoto) {
|
|
|
|
|
if ($oPhoto->getTopicId()) {
|
|
|
|
|
// проверяем права на топик
|
|
|
|
|
if ($oTopic=$this->Topic_GetTopicById($oPhoto->getTopicId()) and $this->ACL_IsAllowEditTopic($oTopic,$this->oUserCurrent)) {
|
2012-04-07 08:29:49 +03:00
|
|
|
|
$oPhoto->setDescription(htmlspecialchars(strip_tags(getRequest('text'))));
|
2011-07-24 00:55:56 +03:00
|
|
|
|
$this->Topic_updateTopicPhoto($oPhoto);
|
|
|
|
|
}
|
|
|
|
|
} else {
|
2012-04-07 08:29:49 +03:00
|
|
|
|
$oPhoto->setDescription(htmlspecialchars(strip_tags(getRequest('text'))));
|
2011-07-24 00:55:56 +03:00
|
|
|
|
$this->Topic_updateTopicPhoto($oPhoto);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2011-08-28 21:49:01 +03:00
|
|
|
|
|
2011-07-24 00:55:56 +03:00
|
|
|
|
/**
|
2012-04-07 08:29:49 +03:00
|
|
|
|
* AJAX загрузка фоток
|
|
|
|
|
*
|
|
|
|
|
* @return unknown
|
|
|
|
|
*/
|
2011-08-28 21:49:01 +03:00
|
|
|
|
protected function EventUpload() {
|
2011-07-24 00:55:56 +03:00
|
|
|
|
// В зависимости от типа загрузчика устанавливается тип ответа
|
|
|
|
|
if (getRequest('is_iframe')) {
|
|
|
|
|
$this->Viewer_SetResponseAjax('jsonIframe', false);
|
|
|
|
|
} else {
|
|
|
|
|
$this->Viewer_SetResponseAjax('json');
|
|
|
|
|
}
|
2011-08-28 21:49:01 +03:00
|
|
|
|
|
2011-07-24 00:55:56 +03:00
|
|
|
|
/**
|
|
|
|
|
* Проверяем авторизован ли юзер
|
|
|
|
|
*/
|
|
|
|
|
if (!$this->User_IsAuthorization()) {
|
|
|
|
|
$this->Message_AddErrorSingle($this->Lang_Get('not_access'),$this->Lang_Get('error'));
|
2011-08-28 21:49:01 +03:00
|
|
|
|
return Router::Action('error');
|
2011-07-24 00:55:56 +03:00
|
|
|
|
}
|
2011-08-28 21:49:01 +03:00
|
|
|
|
|
2011-07-24 00:55:56 +03:00
|
|
|
|
if (!isset($_FILES['Filedata']['tmp_name'])) {
|
|
|
|
|
$this->Message_AddError($this->Lang_Get('system_error'), $this->Lang_Get('error'));
|
|
|
|
|
return false;
|
|
|
|
|
}
|
2011-08-28 21:49:01 +03:00
|
|
|
|
|
2011-07-24 00:55:56 +03:00
|
|
|
|
$iTopicId = getRequest('topic_id');
|
|
|
|
|
$sTargetId = null;
|
|
|
|
|
$iCountPhotos = 0;
|
|
|
|
|
// Если от сервера не пришёл id топика, то пытаемся определить временный код для нового топика. Если и его нет. то это ошибка
|
|
|
|
|
if (!$iTopicId) {
|
|
|
|
|
$sTargetId = empty($_COOKIE['ls_photoset_target_tmp']) ? getRequest('ls_photoset_target_tmp') : $_COOKIE['ls_photoset_target_tmp'];
|
|
|
|
|
if (!$sTargetId) {
|
|
|
|
|
$this->Message_AddError($this->Lang_Get('system_error'), $this->Lang_Get('error'));
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
$iCountPhotos = $this->Topic_getCountPhotosByTargetTmp($sTargetId);
|
|
|
|
|
} else {
|
2011-08-28 21:49:01 +03:00
|
|
|
|
/**
|
|
|
|
|
* Загрузка фото к уже существующему топику
|
|
|
|
|
*/
|
2011-07-24 00:55:56 +03:00
|
|
|
|
$oTopic = $this->Topic_getTopicById($iTopicId);
|
|
|
|
|
if (!$oTopic or !$this->ACL_IsAllowEditTopic($oTopic,$this->oUserCurrent)) {
|
|
|
|
|
$this->Message_AddError($this->Lang_Get('system_error'), $this->Lang_Get('error'));
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
$iCountPhotos = $this->Topic_getCountPhotosByTopicId($iTopicId);
|
|
|
|
|
}
|
2011-08-28 21:49:01 +03:00
|
|
|
|
/**
|
|
|
|
|
* Максимальное количество фото в топике
|
|
|
|
|
*/
|
2011-07-24 00:55:56 +03:00
|
|
|
|
if ($iCountPhotos >= Config::Get('module.topic.photoset.count_photos_max')) {
|
|
|
|
|
$this->Message_AddError($this->Lang_Get('topic_photoset_error_too_much_photos', array('MAX' => Config::Get('module.topic.photoset.count_photos_max'))), $this->Lang_Get('error'));
|
|
|
|
|
return false;
|
|
|
|
|
}
|
2011-08-28 21:49:01 +03:00
|
|
|
|
/**
|
|
|
|
|
* Максимальный размер фото
|
|
|
|
|
*/
|
2011-07-24 00:55:56 +03:00
|
|
|
|
if (filesize($_FILES['Filedata']['tmp_name']) > Config::Get('module.topic.photoset.photo_max_size')*1024) {
|
|
|
|
|
$this->Message_AddError($this->Lang_Get('topic_photoset_error_bad_filesize', array('MAX' => Config::Get('module.topic.photoset.photo_max_size'))), $this->Lang_Get('error'));
|
|
|
|
|
return false;
|
|
|
|
|
}
|
2011-08-28 21:49:01 +03:00
|
|
|
|
/**
|
|
|
|
|
* Загружаем файл
|
|
|
|
|
*/
|
2011-07-24 00:55:56 +03:00
|
|
|
|
$sFile = $this->Topic_UploadTopicPhoto($_FILES['Filedata']);
|
|
|
|
|
if ($sFile) {
|
2011-08-28 21:49:01 +03:00
|
|
|
|
/**
|
|
|
|
|
* Создаем фото
|
|
|
|
|
*/
|
2011-07-24 00:55:56 +03:00
|
|
|
|
$oPhoto = Engine::GetEntity('Topic_TopicPhoto');
|
|
|
|
|
$oPhoto->setPath($sFile);
|
|
|
|
|
if ($iTopicId) {
|
|
|
|
|
$oPhoto->setTopicId($iTopicId);
|
|
|
|
|
} else {
|
|
|
|
|
$oPhoto->setTargetTmp($sTargetId);
|
|
|
|
|
}
|
|
|
|
|
if ($oPhoto = $this->Topic_addTopicPhoto($oPhoto)) {
|
|
|
|
|
// если редактируем топик, то обновляем число фоток в нём
|
|
|
|
|
if (isset($oTopic)) {
|
|
|
|
|
$oTopic->setPhotosetCount($oTopic->getPhotosetCount()+1);
|
|
|
|
|
$this->Topic_UpdateTopic($oTopic);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$this->Viewer_AssignAjax('file', $oPhoto->getWebPath('100crop'));
|
|
|
|
|
$this->Viewer_AssignAjax('id', $oPhoto->getId());
|
|
|
|
|
$this->Message_AddNotice($this->Lang_Get('topic_photoset_photo_added'), $this->Lang_Get('attention'));
|
|
|
|
|
} else {
|
|
|
|
|
$this->Message_AddError($this->Lang_Get('system_error'), $this->Lang_Get('error'));
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
$this->Message_AddError($this->Lang_Get('system_error'), $this->Lang_Get('error'));
|
|
|
|
|
}
|
|
|
|
|
}
|
2011-08-28 21:49:01 +03:00
|
|
|
|
|
2011-07-20 00:32:36 +03:00
|
|
|
|
/**
|
2012-04-07 08:29:49 +03:00
|
|
|
|
* Редактирование
|
2011-07-20 00:32:36 +03:00
|
|
|
|
*
|
|
|
|
|
* @return unknown
|
|
|
|
|
*/
|
|
|
|
|
protected function EventEdit() {
|
2011-07-24 00:55:56 +03:00
|
|
|
|
/**
|
|
|
|
|
* Проверяем авторизован ли юзер
|
|
|
|
|
*/
|
|
|
|
|
if (!$this->User_IsAuthorization()) {
|
|
|
|
|
$this->Message_AddErrorSingle($this->Lang_Get('not_access'),$this->Lang_Get('error'));
|
2011-08-28 21:49:01 +03:00
|
|
|
|
return Router::Action('error');
|
2011-07-24 00:55:56 +03:00
|
|
|
|
}
|
2011-07-20 00:32:36 +03:00
|
|
|
|
/**
|
|
|
|
|
* Меню
|
|
|
|
|
*/
|
|
|
|
|
$this->sMenuSubItemSelect='';
|
|
|
|
|
$this->sMenuItemSelect='photoset';
|
|
|
|
|
/**
|
|
|
|
|
* Получаем номер топика из УРЛ и проверяем существует ли он
|
|
|
|
|
*/
|
|
|
|
|
$sTopicId=$this->GetParam(0);
|
|
|
|
|
if (!($oTopic=$this->Topic_GetTopicById($sTopicId))) {
|
|
|
|
|
return parent::EventNotFound();
|
|
|
|
|
}
|
2011-08-08 10:01:18 +03:00
|
|
|
|
/**
|
|
|
|
|
* Проверяем тип топика
|
|
|
|
|
*/
|
|
|
|
|
if ($oTopic->getType()!='photoset') {
|
|
|
|
|
return parent::EventNotFound();
|
|
|
|
|
}
|
2011-07-20 00:32:36 +03:00
|
|
|
|
/**
|
|
|
|
|
* Если права на редактирование
|
2012-04-07 08:29:49 +03:00
|
|
|
|
*/
|
2011-07-20 00:32:36 +03:00
|
|
|
|
if (!$this->ACL_IsAllowEditTopic($oTopic,$this->oUserCurrent)) {
|
|
|
|
|
return parent::EventNotFound();
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* Вызов хуков
|
|
|
|
|
*/
|
|
|
|
|
$this->Hook_Run('topic_edit_show',array('oTopic'=>$oTopic));
|
|
|
|
|
/**
|
|
|
|
|
* Загружаем переменные в шаблон
|
|
|
|
|
*/
|
|
|
|
|
$this->Viewer_Assign('aBlogsAllow',$this->Blog_GetBlogsAllowByUser($this->oUserCurrent));
|
|
|
|
|
$this->Viewer_AddHtmlTitle($this->Lang_Get('topic_photoset_title_edit'));
|
|
|
|
|
/**
|
|
|
|
|
* Устанавливаем шаблон вывода
|
|
|
|
|
*/
|
2011-08-28 21:49:01 +03:00
|
|
|
|
$this->SetTemplateAction('add');
|
2012-01-08 04:34:45 +02:00
|
|
|
|
|
|
|
|
|
if (!is_numeric(getRequest('topic_id'))) {
|
|
|
|
|
$_REQUEST['topic_id']='';
|
|
|
|
|
}
|
2011-07-20 00:32:36 +03:00
|
|
|
|
/**
|
|
|
|
|
* Проверяем отправлена ли форма с данными(хотяб одна кнопка)
|
2012-04-07 08:29:49 +03:00
|
|
|
|
*/
|
2011-07-20 00:32:36 +03:00
|
|
|
|
if (isset($_REQUEST['submit_topic_publish']) or isset($_REQUEST['submit_topic_save'])) {
|
|
|
|
|
/**
|
2012-04-07 08:29:49 +03:00
|
|
|
|
* Обрабатываем отправку формы
|
|
|
|
|
*/
|
2011-07-20 00:32:36 +03:00
|
|
|
|
return $this->SubmitEdit($oTopic);
|
|
|
|
|
} else {
|
|
|
|
|
/**
|
2012-04-07 08:29:49 +03:00
|
|
|
|
* Заполняем поля формы для редактирования
|
|
|
|
|
* Только перед отправкой формы!
|
|
|
|
|
*/
|
2011-08-28 21:49:01 +03:00
|
|
|
|
$_REQUEST['topic_title']=$oTopic->getTitle();
|
2011-07-20 00:32:36 +03:00
|
|
|
|
$_REQUEST['topic_text']=$oTopic->getTextSource();
|
|
|
|
|
$_REQUEST['topic_tags']=$oTopic->getTags();
|
|
|
|
|
$_REQUEST['blog_id']=$oTopic->getBlogId();
|
|
|
|
|
$_REQUEST['topic_id']=$oTopic->getId();
|
|
|
|
|
$_REQUEST['topic_publish_index']=$oTopic->getPublishIndex();
|
|
|
|
|
$_REQUEST['topic_forbid_comment']=$oTopic->getForbidComment();
|
2011-07-24 00:55:56 +03:00
|
|
|
|
$_REQUEST['topic_main_photo']=$oTopic->getPhotosetMainPhotoId();
|
2011-08-28 21:49:01 +03:00
|
|
|
|
}
|
2011-07-24 00:55:56 +03:00
|
|
|
|
$this->Viewer_Assign('aPhotos', $this->Topic_getPhotosByTopicId($oTopic->getId()));
|
2011-07-20 00:32:36 +03:00
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* Добавление ссылки
|
|
|
|
|
*
|
|
|
|
|
* @return unknown
|
|
|
|
|
*/
|
|
|
|
|
protected function EventAdd() {
|
2011-07-24 00:55:56 +03:00
|
|
|
|
/**
|
|
|
|
|
* Проверяем авторизован ли юзер
|
|
|
|
|
*/
|
|
|
|
|
if (!$this->User_IsAuthorization()) {
|
|
|
|
|
$this->Message_AddErrorSingle($this->Lang_Get('not_access'),$this->Lang_Get('error'));
|
2011-08-28 21:49:01 +03:00
|
|
|
|
return Router::Action('error');
|
2011-07-24 00:55:56 +03:00
|
|
|
|
}
|
2011-07-20 00:32:36 +03:00
|
|
|
|
/**
|
|
|
|
|
* Меню
|
|
|
|
|
*/
|
|
|
|
|
$this->sMenuSubItemSelect='add';
|
2012-04-09 17:36:41 +03:00
|
|
|
|
/**
|
|
|
|
|
* Вызов хуков
|
|
|
|
|
*/
|
|
|
|
|
$this->Hook_Run('topic_add_show');
|
2011-07-20 00:32:36 +03:00
|
|
|
|
/**
|
|
|
|
|
* Загружаем переменные в шаблон
|
|
|
|
|
*/
|
2011-07-24 00:55:56 +03:00
|
|
|
|
$this->Viewer_Assign('aBlogsAllow',$this->Blog_GetBlogsAllowByUser($this->oUserCurrent));
|
2011-07-20 00:32:36 +03:00
|
|
|
|
$this->Viewer_AddHtmlTitle($this->Lang_Get('topic_photoset_title_create'));
|
2011-08-28 21:49:01 +03:00
|
|
|
|
|
2012-01-08 04:34:45 +02:00
|
|
|
|
if (!is_numeric(getRequest('topic_id'))) {
|
|
|
|
|
$_REQUEST['topic_id']='';
|
|
|
|
|
}
|
|
|
|
|
|
2011-07-24 00:55:56 +03:00
|
|
|
|
// Если нет временного ключа для нового топика, то генерируеи. если есть, то загружаем фото по этому ключу
|
|
|
|
|
if (empty($_COOKIE['ls_photoset_target_tmp'])) {
|
2011-08-10 11:51:40 +03:00
|
|
|
|
setcookie('ls_photoset_target_tmp', func_generator(), time()+24*3600,Config::Get('sys.cookie.path'),Config::Get('sys.cookie.host'));
|
2011-07-24 00:55:56 +03:00
|
|
|
|
} else {
|
2011-08-10 11:51:40 +03:00
|
|
|
|
setcookie('ls_photoset_target_tmp', $_COOKIE['ls_photoset_target_tmp'], time()+24*3600,Config::Get('sys.cookie.path'),Config::Get('sys.cookie.host'));
|
2011-07-24 00:55:56 +03:00
|
|
|
|
$this->Viewer_Assign('aPhotos', $this->Topic_getPhotosByTargetTmp($_COOKIE['ls_photoset_target_tmp']));
|
|
|
|
|
}
|
2011-07-20 00:32:36 +03:00
|
|
|
|
/**
|
|
|
|
|
* Обрабатываем отправку формы
|
|
|
|
|
*/
|
2011-07-24 00:55:56 +03:00
|
|
|
|
return $this->SubmitAdd();
|
2011-07-20 00:32:36 +03:00
|
|
|
|
}
|
2011-08-28 21:49:01 +03:00
|
|
|
|
|
2011-07-20 00:32:36 +03:00
|
|
|
|
/**
|
|
|
|
|
* Обработка добавлени топика
|
|
|
|
|
*
|
|
|
|
|
* @return unknown
|
|
|
|
|
*/
|
|
|
|
|
protected function SubmitAdd() {
|
|
|
|
|
/**
|
|
|
|
|
* Проверяем отправлена ли форма с данными(хотяб одна кнопка)
|
2012-04-07 08:29:49 +03:00
|
|
|
|
*/
|
2011-07-20 00:32:36 +03:00
|
|
|
|
if (!isPost('submit_topic_publish') and !isPost('submit_topic_save')) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
2012-04-07 08:29:49 +03:00
|
|
|
|
$oTopic=Engine::GetEntity('Topic');
|
|
|
|
|
$oTopic->_setValidateScenario('photoset');
|
|
|
|
|
/**
|
|
|
|
|
* Заполняем поля для валидации
|
|
|
|
|
*/
|
|
|
|
|
$oTopic->setBlogId(getRequest('blog_id'));
|
|
|
|
|
$oTopic->setTitle(strip_tags(getRequest('topic_title')));
|
|
|
|
|
$oTopic->setTextSource(getRequest('topic_text'));
|
|
|
|
|
$oTopic->setTags(getRequest('topic_tags'));
|
|
|
|
|
$oTopic->setUserId($this->oUserCurrent->getId());
|
|
|
|
|
$oTopic->setType('photoset');
|
|
|
|
|
$oTopic->setDateAdd(date("Y-m-d H:i:s"));
|
|
|
|
|
$oTopic->setUserIp(func_getIp());
|
2011-07-20 00:32:36 +03:00
|
|
|
|
/**
|
|
|
|
|
* Проверка корректности полей формы
|
|
|
|
|
*/
|
2012-04-07 08:29:49 +03:00
|
|
|
|
if (!$this->checkTopicFields($oTopic)) {
|
2011-08-28 21:49:01 +03:00
|
|
|
|
return false;
|
|
|
|
|
}
|
2011-07-20 00:32:36 +03:00
|
|
|
|
/**
|
|
|
|
|
* Определяем в какой блог делаем запись
|
|
|
|
|
*/
|
2012-04-07 08:29:49 +03:00
|
|
|
|
$iBlogId=$oTopic->getBlogId();
|
2011-07-20 00:32:36 +03:00
|
|
|
|
if ($iBlogId==0) {
|
|
|
|
|
$oBlog=$this->Blog_GetPersonalBlogByUserId($this->oUserCurrent->getId());
|
|
|
|
|
} else {
|
|
|
|
|
$oBlog=$this->Blog_GetBlogById($iBlogId);
|
2011-08-28 21:49:01 +03:00
|
|
|
|
}
|
2011-07-20 00:32:36 +03:00
|
|
|
|
/**
|
|
|
|
|
* Если блог не определен выдаем предупреждение
|
|
|
|
|
*/
|
|
|
|
|
if (!$oBlog) {
|
|
|
|
|
$this->Message_AddErrorSingle($this->Lang_Get('topic_create_blog_error_unknown'),$this->Lang_Get('error'));
|
|
|
|
|
return false;
|
2011-08-28 21:49:01 +03:00
|
|
|
|
}
|
2011-07-20 00:32:36 +03:00
|
|
|
|
/**
|
|
|
|
|
* Проверяем права на постинг в блог
|
|
|
|
|
*/
|
|
|
|
|
if (!$this->ACL_IsAllowBlog($oBlog,$this->oUserCurrent)) {
|
|
|
|
|
$this->Message_AddErrorSingle($this->Lang_Get('topic_create_blog_error_noallow'),$this->Lang_Get('error'));
|
|
|
|
|
return false;
|
2011-08-28 21:49:01 +03:00
|
|
|
|
}
|
2011-07-20 00:32:36 +03:00
|
|
|
|
/**
|
|
|
|
|
* Проверяем разрешено ли постить топик по времени
|
|
|
|
|
*/
|
2011-08-28 21:49:01 +03:00
|
|
|
|
if (isPost('submit_topic_publish') and !$this->ACL_CanPostTopicTime($this->oUserCurrent)) {
|
2011-07-20 00:32:36 +03:00
|
|
|
|
$this->Message_AddErrorSingle($this->Lang_Get('topic_time_limit'),$this->Lang_Get('error'));
|
|
|
|
|
return;
|
2011-08-28 21:49:01 +03:00
|
|
|
|
}
|
2011-07-20 00:32:36 +03:00
|
|
|
|
/**
|
|
|
|
|
* Теперь можно смело добавлять топик к блогу
|
|
|
|
|
*/
|
|
|
|
|
$oTopic->setBlogId($oBlog->getId());
|
2011-08-14 13:00:58 +03:00
|
|
|
|
/**
|
|
|
|
|
* Получаемый и устанавливаем разрезанный текст по тегу <cut>
|
|
|
|
|
*/
|
2012-04-07 08:29:49 +03:00
|
|
|
|
list($sTextShort,$sTextNew,$sTextCut) = $this->Text_Cut($oTopic->getTextSource());
|
2011-08-14 13:00:58 +03:00
|
|
|
|
$oTopic->setCutText($sTextCut);
|
|
|
|
|
$oTopic->setText($this->Text_Parser($sTextNew));
|
|
|
|
|
$oTopic->setTextShort($this->Text_Parser($sTextShort));
|
2011-08-28 21:49:01 +03:00
|
|
|
|
|
2011-07-24 00:55:56 +03:00
|
|
|
|
$sTargetTmp=$_COOKIE['ls_photoset_target_tmp'];
|
|
|
|
|
$aPhotos = $this->Topic_getPhotosByTargetTmp($sTargetTmp);
|
|
|
|
|
if (!($oPhotoMain=$this->Topic_getTopicPhotoById(getRequest('topic_main_photo')) and $oPhotoMain->getTargetTmp()==$sTargetTmp)) {
|
|
|
|
|
$oPhotoMain=$aPhotos[0];
|
|
|
|
|
}
|
|
|
|
|
$oTopic->setPhotosetMainPhotoId($oPhotoMain->getId());
|
|
|
|
|
$oTopic->setPhotosetCount(count($aPhotos));
|
|
|
|
|
|
2011-07-20 00:32:36 +03:00
|
|
|
|
/**
|
|
|
|
|
* Публикуем или сохраняем
|
|
|
|
|
*/
|
|
|
|
|
if (isset($_REQUEST['submit_topic_publish'])) {
|
|
|
|
|
$oTopic->setPublish(1);
|
|
|
|
|
$oTopic->setPublishDraft(1);
|
|
|
|
|
} else {
|
|
|
|
|
$oTopic->setPublish(0);
|
|
|
|
|
$oTopic->setPublishDraft(0);
|
2011-08-28 21:49:01 +03:00
|
|
|
|
}
|
2011-07-20 00:32:36 +03:00
|
|
|
|
/**
|
|
|
|
|
* Принудительный вывод на главную
|
|
|
|
|
*/
|
|
|
|
|
$oTopic->setPublishIndex(0);
|
2011-09-27 12:11:13 +03:00
|
|
|
|
if ($this->ACL_IsAllowPublishIndex($this->oUserCurrent)) {
|
2011-07-20 00:32:36 +03:00
|
|
|
|
if (getRequest('topic_publish_index')) {
|
|
|
|
|
$oTopic->setPublishIndex(1);
|
2011-08-28 21:49:01 +03:00
|
|
|
|
}
|
|
|
|
|
}
|
2011-07-20 00:32:36 +03:00
|
|
|
|
/**
|
|
|
|
|
* Запрет на комментарии к топику
|
|
|
|
|
*/
|
|
|
|
|
$oTopic->setForbidComment(0);
|
|
|
|
|
if (getRequest('topic_forbid_comment')) {
|
|
|
|
|
$oTopic->setForbidComment(1);
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* Запускаем выполнение хуков
|
|
|
|
|
*/
|
|
|
|
|
$this->Hook_Run('topic_add_before', array('oTopic'=>$oTopic,'oBlog'=>$oBlog));
|
|
|
|
|
/**
|
|
|
|
|
* Добавляем топик
|
|
|
|
|
*/
|
|
|
|
|
if ($this->Topic_AddTopic($oTopic)) {
|
|
|
|
|
$this->Hook_Run('topic_add_after', array('oTopic'=>$oTopic,'oBlog'=>$oBlog));
|
|
|
|
|
/**
|
|
|
|
|
* Получаем топик, чтоб подцепить связанные данные
|
|
|
|
|
*/
|
|
|
|
|
$oTopic=$this->Topic_GetTopicById($oTopic->getId());
|
2012-03-10 09:02:55 +02:00
|
|
|
|
/**
|
|
|
|
|
* Обновляем количество топиков в блоге
|
|
|
|
|
*/
|
|
|
|
|
$this->Blog_RecalculateCountTopicByBlogId($oTopic->getBlogId());
|
2012-03-10 15:40:59 +02:00
|
|
|
|
/**
|
|
|
|
|
* Добавляем автора топика в подписчики на новые комментарии к этому топику
|
|
|
|
|
*/
|
|
|
|
|
$this->Subscribe_AddSubscribeSimple('topic_new_comment',$oTopic->getId(),$this->oUserCurrent->getMail());
|
2012-04-07 08:29:49 +03:00
|
|
|
|
/**
|
|
|
|
|
* Делаем рассылку спама всем, кто состоит в этом блоге
|
|
|
|
|
*/
|
2011-07-20 00:32:36 +03:00
|
|
|
|
if ($oTopic->getPublish()==1 and $oBlog->getType()!='personal') {
|
|
|
|
|
$this->Topic_SendNotifyTopicNew($oBlog,$oTopic,$this->oUserCurrent);
|
|
|
|
|
}
|
2011-07-22 18:07:41 +03:00
|
|
|
|
/**
|
2011-07-24 00:55:56 +03:00
|
|
|
|
* Привязываем фото к id топика
|
|
|
|
|
* здесь нужно это делать одним запросом, а не перебором сущностей
|
|
|
|
|
*/
|
|
|
|
|
if (count($aPhotos)) {
|
|
|
|
|
foreach($aPhotos as $oPhoto) {
|
|
|
|
|
$oPhoto->setTargetTmp(null);
|
|
|
|
|
$oPhoto->setTopicId($oTopic->getId());
|
|
|
|
|
$this->Topic_updateTopicPhoto($oPhoto);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* Удаляем временную куку
|
|
|
|
|
*/
|
|
|
|
|
setcookie('ls_photoset_target_tmp', null);
|
|
|
|
|
/**
|
2012-04-07 08:29:49 +03:00
|
|
|
|
* Добавляем событие в ленту
|
|
|
|
|
*/
|
|
|
|
|
$this->Stream_write($oTopic->getUserId(), 'add_topic', $oTopic->getId(),$oTopic->getPublish() && $oBlog->getType()!='close');
|
2011-07-20 00:32:36 +03:00
|
|
|
|
Router::Location($oTopic->getUrl());
|
|
|
|
|
} else {
|
|
|
|
|
$this->Message_AddErrorSingle($this->Lang_Get('system_error'));
|
|
|
|
|
return Router::Action('error');
|
2011-08-28 21:49:01 +03:00
|
|
|
|
}
|
2011-07-20 00:32:36 +03:00
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* Обработка редактирования топика
|
|
|
|
|
*
|
|
|
|
|
* @param unknown_type $oTopic
|
|
|
|
|
* @return unknown
|
|
|
|
|
*/
|
2011-08-28 21:49:01 +03:00
|
|
|
|
protected function SubmitEdit($oTopic) {
|
2012-04-07 08:29:49 +03:00
|
|
|
|
$oTopic->_setValidateScenario('photoset');
|
|
|
|
|
/**
|
|
|
|
|
* Сохраняем старое значение идентификатора блога
|
|
|
|
|
*/
|
|
|
|
|
$sBlogIdOld = $oTopic->getBlogId();
|
|
|
|
|
/**
|
|
|
|
|
* Заполняем поля для валидации
|
|
|
|
|
*/
|
|
|
|
|
$oTopic->setBlogId(getRequest('blog_id'));
|
|
|
|
|
$oTopic->setTitle(strip_tags(getRequest('topic_title')));
|
|
|
|
|
$oTopic->setTextSource(getRequest('topic_text'));
|
|
|
|
|
$oTopic->setTags(getRequest('topic_tags'));
|
|
|
|
|
$oTopic->setUserIp(func_getIp());
|
2011-07-20 00:32:36 +03:00
|
|
|
|
/**
|
|
|
|
|
* Проверка корректности полей формы
|
|
|
|
|
*/
|
|
|
|
|
if (!$this->checkTopicFields($oTopic)) {
|
2011-08-28 21:49:01 +03:00
|
|
|
|
return false;
|
|
|
|
|
}
|
2011-07-20 00:32:36 +03:00
|
|
|
|
/**
|
|
|
|
|
* Определяем в какой блог делаем запись
|
|
|
|
|
*/
|
2012-04-07 08:29:49 +03:00
|
|
|
|
$iBlogId=$oTopic->getBlogId();
|
2011-07-20 00:32:36 +03:00
|
|
|
|
if ($iBlogId==0) {
|
|
|
|
|
$oBlog=$this->Blog_GetPersonalBlogByUserId($oTopic->getUserId());
|
|
|
|
|
} else {
|
|
|
|
|
$oBlog=$this->Blog_GetBlogById($iBlogId);
|
2011-08-28 21:49:01 +03:00
|
|
|
|
}
|
2011-07-20 00:32:36 +03:00
|
|
|
|
/**
|
|
|
|
|
* Если блог не определен выдаем предупреждение
|
|
|
|
|
*/
|
|
|
|
|
if (!$oBlog) {
|
|
|
|
|
$this->Message_AddErrorSingle($this->Lang_Get('topic_create_blog_error_unknown'),$this->Lang_Get('error'));
|
|
|
|
|
return false;
|
2011-08-28 21:49:01 +03:00
|
|
|
|
}
|
2011-07-20 00:32:36 +03:00
|
|
|
|
/**
|
|
|
|
|
* Проверяем права на постинг в блог
|
|
|
|
|
*/
|
|
|
|
|
if (!$this->ACL_IsAllowBlog($oBlog,$this->oUserCurrent)) {
|
|
|
|
|
$this->Message_AddErrorSingle($this->Lang_Get('topic_create_blog_error_noallow'),$this->Lang_Get('error'));
|
|
|
|
|
return false;
|
2011-08-28 21:49:01 +03:00
|
|
|
|
}
|
2011-07-20 00:32:36 +03:00
|
|
|
|
/**
|
|
|
|
|
* Проверяем разрешено ли постить топик по времени
|
|
|
|
|
*/
|
2011-08-28 21:49:01 +03:00
|
|
|
|
if (isPost('submit_topic_publish') and !$oTopic->getPublishDraft() and !$this->ACL_CanPostTopicTime($this->oUserCurrent)) {
|
2011-07-20 00:32:36 +03:00
|
|
|
|
$this->Message_AddErrorSingle($this->Lang_Get('topic_time_limit'),$this->Lang_Get('error'));
|
|
|
|
|
return;
|
2011-08-28 21:49:01 +03:00
|
|
|
|
}
|
2012-04-07 08:29:49 +03:00
|
|
|
|
|
2011-07-20 00:32:36 +03:00
|
|
|
|
/**
|
|
|
|
|
* Теперь можно смело редактировать топик
|
2012-04-07 08:29:49 +03:00
|
|
|
|
*/
|
2011-08-28 21:49:01 +03:00
|
|
|
|
$oTopic->setBlogId($oBlog->getId());
|
2011-08-14 13:00:58 +03:00
|
|
|
|
/**
|
|
|
|
|
* Получаемый и устанавливаем разрезанный текст по тегу <cut>
|
|
|
|
|
*/
|
2012-04-07 08:29:49 +03:00
|
|
|
|
list($sTextShort,$sTextNew,$sTextCut) = $this->Text_Cut($oTopic->getTextSource());
|
2011-08-14 13:00:58 +03:00
|
|
|
|
$oTopic->setCutText($sTextCut);
|
|
|
|
|
$oTopic->setText($this->Text_Parser($sTextNew));
|
|
|
|
|
$oTopic->setTextShort($this->Text_Parser($sTextShort));
|
2011-08-28 21:49:01 +03:00
|
|
|
|
|
2011-07-24 00:55:56 +03:00
|
|
|
|
$aPhotos = $oTopic->getPhotosetPhotos();
|
|
|
|
|
if (!($oPhotoMain=$this->Topic_getTopicPhotoById(getRequest('topic_main_photo')) and $oPhotoMain->getTopicId()==$oTopic->getId())) {
|
|
|
|
|
$oPhotoMain=$aPhotos[0];
|
|
|
|
|
}
|
|
|
|
|
$oTopic->setPhotosetMainPhotoId($oPhotoMain->getId());
|
|
|
|
|
$oTopic->setPhotosetCount(count($aPhotos));
|
2011-07-20 00:32:36 +03:00
|
|
|
|
/**
|
|
|
|
|
* Публикуем или сохраняем в черновиках
|
|
|
|
|
*/
|
|
|
|
|
$bSendNotify=false;
|
|
|
|
|
if (isset($_REQUEST['submit_topic_publish'])) {
|
|
|
|
|
$oTopic->setPublish(1);
|
|
|
|
|
if ($oTopic->getPublishDraft()==0) {
|
|
|
|
|
$oTopic->setPublishDraft(1);
|
|
|
|
|
$oTopic->setDateAdd(date("Y-m-d H:i:s"));
|
|
|
|
|
$bSendNotify=true;
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
$oTopic->setPublish(0);
|
2011-08-28 21:49:01 +03:00
|
|
|
|
}
|
2011-07-20 00:32:36 +03:00
|
|
|
|
/**
|
|
|
|
|
* Принудительный вывод на главную
|
|
|
|
|
*/
|
2011-09-27 12:11:13 +03:00
|
|
|
|
if ($this->ACL_IsAllowPublishIndex($this->oUserCurrent)) {
|
2011-07-20 00:32:36 +03:00
|
|
|
|
if (getRequest('topic_publish_index')) {
|
|
|
|
|
$oTopic->setPublishIndex(1);
|
|
|
|
|
} else {
|
|
|
|
|
$oTopic->setPublishIndex(0);
|
|
|
|
|
}
|
2011-08-28 21:49:01 +03:00
|
|
|
|
}
|
2011-07-20 00:32:36 +03:00
|
|
|
|
/**
|
|
|
|
|
* Запрет на комментарии к топику
|
|
|
|
|
*/
|
|
|
|
|
$oTopic->setForbidComment(0);
|
|
|
|
|
if (getRequest('topic_forbid_comment')) {
|
|
|
|
|
$oTopic->setForbidComment(1);
|
|
|
|
|
}
|
|
|
|
|
$this->Hook_Run('topic_edit_before', array('oTopic'=>$oTopic,'oBlog'=>$oBlog));
|
|
|
|
|
/**
|
|
|
|
|
* Сохраняем топик
|
|
|
|
|
*/
|
2011-08-28 21:49:01 +03:00
|
|
|
|
if ($this->Topic_UpdateTopic($oTopic)) {
|
2011-07-20 00:32:36 +03:00
|
|
|
|
$this->Hook_Run('topic_edit_after', array('oTopic'=>$oTopic,'oBlog'=>$oBlog,'bSendNotify'=>&$bSendNotify));
|
|
|
|
|
/**
|
2012-03-10 09:02:55 +02:00
|
|
|
|
* Обновляем данные в комментариях, если топик был перенесен в новый блог
|
|
|
|
|
*/
|
|
|
|
|
if($sBlogIdOld!=$oTopic->getBlogId()) {
|
|
|
|
|
$this->Comment_UpdateTargetParentByTargetId($oTopic->getBlogId(), 'topic', $oTopic->getId());
|
|
|
|
|
$this->Comment_UpdateTargetParentByTargetIdOnline($oTopic->getBlogId(), 'topic', $oTopic->getId());
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* Обновляем количество топиков в блоге
|
|
|
|
|
*/
|
|
|
|
|
if ($sBlogIdOld!=$oTopic->getBlogId()) {
|
|
|
|
|
$this->Blog_RecalculateCountTopicByBlogId($sBlogIdOld);
|
|
|
|
|
}
|
|
|
|
|
$this->Blog_RecalculateCountTopicByBlogId($oTopic->getBlogId());
|
|
|
|
|
/**
|
2012-04-07 08:29:49 +03:00
|
|
|
|
* Добавляем событие в ленту
|
|
|
|
|
*/
|
|
|
|
|
$this->Stream_write($oTopic->getUserId(), 'add_topic', $oTopic->getId(),$oTopic->getPublish() && $oBlog->getType()!='close');
|
2011-09-16 14:50:45 +03:00
|
|
|
|
/**
|
2011-07-20 00:32:36 +03:00
|
|
|
|
* Рассылаем о новом топике подписчикам блога
|
|
|
|
|
*/
|
|
|
|
|
if ($bSendNotify) {
|
|
|
|
|
$this->Topic_SendNotifyTopicNew($oBlog,$oTopic,$this->oUserCurrent);
|
2011-08-28 21:49:01 +03:00
|
|
|
|
}
|
2011-07-20 00:32:36 +03:00
|
|
|
|
if (!$oTopic->getPublish() and !$this->oUserCurrent->isAdministrator() and $this->oUserCurrent->getId()!=$oTopic->getUserId()) {
|
|
|
|
|
Router::Location($oBlog->getUrlFull());
|
|
|
|
|
}
|
|
|
|
|
Router::Location($oTopic->getUrl());
|
|
|
|
|
} else {
|
|
|
|
|
$this->Message_AddErrorSingle($this->Lang_Get('system_error'));
|
|
|
|
|
return Router::Action('error');
|
2011-08-28 21:49:01 +03:00
|
|
|
|
}
|
2011-07-20 00:32:36 +03:00
|
|
|
|
}
|
|
|
|
|
/**
|
2012-04-07 08:29:49 +03:00
|
|
|
|
* Проверка полей формы
|
2011-07-20 00:32:36 +03:00
|
|
|
|
*
|
2012-04-07 08:29:49 +03:00
|
|
|
|
* @return bool
|
2011-07-20 00:32:36 +03:00
|
|
|
|
*/
|
2012-04-07 08:29:49 +03:00
|
|
|
|
protected function checkTopicFields($oTopic) {
|
2011-07-20 00:32:36 +03:00
|
|
|
|
$this->Security_ValidateSendForm();
|
2011-08-28 21:49:01 +03:00
|
|
|
|
|
2011-07-20 00:32:36 +03:00
|
|
|
|
$bOk=true;
|
2012-04-07 08:29:49 +03:00
|
|
|
|
if (!$oTopic->_Validate()) {
|
|
|
|
|
$this->Message_AddError($oTopic->_getValidateError(),$this->Lang_Get('error'));
|
2011-07-20 00:32:36 +03:00
|
|
|
|
$bOk=false;
|
|
|
|
|
}
|
2011-08-28 21:49:01 +03:00
|
|
|
|
|
2011-07-24 00:55:56 +03:00
|
|
|
|
$sTargetId = null;
|
|
|
|
|
$iCountPhotos = 0;
|
2012-04-07 08:29:49 +03:00
|
|
|
|
if (!$oTopic->getTopicId()) {
|
2011-07-24 00:55:56 +03:00
|
|
|
|
if (isset($_COOKIE['ls_photoset_target_tmp'])) {
|
|
|
|
|
$iCountPhotos = $this->Topic_getCountPhotosByTargetTmp($_COOKIE['ls_photoset_target_tmp']);
|
|
|
|
|
} else {
|
|
|
|
|
$this->Message_AddError($this->Lang_Get('system_error'), $this->Lang_Get('error'));
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
$iCountPhotos = $this->Topic_getCountPhotosByTopicId($oTopic->getId());
|
|
|
|
|
}
|
|
|
|
|
if ($iCountPhotos < Config::Get('module.topic.photoset.count_photos_min') || $iCountPhotos > Config::Get('module.topic.photoset.count_photos_max')) {
|
|
|
|
|
$this->Message_AddError($this->Lang_Get('topic_photoset_error_count_photos', array('MIN' => Config::Get('module.topic.photoset.count_photos_min'), 'MAX' => Config::Get('module.topic.photoset.count_photos_max'))), $this->Lang_Get('error'));
|
|
|
|
|
return false;
|
|
|
|
|
}
|
2011-07-20 00:32:36 +03:00
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Выполнение хуков
|
|
|
|
|
*/
|
|
|
|
|
$this->Hook_Run('check_photoset_fields', array('bOk'=>&$bOk));
|
2011-08-28 21:49:01 +03:00
|
|
|
|
|
2011-07-20 00:32:36 +03:00
|
|
|
|
return $bOk;
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* При завершении экшена загружаем необходимые переменные
|
|
|
|
|
*
|
|
|
|
|
*/
|
|
|
|
|
public function EventShutdown() {
|
2011-08-28 21:49:01 +03:00
|
|
|
|
$this->Viewer_Assign('sMenuHeadItemSelect',$this->sMenuHeadItemSelect);
|
2011-07-20 00:32:36 +03:00
|
|
|
|
$this->Viewer_Assign('sMenuItemSelect',$this->sMenuItemSelect);
|
|
|
|
|
$this->Viewer_Assign('sMenuSubItemSelect',$this->sMenuSubItemSelect);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
?>
|