1
0
Fork 0
mirror of https://github.com/Oreolek/ifhub.club.git synced 2024-06-28 20:45:00 +03:00

fix закрытых блогов

This commit is contained in:
Mzhelskiy Maxim 2012-07-09 09:02:26 +04:00
parent 0cd846b348
commit 991d87553b
3 changed files with 17 additions and 37 deletions

View file

@ -133,13 +133,13 @@ class ActionRss extends Action {
*/ */
protected function RssComments() { protected function RssComments() {
/** /**
* Вычисляем топики из закрытых блогов, чтобы исключить их из выдачи * Получаем закрытые блоги, чтобы исключить их из выдачи
*/ */
$aCloseTopics = $this->Topic_GetTopicsCloseByUser(); $aCloseBlogs = $this->Blog_GetInaccessibleBlogsByUser();
/** /**
* Получаем комментарии * Получаем комментарии
*/ */
$aResult=$this->Comment_GetCommentsAll('topic',1,Config::Get('module.comment.per_page')*2,$aCloseTopics); $aResult=$this->Comment_GetCommentsAll('topic',1,Config::Get('module.comment.per_page')*2,array(),$aCloseBlogs);
$aComments=$aResult['collection']; $aComments=$aResult['collection'];
/** /**
* Формируем данные канала RSS * Формируем данные канала RSS

View file

@ -616,7 +616,10 @@ class ModuleBlog extends Module {
* @param array $aAllowData Список типов данных, которые нужно подтянуть к списку блогов * @param array $aAllowData Список типов данных, которые нужно подтянуть к списку блогов
* @return array('collection'=>array,'count'=>int) * @return array('collection'=>array,'count'=>int)
*/ */
public function GetBlogsByFilter($aFilter,$aOrder,$iCurrPage,$iPerPage,$aAllowData=array('owner'=>array(),'relation_user')) { public function GetBlogsByFilter($aFilter,$aOrder,$iCurrPage,$iPerPage,$aAllowData=null) {
if (is_null($aAllowData)) {
$aAllowData=array('owner'=>array(),'relation_user');
}
$sKey="blog_filter_".serialize($aFilter).serialize($aOrder)."_{$iCurrPage}_{$iPerPage}"; $sKey="blog_filter_".serialize($aFilter).serialize($aOrder)."_{$iCurrPage}_{$iPerPage}";
if (false === ($data = $this->Cache_Get($sKey))) { if (false === ($data = $this->Cache_Get($sKey))) {
$data = array('collection'=>$this->oMapperBlog->GetBlogsByFilter($aFilter,$aOrder,$iCount,$iCurrPage,$iPerPage),'count'=>$iCount); $data = array('collection'=>$this->oMapperBlog->GetBlogsByFilter($aFilter,$aOrder,$iCount,$iCurrPage,$iPerPage),'count'=>$iCount);
@ -725,7 +728,12 @@ class ModuleBlog extends Module {
* которые являются откытыми для данного пользователя * которые являются откытыми для данного пользователя
*/ */
$aOpenBlogs=$this->GetBlogUsersByUserId($oUser->getId(),null,true); $aOpenBlogs=$this->GetBlogUsersByUserId($oUser->getId(),null,true);
$aCloseBlogs=array_diff($aCloseBlogs,$aOpenBlogs); /**
* Получаем закрытые блоги, где пользователь является автором
*/
$aOwnerBlogs=$this->GetBlogsByFilter(array('type'=>'close','user_owner_id'=>$oUser->getId()),array(),1,100,array());
$aOwnerBlogs=array_keys($aOwnerBlogs['collection']);
$aCloseBlogs=array_diff($aCloseBlogs,$aOpenBlogs,$aOwnerBlogs);
} }
/** /**
* Сохраняем в кеш * Сохраняем в кеш

View file

@ -520,15 +520,10 @@ class ModuleTopic extends Module {
public function GetTopicsByFilter($aFilter,$iPage=0,$iPerPage=0,$aAllowData=null) { public function GetTopicsByFilter($aFilter,$iPage=0,$iPerPage=0,$aAllowData=null) {
$s=serialize($aFilter); $s=serialize($aFilter);
if (false === ($data = $this->Cache_Get("topic_filter_{$s}_{$iPage}_{$iPerPage}"))) { if (false === ($data = $this->Cache_Get("topic_filter_{$s}_{$iPage}_{$iPerPage}"))) {
$data = ($iPage*$iPerPage!=0) $data = array(
? array( 'collection'=>$this->oMapperTopic->GetTopics($aFilter,$iCount,$iPage,$iPerPage),
'collection'=>$this->oMapperTopic->GetTopics($aFilter,$iCount,$iPage,$iPerPage), 'count'=>$iCount
'count'=>$iCount );
)
: array(
'collection'=>$this->oMapperTopic->GetAllTopics($aFilter),
'count'=>$this->GetCountTopicsByFilter($aFilter)
);
$this->Cache_Set($data, "topic_filter_{$s}_{$iPage}_{$iPerPage}", array('topic_update','topic_new'), 60*60*24*3); $this->Cache_Set($data, "topic_filter_{$s}_{$iPage}_{$iPerPage}", array('topic_update','topic_new'), 60*60*24*3);
} }
$data['collection']=$this->GetTopicsAdditionalData($data['collection'],$aAllowData); $data['collection']=$this->GetTopicsAdditionalData($data['collection'],$aAllowData);
@ -876,29 +871,6 @@ class ModuleTopic extends Module {
} }
return $data; return $data;
} }
/**
* Получает список идентификаторов топиков
* из закрытых блогов по юзеру
*
* @param int $sUserId ID пользователя
* @return array
*/
public function GetTopicsCloseByUser($sUserId=null) {
if(!is_null($sUserId) && $oUser=$this->User_GetUserById($sUserId)) {
$aCloseBlogs=$this->Blog_GetInaccessibleBlogsByUser($oUser);
$aFilter=array(
'topic_publish' => 1,
'blog_id' => $aCloseBlogs,
);
} else {
$aFilter=array(
'topic_publish' => 1,
'blog_type' => array('close'),
);
}
$aTopics=$this->GetTopicsByFilter($aFilter);
return array_keys($aTopics['collection']);
}
/** /**
* Получает список топиков из указанного блога * Получает список топиков из указанного блога
* *