mirror of
https://github.com/Oreolek/ifhub.club.git
synced 2024-07-01 05:55:02 +03:00
Новый интерфейс удаления блога, запрет на перенос топиков в персональный блог, фикс кеша
This commit is contained in:
parent
79f8ace68d
commit
a082c490fa
|
@ -722,6 +722,16 @@ class ActionBlog extends Action {
|
||||||
$aBlogModerators=$this->Blog_GetBlogUsersByBlogId($oBlog->getId(),LsBlog::BLOG_USER_ROLE_MODERATOR);
|
$aBlogModerators=$this->Blog_GetBlogUsersByBlogId($oBlog->getId(),LsBlog::BLOG_USER_ROLE_MODERATOR);
|
||||||
$aBlogAdministrators=$this->Blog_GetBlogUsersByBlogId($oBlog->getId(),LsBlog::BLOG_USER_ROLE_ADMINISTRATOR);
|
$aBlogAdministrators=$this->Blog_GetBlogUsersByBlogId($oBlog->getId(),LsBlog::BLOG_USER_ROLE_ADMINISTRATOR);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Для админов проекта получаем список блогов и передаем их во вьювер
|
||||||
|
*/
|
||||||
|
if($this->oUserCurrent and $this->oUserCurrent->isAdministrator()) {
|
||||||
|
$aBlogs = $this->Blog_GetBlogs();
|
||||||
|
unset($aBlogs[$oBlog->getId()]);
|
||||||
|
|
||||||
|
$this->Viewer_Assign('aBlogs',$aBlogs);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Вызов хуков
|
* Вызов хуков
|
||||||
*/
|
*/
|
||||||
|
@ -1185,7 +1195,7 @@ class ActionBlog extends Action {
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* проверяем есть ли право на удаление топика
|
* проверяем есть ли право на удаление топика
|
||||||
*/
|
*/
|
||||||
if (!$bAccess=$this->ACL_IsAllowDeleteBlog($oBlog,$this->oUserCurrent)) {
|
if (!$bAccess=$this->ACL_IsAllowDeleteBlog($oBlog,$this->oUserCurrent)) {
|
||||||
return parent::EventNotFound();
|
return parent::EventNotFound();
|
||||||
}
|
}
|
||||||
|
@ -1200,20 +1210,34 @@ class ActionBlog extends Action {
|
||||||
case LsACL::CAN_DELETE_BLOG_WITH_TOPICS :
|
case LsACL::CAN_DELETE_BLOG_WITH_TOPICS :
|
||||||
/**
|
/**
|
||||||
* Если указан идентификатор блога для перемещения,
|
* Если указан идентификатор блога для перемещения,
|
||||||
* то делаем попытку переместить топики
|
* то делаем попытку переместить топики.
|
||||||
|
*
|
||||||
|
* (-1) - выбран пункт меню "удалить топики".
|
||||||
*/
|
*/
|
||||||
if($sBlogIdNew=getRequest('topic_move_to') and is_array($aTopics) and count($aTopics)) {
|
if($sBlogIdNew=getRequest('topic_move_to') and ($sBlogIdNew!=-1) and is_array($aTopics) and count($aTopics)) {
|
||||||
if(!$oBlogNew = $this->Blog_GetBlogById($sBlogIdNew)){
|
if(!$oBlogNew = $this->Blog_GetBlogById($sBlogIdNew)){
|
||||||
$this->Message_AddErrorSingle($this->Lang_Get('blog_admin_delete_move_error'),$this->Lang_Get('error'),true);
|
$this->Message_AddErrorSingle($this->Lang_Get('blog_admin_delete_move_error'),$this->Lang_Get('error'),true);
|
||||||
Router::Location($oBlog()->getUrlFull());
|
Router::Location($oBlog()->getUrlFull());
|
||||||
} else {
|
|
||||||
$this->Topic_MoveTopicsByArrayId($aTopics,$sBlogIdNew);
|
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* Если выбранный блог является персональным, возвращаем ошибку
|
||||||
|
*/
|
||||||
|
if($oBlogNew->getType()=='personal') {
|
||||||
|
$this->Message_AddErrorSingle($this->Lang_Get('blog_admin_delete_move_personal'),$this->Lang_Get('error'),true);
|
||||||
|
Router::Location($oBlog()->getUrlFull());
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Перемещаем топики
|
||||||
|
*/
|
||||||
|
$this->Topic_MoveTopics($sBlogId,$sBlogIdNew);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
return parent::EventNotFound();
|
return parent::EventNotFound();
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* Удаляяем блог и перенаправляем пользователя к списку блогов
|
||||||
|
*/
|
||||||
if($this->Blog_DeleteBlog($sBlogId)) {
|
if($this->Blog_DeleteBlog($sBlogId)) {
|
||||||
$this->Message_AddNoticeSingle($this->Lang_Get('blog_admin_delete_success'),$this->Lang_Get('attention'),true);
|
$this->Message_AddNoticeSingle($this->Lang_Get('blog_admin_delete_success'),$this->Lang_Get('attention'),true);
|
||||||
Router::Location(Router::GetPath('blogs'));
|
Router::Location(Router::GetPath('blogs'));
|
||||||
|
|
|
@ -697,38 +697,42 @@ class LsBlog extends Module {
|
||||||
if($iBlogId instanceof BlogEntity_Blog){
|
if($iBlogId instanceof BlogEntity_Blog){
|
||||||
$iBlogId = $iBlogId->getId();
|
$iBlogId = $iBlogId->getId();
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* Получаем идентификаторы топиков блога. Удаляем топики блога.
|
||||||
|
* При удалении топиков удаляются комментарии к ним и голоса.
|
||||||
|
*/
|
||||||
|
$aTopicIds = $this->Topic_GetTopicsByBlogId($iBlogId);
|
||||||
/**
|
/**
|
||||||
* Если блог не удален, возвращаем false
|
* Если блог не удален, возвращаем false
|
||||||
*/
|
*/
|
||||||
if(!$this->oMapperBlog->DeleteBlog($iBlogId)) return false;
|
if(!$this->oMapperBlog->DeleteBlog($iBlogId)) { return false; }
|
||||||
/**
|
|
||||||
* Если удаление прошло успешно, удаляем связанные данные
|
|
||||||
*/
|
|
||||||
/**
|
/**
|
||||||
* Чистим кеш
|
* Чистим кеш
|
||||||
*/
|
*/
|
||||||
$this->Cache_Clean(
|
$this->Cache_Clean(
|
||||||
Zend_Cache::CLEANING_MODE_MATCHING_TAG,
|
Zend_Cache::CLEANING_MODE_MATCHING_TAG,
|
||||||
array(
|
array(
|
||||||
"blog_update",
|
"blog_update", "blog_relation_change_blog_{$iBlogId}",
|
||||||
"blog_relation_change_blog_{$iBlogId}",
|
"topic_update", "comment_online_update_topic", "comment_update"
|
||||||
"topic_update"
|
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
$this->Cache_Delete("blog_{$iBlogId}");
|
$this->Cache_Delete("blog_{$iBlogId}");
|
||||||
/**
|
|
||||||
* Удаляем топики блога.
|
if(is_array($aTopicIds) and count($aTopicIds)) {
|
||||||
* При удалении топиков удаляются комментарии к ним и голоса.
|
/**
|
||||||
*/
|
* Удаляем топики
|
||||||
$aTopicIds = $this->Topic_GetTopicsByBlogId($iBlogId);
|
*/
|
||||||
foreach ($aTopicIds as $iTopicId) {
|
foreach ($aTopicIds as $iTopicId) {
|
||||||
$this->Cache_Delete("topic_{$iTopicId}");
|
$this->Cache_Delete("topic_{$iTopicId}");
|
||||||
if(Config::Get('db.tables.engine')=="InnoDB") {
|
if(Config::Get('db.tables.engine')=="InnoDB") {
|
||||||
$this->Topic_DeleteTopicAdditionalData($iTopicId);
|
$this->Topic_DeleteTopicAdditionalData($iTopicId);
|
||||||
} else {
|
} else {
|
||||||
$this->Topic_DeleteTopic($iTopicId);
|
$this->Topic_DeleteTopic($iTopicId);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Удаляем связи пользователей блога.
|
* Удаляем связи пользователей блога.
|
||||||
*/
|
*/
|
||||||
|
@ -739,6 +743,9 @@ class LsBlog extends Module {
|
||||||
* Удаляем голосование за блог
|
* Удаляем голосование за блог
|
||||||
*/
|
*/
|
||||||
$this->Vote_DeleteVoteByTarget($iBlogId, 'blog');
|
$this->Vote_DeleteVoteByTarget($iBlogId, 'blog');
|
||||||
|
/**
|
||||||
|
* Удаляем комментарии к записям из блога и метки прямого эфира
|
||||||
|
*/
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -174,9 +174,10 @@ class LsTopic extends Module {
|
||||||
/**
|
/**
|
||||||
* Если топик успешно удален, удаляем связанные данные
|
* Если топик успешно удален, удаляем связанные данные
|
||||||
*/
|
*/
|
||||||
if($this->oMapperTopic->DeleteTopic($sTopicId)){
|
if($bResult=$this->oMapperTopic->DeleteTopic($sTopicId)){
|
||||||
return $this->DeleteTopicAdditionalData($sTopicId);
|
return $this->DeleteTopicAdditionalData($sTopicId);
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
|
@ -186,6 +187,11 @@ class LsTopic extends Module {
|
||||||
* @return bool
|
* @return bool
|
||||||
*/
|
*/
|
||||||
public function DeleteTopicAdditionalData($iTopicId) {
|
public function DeleteTopicAdditionalData($iTopicId) {
|
||||||
|
/**
|
||||||
|
* Чистим зависимые кеши
|
||||||
|
*/
|
||||||
|
$this->Cache_Clean(Zend_Cache::CLEANING_MODE_MATCHING_TAG,array('topic_update'));
|
||||||
|
$this->Cache_Delete("topic_{$iTopicId}");
|
||||||
/**
|
/**
|
||||||
* Удаляем комментарии к топику.
|
* Удаляем комментарии к топику.
|
||||||
* При удалении комментариев они удаляются из избранного,прямого эфира и голоса за них
|
* При удалении комментариев они удаляются из избранного,прямого эфира и голоса за них
|
||||||
|
@ -1294,5 +1300,17 @@ class LsTopic extends Module {
|
||||||
$this->Cache_Clean(Zend_Cache::CLEANING_MODE_MATCHING_TAG,array("topic_update", "topic_new_blog_{$sBlogId}"));
|
$this->Cache_Clean(Zend_Cache::CLEANING_MODE_MATCHING_TAG,array("topic_update", "topic_new_blog_{$sBlogId}"));
|
||||||
return $this->oMapperTopic->MoveTopicsByArrayId($aTopics,$sBlogId);
|
return $this->oMapperTopic->MoveTopicsByArrayId($aTopics,$sBlogId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Перемещает топики в другой блог
|
||||||
|
*
|
||||||
|
* @param string $sBlogId
|
||||||
|
* @param string $sBlogIdNew
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function MoveTopics($sBlogId,$sBlogIdNew) {
|
||||||
|
$this->Cache_Clean(Zend_Cache::CLEANING_MODE_MATCHING_TAG,array("topic_update", "topic_new_blog_{$sBlogId}", "topic_new_blog_{$sBlogIdNew}"));
|
||||||
|
return $this->oMapperTopic->MoveTopics($sBlogId,$sBlogIdNew);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
?>
|
?>
|
|
@ -591,5 +591,25 @@ class Mapper_Topic extends Mapper {
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Перемещает топики в другой блог
|
||||||
|
*
|
||||||
|
* @param string $sBlogId
|
||||||
|
* @param string $sBlogIdNew
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function MoveTopics($sBlogId,$sBlogIdNew) {
|
||||||
|
$sql = "UPDATE ".Config::Get('db.table.topic')."
|
||||||
|
SET
|
||||||
|
blog_id= ?d
|
||||||
|
WHERE
|
||||||
|
blog_id = ?d
|
||||||
|
";
|
||||||
|
if ($this->oDb->query($sql,$sBlogIdNew,$sBlogId)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
?>
|
?>
|
|
@ -148,9 +148,11 @@ return array(
|
||||||
|
|
||||||
'blog_admin_delete_confirm' => 'Вы уверены, что хотите удалить блог?',
|
'blog_admin_delete_confirm' => 'Вы уверены, что хотите удалить блог?',
|
||||||
'blog_admin_delete_move' => 'Переместить топики в блог',
|
'blog_admin_delete_move' => 'Переместить топики в блог',
|
||||||
|
'blog_delete_clear' => 'Удалить топики',
|
||||||
'blog_admin_delete_success' => 'Блог успешно удален',
|
'blog_admin_delete_success' => 'Блог успешно удален',
|
||||||
'blog_admin_delete_not_empty' => 'Вы не можете удалить блок с записями. Предварительно удалите из блога все записи.',
|
'blog_admin_delete_not_empty' => 'Вы не можете удалить блок с записями. Предварительно удалите из блога все записи.',
|
||||||
'blog_admin_delete_move_error' => 'Не удалось переместить топики из удаляемого блога',
|
'blog_admin_delete_move_error' => 'Не удалось переместить топики из удаляемого блога',
|
||||||
|
'blog_admin_delete_move_personal' => 'Нельзя перемещать топики в персональный блог',
|
||||||
|
|
||||||
'blog_admin_user_add_label' => 'Пригласить пользователей:',
|
'blog_admin_user_add_label' => 'Пригласить пользователей:',
|
||||||
'blog_admin_user_invited' => 'Список приглашенных:',
|
'blog_admin_user_invited' => 'Список приглашенных:',
|
||||||
|
|
|
@ -61,7 +61,15 @@ function toggleBlogDeleteForm(id,link) {
|
||||||
<form id="blog_delete_form" class="hidden" action="{router page='blog'}delete/{$oBlog->getId()}/" method="POST">
|
<form id="blog_delete_form" class="hidden" action="{router page='blog'}delete/{$oBlog->getId()}/" method="POST">
|
||||||
<input type="hidden" value="{$LIVESTREET_SECURITY_KEY}" name="security_ls_key" />
|
<input type="hidden" value="{$LIVESTREET_SECURITY_KEY}" name="security_ls_key" />
|
||||||
{$aLang.blog_admin_delete_move}:<br />
|
{$aLang.blog_admin_delete_move}:<br />
|
||||||
<input type="text" value="" name="topic_move_to" />
|
<select name="topic_move_to">
|
||||||
|
<option value="-1">{$aLang.blog_delete_clear}</option>
|
||||||
|
{if $aBlogs}
|
||||||
|
<option disabled="disabled">-------------</option>
|
||||||
|
{foreach from=$aBlogs item=oBlog}
|
||||||
|
<option value="{$oBlog->getId()}">{$oBlog->getTitle()}</option>
|
||||||
|
{/foreach}
|
||||||
|
{/if}
|
||||||
|
</select>
|
||||||
<input type="submit" value="{$aLang.blog_delete}" />
|
<input type="submit" value="{$aLang.blog_delete}" />
|
||||||
</form></li>
|
</form></li>
|
||||||
{else}
|
{else}
|
||||||
|
|
Loading…
Reference in a new issue