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);
|
||||
$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);
|
||||
}
|
||||
|
||||
/**
|
||||
* Вызов хуков
|
||||
*/
|
||||
|
@ -1200,20 +1210,34 @@ class ActionBlog extends Action {
|
|||
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)){
|
||||
$this->Message_AddErrorSingle($this->Lang_Get('blog_admin_delete_move_error'),$this->Lang_Get('error'),true);
|
||||
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;
|
||||
default:
|
||||
return parent::EventNotFound();
|
||||
}
|
||||
/**
|
||||
* Удаляяем блог и перенаправляем пользователя к списку блогов
|
||||
*/
|
||||
if($this->Blog_DeleteBlog($sBlogId)) {
|
||||
$this->Message_AddNoticeSingle($this->Lang_Get('blog_admin_delete_success'),$this->Lang_Get('attention'),true);
|
||||
Router::Location(Router::GetPath('blogs'));
|
||||
|
|
|
@ -697,30 +697,31 @@ class LsBlog extends Module {
|
|||
if($iBlogId instanceof BlogEntity_Blog){
|
||||
$iBlogId = $iBlogId->getId();
|
||||
}
|
||||
/**
|
||||
* Получаем идентификаторы топиков блога. Удаляем топики блога.
|
||||
* При удалении топиков удаляются комментарии к ним и голоса.
|
||||
*/
|
||||
$aTopicIds = $this->Topic_GetTopicsByBlogId($iBlogId);
|
||||
/**
|
||||
* Если блог не удален, возвращаем false
|
||||
*/
|
||||
if(!$this->oMapperBlog->DeleteBlog($iBlogId)) return false;
|
||||
/**
|
||||
* Если удаление прошло успешно, удаляем связанные данные
|
||||
*/
|
||||
if(!$this->oMapperBlog->DeleteBlog($iBlogId)) { return false; }
|
||||
/**
|
||||
* Чистим кеш
|
||||
*/
|
||||
$this->Cache_Clean(
|
||||
Zend_Cache::CLEANING_MODE_MATCHING_TAG,
|
||||
array(
|
||||
"blog_update",
|
||||
"blog_relation_change_blog_{$iBlogId}",
|
||||
"topic_update"
|
||||
"blog_update", "blog_relation_change_blog_{$iBlogId}",
|
||||
"topic_update", "comment_online_update_topic", "comment_update"
|
||||
)
|
||||
);
|
||||
$this->Cache_Delete("blog_{$iBlogId}");
|
||||
|
||||
if(is_array($aTopicIds) and count($aTopicIds)) {
|
||||
/**
|
||||
* Удаляем топики блога.
|
||||
* При удалении топиков удаляются комментарии к ним и голоса.
|
||||
* Удаляем топики
|
||||
*/
|
||||
$aTopicIds = $this->Topic_GetTopicsByBlogId($iBlogId);
|
||||
foreach ($aTopicIds as $iTopicId) {
|
||||
$this->Cache_Delete("topic_{$iTopicId}");
|
||||
if(Config::Get('db.tables.engine')=="InnoDB") {
|
||||
|
@ -729,6 +730,9 @@ class LsBlog extends Module {
|
|||
$this->Topic_DeleteTopic($iTopicId);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Удаляем связи пользователей блога.
|
||||
*/
|
||||
|
@ -739,6 +743,9 @@ class LsBlog extends Module {
|
|||
* Удаляем голосование за блог
|
||||
*/
|
||||
$this->Vote_DeleteVoteByTarget($iBlogId, 'blog');
|
||||
/**
|
||||
* Удаляем комментарии к записям из блога и метки прямого эфира
|
||||
*/
|
||||
|
||||
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 false;
|
||||
}
|
||||
/**
|
||||
|
@ -186,6 +187,11 @@ class LsTopic extends Module {
|
|||
* @return bool
|
||||
*/
|
||||
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}"));
|
||||
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;
|
||||
}
|
||||
|
||||
/**
|
||||
* Перемещает топики в другой блог
|
||||
*
|
||||
* @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_move' => 'Переместить топики в блог',
|
||||
'blog_delete_clear' => 'Удалить топики',
|
||||
'blog_admin_delete_success' => 'Блог успешно удален',
|
||||
'blog_admin_delete_not_empty' => 'Вы не можете удалить блок с записями. Предварительно удалите из блога все записи.',
|
||||
'blog_admin_delete_move_error' => 'Не удалось переместить топики из удаляемого блога',
|
||||
'blog_admin_delete_move_personal' => 'Нельзя перемещать топики в персональный блог',
|
||||
|
||||
'blog_admin_user_add_label' => 'Пригласить пользователей:',
|
||||
'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">
|
||||
<input type="hidden" value="{$LIVESTREET_SECURITY_KEY}" name="security_ls_key" />
|
||||
{$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}" />
|
||||
</form></li>
|
||||
{else}
|
||||
|
|
Loading…
Reference in a new issue