mirror of
https://github.com/Oreolek/ifhub.club.git
synced 2024-06-26 03:30:48 +03:00
Документация классов
This commit is contained in:
parent
bf7cadd727
commit
7c3afec126
|
@ -19,13 +19,15 @@
|
|||
* ACL(Access Control List)
|
||||
* Модуль для разруливания ограничений по карме/рейтингу юзера
|
||||
*
|
||||
* @package modules.acl
|
||||
* @since 1.0
|
||||
*/
|
||||
class ModuleACL extends Module {
|
||||
/**
|
||||
* Коды ответов на запрос о возможности
|
||||
* Коды ответов на запрос о возможности
|
||||
* пользователя голосовать за блог
|
||||
*/
|
||||
const CAN_VOTE_BLOG_FALSE = 0;
|
||||
const CAN_VOTE_BLOG_FALSE = 0;
|
||||
const CAN_VOTE_BLOG_TRUE = 1;
|
||||
const CAN_VOTE_BLOG_ERROR_CLOSE = 2;
|
||||
/**
|
||||
|
@ -33,19 +35,18 @@ class ModuleACL extends Module {
|
|||
*/
|
||||
const CAN_DELETE_BLOG_EMPTY_ONLY = 1;
|
||||
const CAN_DELETE_BLOG_WITH_TOPICS = 2;
|
||||
|
||||
|
||||
/**
|
||||
* Инициализация модуля
|
||||
*
|
||||
*/
|
||||
public function Init() {
|
||||
|
||||
public function Init() {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Проверяет может ли пользователь создавать блоги
|
||||
*
|
||||
* @param Entity_User $oUser
|
||||
* @param ModuleUser_EntityUser $oUser Пользователь
|
||||
* @return bool
|
||||
*/
|
||||
public function CanCreateBlog(ModuleUser_EntityUser $oUser) {
|
||||
|
@ -54,12 +55,11 @@ class ModuleACL extends Module {
|
|||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Проверяет может ли пользователь создавать топики в определенном блоге
|
||||
*
|
||||
* @param Entity_User $oUser
|
||||
* @param Entity_Blog $oBlog
|
||||
* @param ModuleUser_EntityUser $oUser Пользователь
|
||||
* @param ModuleBlog_EntityBlog $oBlog Блог
|
||||
* @return bool
|
||||
*/
|
||||
public function CanAddTopic(ModuleUser_EntityUser $oUser, ModuleBlog_EntityBlog $oBlog) {
|
||||
|
@ -77,11 +77,10 @@ class ModuleACL extends Module {
|
|||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Проверяет может ли пользователь создавать комментарии
|
||||
*
|
||||
* @param Entity_User $oUser
|
||||
* @param ModuleUser_EntityUser $oUser Пользователь
|
||||
* @return bool
|
||||
*/
|
||||
public function CanPostComment(ModuleUser_EntityUser $oUser) {
|
||||
|
@ -90,11 +89,10 @@ class ModuleACL extends Module {
|
|||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Проверяет может ли пользователь создавать комментарии по времени(например ограничение максимум 1 коммент в 5 минут)
|
||||
*
|
||||
* @param Entity_User $oUser
|
||||
* @param ModuleUser_EntityUser $oUser Пользователь
|
||||
* @return bool
|
||||
*/
|
||||
public function CanPostCommentTime(ModuleUser_EntityUser $oUser) {
|
||||
|
@ -106,67 +104,64 @@ class ModuleACL extends Module {
|
|||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Проверяет может ли пользователь создавать топик по времени
|
||||
*
|
||||
* @param Entity_User $oUser
|
||||
* @param ModuleUser_EntityUser $oUser Пользователь
|
||||
* @return bool
|
||||
*/
|
||||
public function CanPostTopicTime(ModuleUser_EntityUser $oUser) {
|
||||
// Для администраторов ограничение по времени не действует
|
||||
if($oUser->isAdministrator()
|
||||
or Config::Get('acl.create.topic.limit_time')==0
|
||||
or $oUser->getRating()>=Config::Get('acl.create.topic.limit_time_rating'))
|
||||
return true;
|
||||
|
||||
if($oUser->isAdministrator()
|
||||
or Config::Get('acl.create.topic.limit_time')==0
|
||||
or $oUser->getRating()>=Config::Get('acl.create.topic.limit_time_rating'))
|
||||
return true;
|
||||
|
||||
/**
|
||||
* Проверяем, если топик опубликованный меньше чем acl.create.topic.limit_time секунд назад
|
||||
*/
|
||||
$aTopics=$this->Topic_GetLastTopicsByUserId($oUser->getId(),Config::Get('acl.create.topic.limit_time'));
|
||||
|
||||
if(isset($aTopics['count']) and $aTopics['count']>0){
|
||||
if(isset($aTopics['count']) and $aTopics['count']>0){
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Проверяет может ли пользователь отправить инбокс по времени
|
||||
*
|
||||
* @param Entity_User $oUser
|
||||
* @param ModuleUser_EntityUser $oUser Пользователь
|
||||
* @return bool
|
||||
*/
|
||||
public function CanSendTalkTime(ModuleUser_EntityUser $oUser) {
|
||||
// Для администраторов ограничение по времени не действует
|
||||
if($oUser->isAdministrator()
|
||||
or Config::Get('acl.create.talk.limit_time')==0
|
||||
or $oUser->getRating()>=Config::Get('acl.create.talk.limit_time_rating'))
|
||||
return true;
|
||||
|
||||
if($oUser->isAdministrator()
|
||||
or Config::Get('acl.create.talk.limit_time')==0
|
||||
or $oUser->getRating()>=Config::Get('acl.create.talk.limit_time_rating'))
|
||||
return true;
|
||||
|
||||
/**
|
||||
* Проверяем, если топик опубликованный меньше чем acl.create.topic.limit_time секунд назад
|
||||
*/
|
||||
$aTalks=$this->Talk_GetLastTalksByUserId($oUser->getId(),Config::Get('acl.create.talk.limit_time'));
|
||||
|
||||
if(isset($aTalks['count']) and $aTalks['count']>0){
|
||||
if(isset($aTalks['count']) and $aTalks['count']>0){
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
/**
|
||||
* Проверяет может ли пользователь создавать комментарии к инбоксу по времени
|
||||
*
|
||||
* @param Entity_User $oUser
|
||||
* @param ModuleUser_EntityUser $oUser Пользователь
|
||||
* @return bool
|
||||
*/
|
||||
public function CanPostTalkCommentTime(ModuleUser_EntityUser $oUser) {
|
||||
// Для администраторов ограничение по времени не действует
|
||||
if($oUser->isAdministrator()
|
||||
or Config::Get('acl.create.talk_comment.limit_time')==0
|
||||
or $oUser->getRating()>=Config::Get('acl.create.talk_comment.limit_time_rating'))
|
||||
return true;
|
||||
/**
|
||||
* Для администраторов ограничение по времени не действует
|
||||
*/
|
||||
if($oUser->isAdministrator()
|
||||
or Config::Get('acl.create.talk_comment.limit_time')==0
|
||||
or $oUser->getRating()>=Config::Get('acl.create.talk_comment.limit_time_rating'))
|
||||
return true;
|
||||
/**
|
||||
* Проверяем, если топик опубликованный меньше чем acl.create.topic.limit_time секунд назад
|
||||
*/
|
||||
|
@ -174,34 +169,34 @@ class ModuleACL extends Module {
|
|||
/**
|
||||
* Если комментариев не было
|
||||
*/
|
||||
if(!is_array($aTalkComments) or $aTalkComments['count']==0){
|
||||
if(!is_array($aTalkComments) or $aTalkComments['count']==0){
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Достаем последний комментарий
|
||||
*/
|
||||
$oComment = array_shift($aTalkComments['collection']);
|
||||
$sDate = strtotime($oComment->getDate());
|
||||
|
||||
|
||||
if($sDate and ((time()-$sDate)<Config::Get('acl.create.talk_comment.limit_time'))) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Проверяет может ли пользователь создавать комментарии используя HTML
|
||||
*
|
||||
* @param Entity_User $oUser
|
||||
* @param ModuleUser_EntityUser $oUser Пользователь
|
||||
* @return bool
|
||||
*/
|
||||
public function CanUseHtmlInComment(ModuleUser_EntityUser $oUser) {
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Проверяет может ли пользователь голосовать за конкретный комментарий
|
||||
*
|
||||
* @param Entity_User $oUser
|
||||
* @param Entity_TopicComment $oComment
|
||||
* @param ModuleUser_EntityUser $oUser Пользователь
|
||||
* @param ModuleComment_EntityComment $oComment Комментарий
|
||||
* @return bool
|
||||
*/
|
||||
public function CanVoteComment(ModuleUser_EntityUser $oUser, ModuleComment_EntityComment $oComment) {
|
||||
|
@ -210,12 +205,11 @@ class ModuleACL extends Module {
|
|||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Проверяет может ли пользователь голосовать за конкретный блог
|
||||
*
|
||||
* @param Entity_User $oUser
|
||||
* @param Entity_Blog $oBlog
|
||||
* @param ModuleUser_EntityUser $oUser Пользователь
|
||||
* @param ModuleBlog_EntityBlog $oBlog Блог
|
||||
* @return bool
|
||||
*/
|
||||
public function CanVoteBlog(ModuleUser_EntityUser $oUser, ModuleBlog_EntityBlog $oBlog) {
|
||||
|
@ -228,18 +222,16 @@ class ModuleACL extends Module {
|
|||
return self::CAN_VOTE_BLOG_ERROR_CLOSE;
|
||||
}
|
||||
}
|
||||
|
||||
if ($oUser->getRating()>=Config::Get('acl.vote.blog.rating')) {
|
||||
return self::CAN_VOTE_BLOG_TRUE;
|
||||
}
|
||||
return self::CAN_VOTE_BLOG_FALSE;
|
||||
}
|
||||
|
||||
/**
|
||||
* Проверяет может ли пользователь голосовать за конкретный топик
|
||||
*
|
||||
* @param Entity_User $oUser
|
||||
* @param Entity_Topic $oTopic
|
||||
* @param ModuleUser_EntityUser $oUser Пользователь
|
||||
* @param ModuleTopic_EntityTopic $oTopic Топик
|
||||
* @return bool
|
||||
*/
|
||||
public function CanVoteTopic(ModuleUser_EntityUser $oUser, ModuleTopic_EntityTopic $oTopic) {
|
||||
|
@ -248,12 +240,11 @@ class ModuleACL extends Module {
|
|||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Проверяет может ли пользователь голосовать за конкретного пользователя
|
||||
*
|
||||
* @param Entity_User $oUser
|
||||
* @param Entity_User $oUserTarget
|
||||
* @param ModuleUser_EntityUser $oUser Пользователь
|
||||
* @param ModuleUser_EntityUser $oUserTarget Пользователь за которого голосуем
|
||||
* @return bool
|
||||
*/
|
||||
public function CanVoteUser(ModuleUser_EntityUser $oUser, ModuleUser_EntityUser $oUserTarget) {
|
||||
|
@ -265,8 +256,8 @@ class ModuleACL extends Module {
|
|||
/**
|
||||
* Проверяет можно ли юзеру слать инвайты
|
||||
*
|
||||
* @param ModuleUser_EntityUser $oUser
|
||||
* @return unknown
|
||||
* @param ModuleUser_EntityUser $oUser Пользователь
|
||||
* @return bool
|
||||
*/
|
||||
public function CanSendInvite(ModuleUser_EntityUser $oUser) {
|
||||
if ($this->User_GetCountInviteAvailable($oUser)==0) {
|
||||
|
@ -274,14 +265,13 @@ class ModuleACL extends Module {
|
|||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Проверяет можно или нет юзеру постить в данный блог
|
||||
*
|
||||
* @param object $oBlog
|
||||
* @param object $oUser
|
||||
* @param ModuleBlog_EntityBlog $oBlog Блог
|
||||
* @param ModuleUser_EntityUser $oUser Пользователь
|
||||
*/
|
||||
public function IsAllowBlog($oBlog,$oUser) {
|
||||
public function IsAllowBlog($oBlog,$oUser) {
|
||||
if ($oUser->isAdministrator()) {
|
||||
return true;
|
||||
}
|
||||
|
@ -297,13 +287,12 @@ class ModuleACL extends Module {
|
|||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
/**
|
||||
* Проверяет можно или нет пользователю редактировать данный топик
|
||||
*
|
||||
* @param object $oTopic
|
||||
* @param object $oUser
|
||||
* @param ModuleTopic_EntityTopic $oTopic Топик
|
||||
* @param ModuleUser_EntityUser $oUser Пользователь
|
||||
* @return bool
|
||||
*/
|
||||
public function IsAllowEditTopic($oTopic,$oUser) {
|
||||
|
@ -327,19 +316,19 @@ class ModuleACL extends Module {
|
|||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
/**
|
||||
* Проверяет можно или нет пользователю удалять данный топик
|
||||
*
|
||||
* @param object $oTopic
|
||||
* @param object $oUser
|
||||
* @param ModuleTopic_EntityTopic $oTopic Топик
|
||||
* @param ModuleUser_EntityUser $oUser Пользователь
|
||||
* @return bool
|
||||
*/
|
||||
public function IsAllowDeleteTopic($oTopic,$oUser) {
|
||||
public function IsAllowDeleteTopic($oTopic,$oUser) {
|
||||
/**
|
||||
* Разрешаем если это админ сайта или автор топика
|
||||
*/
|
||||
if ($oTopic->getUserId()==$oUser->getId() or $oUser->isAdministrator()) {
|
||||
if ($oTopic->getUserId()==$oUser->getId() or $oUser->isAdministrator()) {
|
||||
return true;
|
||||
}
|
||||
/**
|
||||
|
@ -357,14 +346,14 @@ class ModuleACL extends Module {
|
|||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Проверяет можно или нет пользователю удалять данный блог
|
||||
*
|
||||
* @param object $oBlog
|
||||
* @param object $oUser
|
||||
* @param ModuleBlog_EntityBlog $oBlog Блог
|
||||
* @param ModuleUser_EntityUser $oUser Пользователь
|
||||
* @return bool
|
||||
*/
|
||||
public function IsAllowDeleteBlog($oBlog,$oUser) {
|
||||
public function IsAllowDeleteBlog($oBlog,$oUser) {
|
||||
/**
|
||||
* Разрешаем если это админ сайта или автор блога
|
||||
*/
|
||||
|
@ -377,118 +366,101 @@ class ModuleACL extends Module {
|
|||
if($oBlog->getOwnerId()==$oUser->getId()) {
|
||||
return self::CAN_DELETE_BLOG_EMPTY_ONLY;
|
||||
}
|
||||
|
||||
$oBlogUser=$this->Blog_GetBlogUserByBlogIdAndUserId($oBlog->getId(),$this->oUserCurrent->getId());
|
||||
|
||||
$oBlogUser=$this->Blog_GetBlogUserByBlogIdAndUserId($oBlog->getId(),$this->oUserCurrent->getId());
|
||||
if($oBlogUser and $oBlogUser->getIsAdministrator()) {
|
||||
return self::CAN_DELETE_BLOG_EMPTY_ONLY;
|
||||
return self::CAN_DELETE_BLOG_EMPTY_ONLY;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
/**
|
||||
* Проверяет может ли пользователь удалить комментарий
|
||||
*
|
||||
* @param Entity_User $oUser
|
||||
* @param ModuleUser_EntityUser $oUser Пользователь
|
||||
* @return bool
|
||||
*/
|
||||
public function CanDeleteComment($oUser) {
|
||||
|
||||
if (!$oUser || !$oUser->isAdministrator()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
/**
|
||||
* Проверяет может ли пользователь публиковать на главной
|
||||
*
|
||||
* @param Entity_User $oUser
|
||||
* @param ModuleUser_EntityUser $oUser Пользователь
|
||||
* @return bool
|
||||
*/
|
||||
public function IsAllowPublishIndex(ModuleUser_EntityUser $oUser) {
|
||||
|
||||
if ($oUser->isAdministrator()) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
/**
|
||||
* Проверяет можно или нет пользователю редактировать данный блог
|
||||
*
|
||||
* @param object $oBlog
|
||||
* @param object $oUser
|
||||
* @param ModuleBlog_EntityBlog $oBlog Блог
|
||||
* @param ModuleUser_EntityUser $oUser Пользователь
|
||||
* @return bool
|
||||
*/
|
||||
public function IsAllowEditBlog($oBlog,$oUser) {
|
||||
|
||||
if ($oUser->isAdministrator()) {
|
||||
return true;
|
||||
}
|
||||
if ($oUser->isAdministrator()) {
|
||||
return true;
|
||||
}
|
||||
/**
|
||||
* Разрешаем если это создатель блога
|
||||
*/
|
||||
if ($oBlog->getOwnerId() == $oUser->getId()) {
|
||||
return true;
|
||||
}
|
||||
/**
|
||||
* Явлется ли авторизованный пользователь администратором блога
|
||||
*/
|
||||
$oBlogUser = $this->Blog_GetBlogUserByBlogIdAndUserId($oBlog->getId(), $oUser->getId());
|
||||
|
||||
/**
|
||||
* Разрешаем если это создатель блога
|
||||
*/
|
||||
if ($oBlog->getOwnerId() == $oUser->getId()) {
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Явлется ли авторизованный пользователь администратором блога
|
||||
*/
|
||||
$oBlogUser = $this->Blog_GetBlogUserByBlogIdAndUserId($oBlog->getId(), $oUser->getId());
|
||||
|
||||
if ($oBlogUser && $oBlogUser->getIsAdministrator()) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
if ($oBlogUser && $oBlogUser->getIsAdministrator()) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
/**
|
||||
* Проверяет можно или нет пользователю управлять пользователями блога
|
||||
*
|
||||
* @param object $oBlog
|
||||
* @param object $oUser
|
||||
* @param ModuleBlog_EntityBlog $oBlog Блог
|
||||
* @param ModuleUser_EntityUser $oUser Пользователь
|
||||
* @return bool
|
||||
*/
|
||||
public function IsAllowAdminBlog($oBlog,$oUser) {
|
||||
|
||||
if ($oUser->isAdministrator()) {
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Разрешаем если это создатель блога
|
||||
*/
|
||||
if ($oBlog->getOwnerId() == $oUser->getId()) {
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Явлется ли авторизованный пользователь администратором блога
|
||||
*/
|
||||
$oBlogUser = $this->Blog_GetBlogUserByBlogIdAndUserId($oBlog->getId(), $oUser->getId());
|
||||
|
||||
if ($oBlogUser && $oBlogUser->getIsAdministrator()) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
if ($oUser->isAdministrator()) {
|
||||
return true;
|
||||
}
|
||||
/**
|
||||
* Разрешаем если это создатель блога
|
||||
*/
|
||||
if ($oBlog->getOwnerId() == $oUser->getId()) {
|
||||
return true;
|
||||
}
|
||||
/**
|
||||
* Явлется ли авторизованный пользователь администратором блога
|
||||
*/
|
||||
$oBlogUser = $this->Blog_GetBlogUserByBlogIdAndUserId($oBlog->getId(), $oUser->getId());
|
||||
if ($oBlogUser && $oBlogUser->getIsAdministrator()) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Проверка на ограничение по времени на постинг на стене
|
||||
*
|
||||
* @param $oUser
|
||||
* @param $oWall
|
||||
* @param ModuleUser_EntityUser $oUser Пользователь
|
||||
* @param ModuleWall_EntityWall $oWall Объект сообщения на стене
|
||||
* @return bool
|
||||
*/
|
||||
public function CanAddWallTime($oUser,$oWall) {
|
||||
// Для администраторов ограничение по времени не действует
|
||||
/**
|
||||
* Для администраторов ограничение по времени не действует
|
||||
*/
|
||||
if($oUser->isAdministrator()
|
||||
or Config::Get('acl.create.wall.limit_time')==0
|
||||
or $oUser->getRating()>=Config::Get('acl.create.wall.limit_time_rating')) {
|
||||
|
@ -515,6 +487,5 @@ class ModuleACL extends Module {
|
|||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
|
@ -18,6 +18,8 @@
|
|||
/**
|
||||
* Модуль для работы с блогами
|
||||
*
|
||||
* @package modules.blog
|
||||
* @since 1.0
|
||||
*/
|
||||
class ModuleBlog extends Module {
|
||||
/**
|
||||
|
@ -39,22 +41,35 @@ class ModuleBlog extends Module {
|
|||
* Забаненный в блоге пользователь
|
||||
*/
|
||||
const BLOG_USER_ROLE_BAN = -4;
|
||||
|
||||
protected $oMapperBlog;
|
||||
|
||||
/**
|
||||
* Объект маппера
|
||||
*
|
||||
* @var ModuleBlog_MapperBlog
|
||||
*/
|
||||
protected $oMapperBlog;
|
||||
/**
|
||||
* Объект текущего пользователя
|
||||
*
|
||||
* @var ModuleUser_EntityUser|null
|
||||
*/
|
||||
protected $oUserCurrent=null;
|
||||
|
||||
|
||||
/**
|
||||
* Инициализация
|
||||
*
|
||||
*/
|
||||
public function Init() {
|
||||
$this->oMapperBlog=Engine::GetMapper(__CLASS__);
|
||||
$this->oMapperBlog->SetUserCurrent($this->User_GetUserCurrent());
|
||||
$this->oUserCurrent=$this->User_GetUserCurrent();
|
||||
$this->oUserCurrent=$this->User_GetUserCurrent();
|
||||
}
|
||||
/**
|
||||
* Получает дополнительные данные(объекты) для блогов по их ID
|
||||
*
|
||||
* @param array $aBlogId Список ID блогов
|
||||
* @param array $aAllowData Список типов дополнительных данных, которые нужно получить для блогов
|
||||
* @param array $aOrder Порядок сортировки
|
||||
* @return array
|
||||
*/
|
||||
public function GetBlogsAdditionalData($aBlogId,$aAllowData=null,$aOrder=null) {
|
||||
if (is_null($aAllowData)) {
|
||||
|
@ -71,22 +86,22 @@ class ModuleBlog extends Module {
|
|||
/**
|
||||
* Формируем ID дополнительных данных, которые нужно получить
|
||||
*/
|
||||
$aUserId=array();
|
||||
$aUserId=array();
|
||||
foreach ($aBlogs as $oBlog) {
|
||||
if (isset($aAllowData['owner'])) {
|
||||
$aUserId[]=$oBlog->getOwnerId();
|
||||
}
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Получаем дополнительные данные
|
||||
*/
|
||||
$aBlogUsers=array();
|
||||
$aBlogsVote=array();
|
||||
$aUsers=isset($aAllowData['owner']) && is_array($aAllowData['owner']) ? $this->User_GetUsersAdditionalData($aUserId,$aAllowData['owner']) : $this->User_GetUsersAdditionalData($aUserId);
|
||||
$aUsers=isset($aAllowData['owner']) && is_array($aAllowData['owner']) ? $this->User_GetUsersAdditionalData($aUserId,$aAllowData['owner']) : $this->User_GetUsersAdditionalData($aUserId);
|
||||
if (isset($aAllowData['relation_user']) and $this->oUserCurrent) {
|
||||
$aBlogUsers=$this->GetBlogUsersByArrayBlog($aBlogId,$this->oUserCurrent->getId());
|
||||
$aBlogUsers=$this->GetBlogUsersByArrayBlog($aBlogId,$this->oUserCurrent->getId());
|
||||
}
|
||||
if (isset($aAllowData['vote']) and $this->oUserCurrent) {
|
||||
if (isset($aAllowData['vote']) and $this->oUserCurrent) {
|
||||
$aBlogsVote=$this->Vote_GetVoteByArray($aBlogId,'blog',$this->oUserCurrent->getId());
|
||||
}
|
||||
/**
|
||||
|
@ -108,18 +123,19 @@ class ModuleBlog extends Module {
|
|||
$oBlog->setUserIsModerator(false);
|
||||
}
|
||||
if (isset($aBlogsVote[$oBlog->getId()])) {
|
||||
$oBlog->setVote($aBlogsVote[$oBlog->getId()]);
|
||||
$oBlog->setVote($aBlogsVote[$oBlog->getId()]);
|
||||
} else {
|
||||
$oBlog->setVote(null);
|
||||
}
|
||||
}
|
||||
|
||||
return $aBlogs;
|
||||
}
|
||||
/**
|
||||
* Список блогов по ID
|
||||
* Возвращает список блогов по ID
|
||||
*
|
||||
* @param array $aUserId
|
||||
* @param array $aBlogId Список ID блогов
|
||||
* @param array|null $aOrder Порядок сортировки
|
||||
* @return array
|
||||
*/
|
||||
public function GetBlogsByArrayId($aBlogId,$aOrder=null) {
|
||||
if (!$aBlogId) {
|
||||
|
@ -138,25 +154,25 @@ class ModuleBlog extends Module {
|
|||
* Делаем мульти-запрос к кешу
|
||||
*/
|
||||
$aCacheKeys=func_build_cache_keys($aBlogId,'blog_');
|
||||
if (false !== ($data = $this->Cache_Get($aCacheKeys))) {
|
||||
if (false !== ($data = $this->Cache_Get($aCacheKeys))) {
|
||||
/**
|
||||
* проверяем что досталось из кеша
|
||||
*/
|
||||
foreach ($aCacheKeys as $sValue => $sKey ) {
|
||||
if (array_key_exists($sKey,$data)) {
|
||||
if (array_key_exists($sKey,$data)) {
|
||||
if ($data[$sKey]) {
|
||||
$aBlogs[$data[$sKey]->getId()]=$data[$sKey];
|
||||
} else {
|
||||
$aBlogIdNotNeedQuery[]=$sValue;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Смотрим каких блогов не было в кеше и делаем запрос в БД
|
||||
*/
|
||||
$aBlogIdNeedQuery=array_diff($aBlogId,array_keys($aBlogs));
|
||||
$aBlogIdNeedQuery=array_diff($aBlogIdNeedQuery,$aBlogIdNotNeedQuery);
|
||||
*/
|
||||
$aBlogIdNeedQuery=array_diff($aBlogId,array_keys($aBlogs));
|
||||
$aBlogIdNeedQuery=array_diff($aBlogIdNeedQuery,$aBlogIdNotNeedQuery);
|
||||
$aBlogIdNeedStore=$aBlogIdNeedQuery;
|
||||
if ($data = $this->oMapperBlog->GetBlogsByArrayId($aBlogIdNeedQuery)) {
|
||||
foreach ($data as $oBlog) {
|
||||
|
@ -173,41 +189,42 @@ class ModuleBlog extends Module {
|
|||
*/
|
||||
foreach ($aBlogIdNeedStore as $sId) {
|
||||
$this->Cache_Set(null, "blog_{$sId}", array(), 60*60*24*4);
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Сортируем результат согласно входящему массиву
|
||||
*/
|
||||
$aBlogs=func_array_sort_by_keys($aBlogs,$aBlogId);
|
||||
return $aBlogs;
|
||||
return $aBlogs;
|
||||
}
|
||||
/**
|
||||
* Список блогов по ID, но используя единый кеш
|
||||
* Возвращает список блогов по ID, но используя единый кеш
|
||||
*
|
||||
* @param unknown_type $aBlogId
|
||||
* @return unknown
|
||||
* @param array $aBlogId Список ID блогов
|
||||
* @param array|null $aOrder Сортировка блогов
|
||||
* @return array
|
||||
*/
|
||||
public function GetBlogsByArrayIdSolid($aBlogId,$aOrder=null) {
|
||||
if (!is_array($aBlogId)) {
|
||||
$aBlogId=array($aBlogId);
|
||||
}
|
||||
$aBlogId=array_unique($aBlogId);
|
||||
$aBlogs=array();
|
||||
$aBlogId=array_unique($aBlogId);
|
||||
$aBlogs=array();
|
||||
$s=join(',',$aBlogId);
|
||||
if (false === ($data = $this->Cache_Get("blog_id_{$s}"))) {
|
||||
if (false === ($data = $this->Cache_Get("blog_id_{$s}"))) {
|
||||
$data = $this->oMapperBlog->GetBlogsByArrayId($aBlogId,$aOrder);
|
||||
foreach ($data as $oBlog) {
|
||||
$aBlogs[$oBlog->getId()]=$oBlog;
|
||||
}
|
||||
$this->Cache_Set($aBlogs, "blog_id_{$s}", array("blog_update"), 60*60*24*1);
|
||||
return $aBlogs;
|
||||
}
|
||||
}
|
||||
return $data;
|
||||
}
|
||||
/**
|
||||
* Получить персональный блог юзера
|
||||
*
|
||||
* @param Entity_User $oUser
|
||||
* @return unknown
|
||||
* @param int $sUserId ID пользователя
|
||||
* @return ModuleBlog_EntityBlog
|
||||
*/
|
||||
public function GetPersonalBlogByUserId($sUserId) {
|
||||
$id=$this->oMapperBlog->GetPersonalBlogByUserId($sUserId);
|
||||
|
@ -216,53 +233,53 @@ class ModuleBlog extends Module {
|
|||
/**
|
||||
* Получить блог по айдишнику(номеру)
|
||||
*
|
||||
* @param unknown_type $sBlogId
|
||||
* @return unknown
|
||||
* @param int $sBlogId ID блога
|
||||
* @return ModuleBlog_EntityBlog|null
|
||||
*/
|
||||
public function GetBlogById($sBlogId) {
|
||||
$aBlogs=$this->GetBlogsAdditionalData($sBlogId);
|
||||
if (isset($aBlogs[$sBlogId])) {
|
||||
return $aBlogs[$sBlogId];
|
||||
}
|
||||
return null;
|
||||
return null;
|
||||
}
|
||||
/**
|
||||
* Получить блог по УРЛу
|
||||
*
|
||||
* @param unknown_type $sBlogUrl
|
||||
* @return unknown
|
||||
* @param string $sBlogUrl URL блога
|
||||
* @return ModuleBlog_EntityBlog|null
|
||||
*/
|
||||
public function GetBlogByUrl($sBlogUrl) {
|
||||
if (false === ($id = $this->Cache_Get("blog_url_{$sBlogUrl}"))) {
|
||||
if ($id = $this->oMapperBlog->GetBlogByUrl($sBlogUrl)) {
|
||||
$this->Cache_Set($id, "blog_url_{$sBlogUrl}", array("blog_update_{$id}"), 60*60*24*2);
|
||||
public function GetBlogByUrl($sBlogUrl) {
|
||||
if (false === ($id = $this->Cache_Get("blog_url_{$sBlogUrl}"))) {
|
||||
if ($id = $this->oMapperBlog->GetBlogByUrl($sBlogUrl)) {
|
||||
$this->Cache_Set($id, "blog_url_{$sBlogUrl}", array("blog_update_{$id}"), 60*60*24*2);
|
||||
} else {
|
||||
$this->Cache_Set(null, "blog_url_{$sBlogUrl}", array('blog_update','blog_new'), 60*60);
|
||||
}
|
||||
}
|
||||
return $this->GetBlogById($id);
|
||||
}
|
||||
return $this->GetBlogById($id);
|
||||
}
|
||||
/**
|
||||
* Получить блог по названию
|
||||
*
|
||||
* @param unknown_type $sTitle
|
||||
* @return unknown
|
||||
* @param string $sTitle Название блога
|
||||
* @return ModuleBlog_EntityBlog|null
|
||||
*/
|
||||
public function GetBlogByTitle($sTitle) {
|
||||
if (false === ($id = $this->Cache_Get("blog_title_{$sTitle}"))) {
|
||||
if ($id = $this->oMapperBlog->GetBlogByTitle($sTitle)) {
|
||||
$this->Cache_Set($id, "blog_title_{$sTitle}", array("blog_update_{$id}",'blog_new'), 60*60*24*2);
|
||||
public function GetBlogByTitle($sTitle) {
|
||||
if (false === ($id = $this->Cache_Get("blog_title_{$sTitle}"))) {
|
||||
if ($id = $this->oMapperBlog->GetBlogByTitle($sTitle)) {
|
||||
$this->Cache_Set($id, "blog_title_{$sTitle}", array("blog_update_{$id}",'blog_new'), 60*60*24*2);
|
||||
} else {
|
||||
$this->Cache_Set(null, "blog_title_{$sTitle}", array('blog_update','blog_new'), 60*60);
|
||||
}
|
||||
}
|
||||
return $this->GetBlogById($id);
|
||||
return $this->GetBlogById($id);
|
||||
}
|
||||
/**
|
||||
* Создаёт персональный блог
|
||||
*
|
||||
* @param Entity_User $oUser
|
||||
* @return unknown
|
||||
* @param ModuleUser_EntityUser $oUser Пользователь
|
||||
* @return ModuleBlog_EntityBlog|bool
|
||||
*/
|
||||
public function CreatePersonalBlog(ModuleUser_EntityUser $oUser) {
|
||||
$oBlog=Engine::GetEntity('Blog');
|
||||
|
@ -270,19 +287,19 @@ class ModuleBlog extends Module {
|
|||
$oBlog->setTitle($this->Lang_Get('blogs_personal_title').' '.$oUser->getLogin());
|
||||
$oBlog->setType('personal');
|
||||
$oBlog->setDescription($this->Lang_Get('blogs_personal_description'));
|
||||
$oBlog->setDateAdd(date("Y-m-d H:i:s"));
|
||||
$oBlog->setDateAdd(date("Y-m-d H:i:s"));
|
||||
$oBlog->setLimitRatingTopic(-1000);
|
||||
$oBlog->setUrl(null);
|
||||
$oBlog->setUrl(null);
|
||||
$oBlog->setAvatar(null);
|
||||
return $this->AddBlog($oBlog);
|
||||
return $this->AddBlog($oBlog);
|
||||
}
|
||||
/**
|
||||
* Добавляет блог
|
||||
*
|
||||
* @param ModuleBlog_EntityBlog $oBlog
|
||||
* @return unknown
|
||||
* @param ModuleBlog_EntityBlog $oBlog Блог
|
||||
* @return ModuleBlog_EntityBlog|bool
|
||||
*/
|
||||
public function AddBlog(ModuleBlog_EntityBlog $oBlog) {
|
||||
public function AddBlog(ModuleBlog_EntityBlog $oBlog) {
|
||||
if ($sId=$this->oMapperBlog->AddBlog($oBlog)) {
|
||||
$oBlog->setId($sId);
|
||||
//чистим зависимые кеши
|
||||
|
@ -294,30 +311,30 @@ class ModuleBlog extends Module {
|
|||
/**
|
||||
* Обновляет блог
|
||||
*
|
||||
* @param ModuleBlog_EntityBlog $oBlog
|
||||
* @return unknown
|
||||
* @param ModuleBlog_EntityBlog $oBlog Блог
|
||||
* @return ModuleBlog_EntityBlog|bool
|
||||
*/
|
||||
public function UpdateBlog(ModuleBlog_EntityBlog $oBlog) {
|
||||
$oBlog->setDateEdit(date("Y-m-d H:i:s"));
|
||||
$res=$this->oMapperBlog->UpdateBlog($oBlog);
|
||||
if ($res) {
|
||||
$res=$this->oMapperBlog->UpdateBlog($oBlog);
|
||||
if ($res) {
|
||||
//чистим зависимые кеши
|
||||
$this->Cache_Clean(Zend_Cache::CLEANING_MODE_MATCHING_TAG,array('blog_update',"blog_update_{$oBlog->getId()}","topic_update"));
|
||||
$this->Cache_Delete("blog_{$oBlog->getId()}");
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Добавляет отношение юзера к блогу, по сути присоединяет к блогу
|
||||
*
|
||||
* @param ModuleBlog_EntityBlogUser $oBlogUser
|
||||
* @return unknown
|
||||
* @param ModuleBlog_EntityBlogUser $oBlogUser Объект связи(отношения) блога с пользователем
|
||||
* @return bool
|
||||
*/
|
||||
public function AddRelationBlogUser(ModuleBlog_EntityBlogUser $oBlogUser) {
|
||||
if ($this->oMapperBlog->AddRelationBlogUser($oBlogUser)) {
|
||||
$this->Cache_Clean(Zend_Cache::CLEANING_MODE_MATCHING_TAG,array("blog_relation_change_{$oBlogUser->getUserId()}","blog_relation_change_blog_{$oBlogUser->getBlogId()}"));
|
||||
$this->Cache_Delete("blog_relation_user_{$oBlogUser->getBlogId()}_{$oBlogUser->getUserId()}");
|
||||
if ($this->oMapperBlog->AddRelationBlogUser($oBlogUser)) {
|
||||
$this->Cache_Clean(Zend_Cache::CLEANING_MODE_MATCHING_TAG,array("blog_relation_change_{$oBlogUser->getUserId()}","blog_relation_change_blog_{$oBlogUser->getBlogId()}"));
|
||||
$this->Cache_Delete("blog_relation_user_{$oBlogUser->getBlogId()}_{$oBlogUser->getUserId()}");
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
@ -325,12 +342,12 @@ class ModuleBlog extends Module {
|
|||
/**
|
||||
* Удалет отношение юзера к блогу, по сути отключает от блога
|
||||
*
|
||||
* @param ModuleBlog_EntityBlogUser $oBlogUser
|
||||
* @return unknown
|
||||
* @param ModuleBlog_EntityBlogUser $oBlogUser Объект связи(отношения) блога с пользователем
|
||||
* @return bool
|
||||
*/
|
||||
public function DeleteRelationBlogUser(ModuleBlog_EntityBlogUser $oBlogUser) {
|
||||
if ($this->oMapperBlog->DeleteRelationBlogUser($oBlogUser)) {
|
||||
$this->Cache_Clean(Zend_Cache::CLEANING_MODE_MATCHING_TAG,array("blog_relation_change_{$oBlogUser->getUserId()}","blog_relation_change_blog_{$oBlogUser->getBlogId()}"));
|
||||
$this->Cache_Clean(Zend_Cache::CLEANING_MODE_MATCHING_TAG,array("blog_relation_change_{$oBlogUser->getUserId()}","blog_relation_change_blog_{$oBlogUser->getBlogId()}"));
|
||||
$this->Cache_Delete("blog_relation_user_{$oBlogUser->getBlogId()}_{$oBlogUser->getUserId()}");
|
||||
return true;
|
||||
}
|
||||
|
@ -339,8 +356,9 @@ class ModuleBlog extends Module {
|
|||
/**
|
||||
* Получает список блогов по хозяину
|
||||
*
|
||||
* @param unknown_type $sUserId
|
||||
* @return unknown
|
||||
* @param int $sUserId ID пользователя
|
||||
* @param bool $bReturnIdOnly Возвращать только ID блогов или полные объекты
|
||||
* @return array
|
||||
*/
|
||||
public function GetBlogsByOwnerId($sUserId,$bReturnIdOnly=false) {
|
||||
$data=$this->oMapperBlog->GetBlogsByOwnerId($sUserId);
|
||||
|
@ -348,14 +366,15 @@ class ModuleBlog extends Module {
|
|||
* Возвращаем только иденитификаторы
|
||||
*/
|
||||
if($bReturnIdOnly) return $data;
|
||||
|
||||
|
||||
$data=$this->GetBlogsAdditionalData($data);
|
||||
return $data;
|
||||
}
|
||||
/**
|
||||
* Получает список всех НЕ персональных блогов
|
||||
*
|
||||
* @return unknown
|
||||
* @param bool $bReturnIdOnly Возвращать только ID блогов или полные объекты
|
||||
* @return array
|
||||
*/
|
||||
public function GetBlogs($bReturnIdOnly=false) {
|
||||
$data=$this->oMapperBlog->GetBlogs();
|
||||
|
@ -363,30 +382,29 @@ class ModuleBlog extends Module {
|
|||
* Возвращаем только иденитификаторы
|
||||
*/
|
||||
if($bReturnIdOnly) return $data;
|
||||
|
||||
|
||||
$data=$this->GetBlogsAdditionalData($data);
|
||||
return $data;
|
||||
}
|
||||
|
||||
/**
|
||||
* Получает список пользователей блога.
|
||||
* Если роль не указана, то считаем что
|
||||
* поиск производиться по положительным значениям
|
||||
* (статусом выше GUEST).
|
||||
* Если роль не указана, то считаем что поиск производиться по положительным значениям (статусом выше GUEST).
|
||||
*
|
||||
* @param string $sBlogId
|
||||
* @param (null|int|array) $iRole
|
||||
* @param int $sBlogId ID блога
|
||||
* @param int|null $iRole Роль пользователей в блоге
|
||||
* @param int $iPage Номер текущей страницы
|
||||
* @param int $iPerPage Количество элементов на одну страницу
|
||||
* @return array
|
||||
*/
|
||||
public function GetBlogUsersByBlogId($sBlogId,$iRole=null,$iPage=1,$iPerPage=100) {
|
||||
$aFilter=array(
|
||||
'blog_id'=> $sBlogId,
|
||||
'blog_id'=> $sBlogId,
|
||||
);
|
||||
if($iRole!==null) {
|
||||
$aFilter['user_role']=$iRole;
|
||||
$aFilter['user_role']=$iRole;
|
||||
}
|
||||
$s=serialize($aFilter);
|
||||
if (false === ($data = $this->Cache_Get("blog_relation_user_by_filter_{$s}_{$iPage}_{$iPerPage}"))) {
|
||||
if (false === ($data = $this->Cache_Get("blog_relation_user_by_filter_{$s}_{$iPage}_{$iPerPage}"))) {
|
||||
$data = array('collection'=>$this->oMapperBlog->GetBlogUsers($aFilter,$iCount,$iPage,$iPerPage),'count'=>$iCount);
|
||||
$this->Cache_Set($data, "blog_relation_user_by_filter_{$s}_{$iPage}_{$iPerPage}", array("blog_relation_change_blog_{$sBlogId}"), 60*60*24*3);
|
||||
}
|
||||
|
@ -400,7 +418,7 @@ class ModuleBlog extends Module {
|
|||
}
|
||||
$aUsers=$this->User_GetUsersAdditionalData($aUserId);
|
||||
$aBlogs=$this->Blog_GetBlogsAdditionalData($sBlogId);
|
||||
|
||||
|
||||
$aResults=array();
|
||||
foreach ($data['collection'] as $oBlogUser) {
|
||||
if (isset($aUsers[$oBlogUser->getUserId()])) {
|
||||
|
@ -417,13 +435,15 @@ class ModuleBlog extends Module {
|
|||
}
|
||||
$data['collection']=$aResults;
|
||||
}
|
||||
return $data;
|
||||
return $data;
|
||||
}
|
||||
/**
|
||||
* Получает отношения юзера к блогам(состоит в блоге или нет)
|
||||
*
|
||||
* @param unknown_type $sUserId
|
||||
* @return unknown
|
||||
* @param int $sUserId ID пользователя
|
||||
* @param int|null $iRole Роль пользователя в блоге
|
||||
* @param bool $bReturnIdOnly Возвращать только ID блогов или полные объекты
|
||||
* @return array
|
||||
*/
|
||||
public function GetBlogUsersByUserId($sUserId,$iRole=null,$bReturnIdOnly=false) {
|
||||
$aFilter=array(
|
||||
|
@ -433,19 +453,18 @@ class ModuleBlog extends Module {
|
|||
$aFilter['user_role']=$iRole;
|
||||
}
|
||||
$s=serialize($aFilter);
|
||||
if (false === ($data = $this->Cache_Get("blog_relation_user_by_filter_$s"))) {
|
||||
if (false === ($data = $this->Cache_Get("blog_relation_user_by_filter_$s"))) {
|
||||
$data = $this->oMapperBlog->GetBlogUsers($aFilter);
|
||||
$this->Cache_Set($data, "blog_relation_user_by_filter_$s", array("blog_update", "blog_relation_change_{$sUserId}"), 60*60*24*3);
|
||||
}
|
||||
/**
|
||||
* Достаем дополнительные данные, для этого формируем список блогов и делаем мульти-запрос
|
||||
*/
|
||||
$aBlogId=array();
|
||||
$aBlogId=array();
|
||||
if ($data) {
|
||||
foreach ($data as $oBlogUser) {
|
||||
$aBlogId[]=$oBlogUser->getBlogId();
|
||||
}
|
||||
|
||||
/**
|
||||
* Если указано возвращать полные объекты
|
||||
*/
|
||||
|
@ -463,7 +482,7 @@ class ModuleBlog extends Module {
|
|||
} else {
|
||||
$oBlogUser->setBlog(null);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return ($bReturnIdOnly) ? $aBlogId : $data;
|
||||
|
@ -471,11 +490,11 @@ class ModuleBlog extends Module {
|
|||
/**
|
||||
* Состоит ли юзер в конкретном блоге
|
||||
*
|
||||
* @param unknown_type $sBlogId
|
||||
* @param unknown_type $sUserId
|
||||
* @return unknown
|
||||
* @param int $sBlogId ID блога
|
||||
* @param int $sUserId ID пользователя
|
||||
* @return ModuleBlog_EntityBlogUser|null
|
||||
*/
|
||||
public function GetBlogUserByBlogIdAndUserId($sBlogId,$sUserId) {
|
||||
public function GetBlogUserByBlogIdAndUserId($sBlogId,$sUserId) {
|
||||
if ($aBlogUser=$this->GetBlogUsersByArrayBlog($sBlogId,$sUserId)) {
|
||||
if (isset($aBlogUser[$sBlogId])) {
|
||||
return $aBlogUser[$sBlogId];
|
||||
|
@ -486,7 +505,9 @@ class ModuleBlog extends Module {
|
|||
/**
|
||||
* Получить список отношений блог-юзер по списку айдишников
|
||||
*
|
||||
* @param unknown_type $aTopicId
|
||||
* @param array $aBlogId Список ID блогов
|
||||
* @param int $sUserId ID пользователя
|
||||
* @return array
|
||||
*/
|
||||
public function GetBlogUsersByArrayBlog($aBlogId,$sUserId) {
|
||||
if (!$aBlogId) {
|
||||
|
@ -505,25 +526,25 @@ class ModuleBlog extends Module {
|
|||
* Делаем мульти-запрос к кешу
|
||||
*/
|
||||
$aCacheKeys=func_build_cache_keys($aBlogId,'blog_relation_user_','_'.$sUserId);
|
||||
if (false !== ($data = $this->Cache_Get($aCacheKeys))) {
|
||||
if (false !== ($data = $this->Cache_Get($aCacheKeys))) {
|
||||
/**
|
||||
* проверяем что досталось из кеша
|
||||
*/
|
||||
foreach ($aCacheKeys as $sValue => $sKey ) {
|
||||
if (array_key_exists($sKey,$data)) {
|
||||
if (array_key_exists($sKey,$data)) {
|
||||
if ($data[$sKey]) {
|
||||
$aBlogUsers[$data[$sKey]->getBlogId()]=$data[$sKey];
|
||||
} else {
|
||||
$aBlogIdNotNeedQuery[]=$sValue;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Смотрим каких блогов не было в кеше и делаем запрос в БД
|
||||
*/
|
||||
$aBlogIdNeedQuery=array_diff($aBlogId,array_keys($aBlogUsers));
|
||||
$aBlogIdNeedQuery=array_diff($aBlogIdNeedQuery,$aBlogIdNotNeedQuery);
|
||||
*/
|
||||
$aBlogIdNeedQuery=array_diff($aBlogId,array_keys($aBlogUsers));
|
||||
$aBlogIdNeedQuery=array_diff($aBlogIdNeedQuery,$aBlogIdNotNeedQuery);
|
||||
$aBlogIdNeedStore=$aBlogIdNeedQuery;
|
||||
if ($data = $this->oMapperBlog->GetBlogUsersByArrayBlog($aBlogIdNeedQuery,$sUserId)) {
|
||||
foreach ($data as $oBlogUser) {
|
||||
|
@ -540,44 +561,56 @@ class ModuleBlog extends Module {
|
|||
*/
|
||||
foreach ($aBlogIdNeedStore as $sId) {
|
||||
$this->Cache_Set(null, "blog_relation_user_{$sId}_{$sUserId}", array(), 60*60*24*4);
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Сортируем результат согласно входящему массиву
|
||||
*/
|
||||
$aBlogUsers=func_array_sort_by_keys($aBlogUsers,$aBlogId);
|
||||
return $aBlogUsers;
|
||||
}
|
||||
return $aBlogUsers;
|
||||
}
|
||||
/**
|
||||
* Получить список отношений блог-юзер по списку айдишников используя общий кеш
|
||||
*
|
||||
* @param array $aBlogId Список ID блогов
|
||||
* @param int $sUserId ID пользователя
|
||||
* @return array
|
||||
*/
|
||||
public function GetBlogUsersByArrayBlogSolid($aBlogId,$sUserId) {
|
||||
if (!is_array($aBlogId)) {
|
||||
$aBlogId=array($aBlogId);
|
||||
}
|
||||
$aBlogId=array_unique($aBlogId);
|
||||
$aBlogUsers=array();
|
||||
$aBlogId=array_unique($aBlogId);
|
||||
$aBlogUsers=array();
|
||||
$s=join(',',$aBlogId);
|
||||
if (false === ($data = $this->Cache_Get("blog_relation_user_{$sUserId}_id_{$s}"))) {
|
||||
if (false === ($data = $this->Cache_Get("blog_relation_user_{$sUserId}_id_{$s}"))) {
|
||||
$data = $this->oMapperBlog->GetBlogUsersByArrayBlog($aBlogId,$sUserId);
|
||||
foreach ($data as $oBlogUser) {
|
||||
$aBlogUsers[$oBlogUser->getBlogId()]=$oBlogUser;
|
||||
}
|
||||
$this->Cache_Set($aBlogUsers, "blog_relation_user_{$sUserId}_id_{$s}", array("blog_update", "blog_relation_change_{$sUserId}"), 60*60*24*1);
|
||||
return $aBlogUsers;
|
||||
}
|
||||
}
|
||||
return $data;
|
||||
}
|
||||
/**
|
||||
* Обновляет отношения пользователя с блогом
|
||||
*
|
||||
* @param ModuleBlog_EntityBlogUser $oBlogUser Объект отновшения
|
||||
* @return bool
|
||||
*/
|
||||
public function UpdateRelationBlogUser(ModuleBlog_EntityBlogUser $oBlogUser) {
|
||||
$this->Cache_Clean(Zend_Cache::CLEANING_MODE_MATCHING_TAG,array("blog_relation_change_{$oBlogUser->getUserId()}","blog_relation_change_blog_{$oBlogUser->getBlogId()}"));
|
||||
$this->Cache_Clean(Zend_Cache::CLEANING_MODE_MATCHING_TAG,array("blog_relation_change_{$oBlogUser->getUserId()}","blog_relation_change_blog_{$oBlogUser->getBlogId()}"));
|
||||
$this->Cache_Delete("blog_relation_user_{$oBlogUser->getBlogId()}_{$oBlogUser->getUserId()}");
|
||||
return $this->oMapperBlog->UpdateRelationBlogUser($oBlogUser);
|
||||
}
|
||||
|
||||
/**
|
||||
* Возвращает список блогов по фильтру
|
||||
*
|
||||
* @param $aFilter
|
||||
* @param $aOrder
|
||||
* @param $iCurrPage
|
||||
* @param $iPerPage
|
||||
* @param array $aAllowData
|
||||
* @param array $aFilter Фильтр выборки блогов
|
||||
* @param array $aOrder Сортировка блогов
|
||||
* @param int $iCurrPage Номер текущей страницы
|
||||
* @param int $iPerPage Количество элементов на одну страницу
|
||||
* @param array $aAllowData Список типов данных, которые нужно подтянуть к списку блогов
|
||||
* @return array('collection'=>array,'count'=>int)
|
||||
*/
|
||||
public function GetBlogsByFilter($aFilter,$aOrder,$iCurrPage,$iPerPage,$aAllowData=array('owner'=>array(),'relation_user')) {
|
||||
|
@ -592,8 +625,8 @@ class ModuleBlog extends Module {
|
|||
/**
|
||||
* Получает список блогов по рейтингу
|
||||
*
|
||||
* @param $iCurrPage
|
||||
* @param $iPerPage
|
||||
* @param int $iCurrPage Номер текущей страницы
|
||||
* @param int $iPerPage Количество элементов на одну страницу
|
||||
* @return array('collection'=>array,'count'=>int)
|
||||
*/
|
||||
public function GetBlogsRating($iCurrPage,$iPerPage) {
|
||||
|
@ -602,40 +635,40 @@ class ModuleBlog extends Module {
|
|||
/**
|
||||
* Список подключенных блогов по рейтингу
|
||||
*
|
||||
* @param unknown_type $sUserId
|
||||
* @param unknown_type $iLimit
|
||||
* @return unknown
|
||||
* @param int $sUserId ID пользователя
|
||||
* @param int $iLimit Ограничение на количество в ответе
|
||||
* @return array
|
||||
*/
|
||||
public function GetBlogsRatingJoin($sUserId,$iLimit) {
|
||||
if (false === ($data = $this->Cache_Get("blog_rating_join_{$sUserId}_{$iLimit}"))) {
|
||||
$data = $this->oMapperBlog->GetBlogsRatingJoin($sUserId,$iLimit);
|
||||
public function GetBlogsRatingJoin($sUserId,$iLimit) {
|
||||
if (false === ($data = $this->Cache_Get("blog_rating_join_{$sUserId}_{$iLimit}"))) {
|
||||
$data = $this->oMapperBlog->GetBlogsRatingJoin($sUserId,$iLimit);
|
||||
$this->Cache_Set($data, "blog_rating_join_{$sUserId}_{$iLimit}", array('blog_update',"blog_relation_change_{$sUserId}"), 60*60*24);
|
||||
}
|
||||
return $data;
|
||||
return $data;
|
||||
}
|
||||
/**
|
||||
* Список своих блогов по рейтингу
|
||||
*
|
||||
* @param unknown_type $sUserId
|
||||
* @param unknown_type $iLimit
|
||||
* @return unknown
|
||||
* @param int $sUserId ID пользователя
|
||||
* @param int $iLimit Ограничение на количество в ответе
|
||||
* @return array
|
||||
*/
|
||||
public function GetBlogsRatingSelf($sUserId,$iLimit) {
|
||||
$aResult=$this->GetBlogsByFilter(array('exclude_type'=>'personal','user_owner_id'=>$sUserId),array('blog_rating'=>'desc'),1,$iLimit);
|
||||
return $aResult['collection'];
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Получает список блогов в которые может постить юзер
|
||||
*
|
||||
* @param unknown_type $oUser
|
||||
* @return unknown
|
||||
* @param ModuleUser_EntityUser $oUser Объект пользователя
|
||||
* @return array
|
||||
*/
|
||||
public function GetBlogsAllowByUser($oUser) {
|
||||
public function GetBlogsAllowByUser($oUser) {
|
||||
if ($oUser->isAdministrator()) {
|
||||
return $this->GetBlogs();
|
||||
} else {
|
||||
} else {
|
||||
$aAllowBlogsUser=$this->GetBlogsByOwnerId($oUser->getId());
|
||||
$aBlogUsers=$this->GetBlogUsersByUserId($oUser->getId());
|
||||
$aBlogUsers=$this->GetBlogUsersByUserId($oUser->getId());
|
||||
foreach ($aBlogUsers as $oBlogUser) {
|
||||
$oBlog=$oBlogUser->getBlog();
|
||||
if ($this->ACL_CanAddTopic($oUser,$oBlog) or $oBlogUser->getIsAdministrator() or $oBlogUser->getIsModerator()) {
|
||||
|
@ -643,79 +676,69 @@ class ModuleBlog extends Module {
|
|||
}
|
||||
}
|
||||
return $aAllowBlogsUser;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Получаем массив блогов,
|
||||
* которые являются открытыми для пользователя
|
||||
* Получаем массив блогов, которые являются открытыми для пользователя
|
||||
*
|
||||
* @param ModuleUser_EntityUser $oUser
|
||||
* @param ModuleUser_EntityUser $oUser Объект пользователя
|
||||
* @return array
|
||||
*/
|
||||
public function GetAccessibleBlogsByUser($oUser) {
|
||||
if ($oUser->isAdministrator()) {
|
||||
return $this->GetBlogs(true);
|
||||
}
|
||||
|
||||
if (false === ($aOpenBlogsUser = $this->Cache_Get("blog_accessible_user_{$oUser->getId()}"))) {
|
||||
/**
|
||||
* Заносим блоги, созданные пользователем
|
||||
*/
|
||||
$aOpenBlogsUser=array();
|
||||
* Заносим блоги, созданные пользователем
|
||||
*/
|
||||
$aOpenBlogsUser=$this->GetBlogsByOwnerId($oUser->getId(),true);
|
||||
/**
|
||||
* Добавляем блоги, в которых состоит пользователь
|
||||
* (читателем, модератором, или администратором)
|
||||
*/
|
||||
* Добавляем блоги, в которых состоит пользователь
|
||||
* (читателем, модератором, или администратором)
|
||||
*/
|
||||
$aOpenBlogsUser=array_merge($aOpenBlogsUser,$this->GetBlogUsersByUserId($oUser->getId(),null,true));
|
||||
$this->Cache_Set($aOpenBlogsUser, "blog_accessible_user_{$oUser->getId()}", array('blog_new','blog_update',"blog_relation_change_{$oUser->getId()}"), 60*60*24);
|
||||
}
|
||||
return $aOpenBlogsUser;
|
||||
}
|
||||
|
||||
/**
|
||||
* Получаем массив идентификаторов блогов,
|
||||
* которые являются закрытыми для пользователя
|
||||
* Получаем массив идентификаторов блогов, которые являются закрытыми для пользователя
|
||||
*
|
||||
* @param ModuleUser_EntityUser $oUser
|
||||
* @param ModuleUser_EntityUser|null $oUser Пользователь
|
||||
* @return array
|
||||
*/
|
||||
*/
|
||||
public function GetInaccessibleBlogsByUser($oUser=null) {
|
||||
if ($oUser&&$oUser->isAdministrator()) {
|
||||
return array();
|
||||
}
|
||||
|
||||
$sUserId=$oUser ? $oUser->getId() : 'quest';
|
||||
$sUserId=$oUser ? $oUser->getId() : 'quest';
|
||||
if (false === ($aCloseBlogs = $this->Cache_Get("blog_inaccessible_user_{$sUserId}"))) {
|
||||
$aCloseBlogs=array();
|
||||
$aCloseBlogs = $this->oMapperBlog->GetCloseBlogs();
|
||||
|
||||
if($oUser) {
|
||||
/**
|
||||
* Получаем массив идентификаторов блогов,
|
||||
* которые являются откытыми для данного пользователя
|
||||
*/
|
||||
$aOpenBlogs = array();
|
||||
* Получаем массив идентификаторов блогов,
|
||||
* которые являются откытыми для данного пользователя
|
||||
*/
|
||||
$aOpenBlogs=$this->GetBlogUsersByUserId($oUser->getId(),null,true);
|
||||
|
||||
$aCloseBlogs=array_diff($aCloseBlogs,$aOpenBlogs);
|
||||
}
|
||||
|
||||
// Сохраняем в кеш
|
||||
/**
|
||||
* Сохраняем в кеш
|
||||
*/
|
||||
if ($oUser) {
|
||||
$this->Cache_Set($aCloseBlogs, "blog_inaccessible_user_{$sUserId}", array('blog_new','blog_update',"blog_relation_change_{$oUser->getId()}"), 60*60*24);
|
||||
$this->Cache_Set($aCloseBlogs, "blog_inaccessible_user_{$sUserId}", array('blog_new','blog_update',"blog_relation_change_{$oUser->getId()}"), 60*60*24);
|
||||
} else {
|
||||
$this->Cache_Set($aCloseBlogs, "blog_inaccessible_user_{$sUserId}", array('blog_new','blog_update'), 60*60*24*3);
|
||||
}
|
||||
}
|
||||
return $aCloseBlogs;
|
||||
}
|
||||
|
||||
/**
|
||||
* Удаляет блог
|
||||
*
|
||||
* @param int $iBlogId
|
||||
* @param int $iBlogId ID блога
|
||||
* @return bool
|
||||
*/
|
||||
public function DeleteBlog($iBlogId) {
|
||||
|
@ -723,10 +746,10 @@ class ModuleBlog extends Module {
|
|||
$iBlogId = $iBlogId->getId();
|
||||
}
|
||||
/**
|
||||
* Получаем идентификаторы топиков блога. Удаляем топики блога.
|
||||
* Получаем идентификаторы топиков блога. Удаляем топики блога.
|
||||
* При удалении топиков удаляются комментарии к ним и голоса.
|
||||
*/
|
||||
$aTopicIds = $this->Topic_GetTopicsByBlogId($iBlogId);
|
||||
$aTopicIds = $this->Topic_GetTopicsByBlogId($iBlogId);
|
||||
/**
|
||||
* Если блог не удален, возвращаем false
|
||||
*/
|
||||
|
@ -742,7 +765,7 @@ class ModuleBlog extends Module {
|
|||
)
|
||||
);
|
||||
$this->Cache_Delete("blog_{$iBlogId}");
|
||||
|
||||
|
||||
if(is_array($aTopicIds) and count($aTopicIds)) {
|
||||
/**
|
||||
* Удаляем топики
|
||||
|
@ -757,47 +780,41 @@ class ModuleBlog extends Module {
|
|||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Удаляем связи пользователей блога.
|
||||
*/
|
||||
if(Config::Get('db.tables.engine')!="InnoDB"){
|
||||
if(Config::Get('db.tables.engine')!="InnoDB"){
|
||||
$this->oMapperBlog->DeleteBlogUsersByBlogId($iBlogId);
|
||||
}
|
||||
/**
|
||||
* Удаляем голосование за блог
|
||||
*/
|
||||
$this->Vote_DeleteVoteByTarget($iBlogId, 'blog');
|
||||
/**
|
||||
* Удаляем комментарии к записям из блога и метки прямого эфира
|
||||
*/
|
||||
|
||||
return true;
|
||||
}
|
||||
/**
|
||||
* Upload blog avatar on server
|
||||
* Make resized images
|
||||
* Загружает аватар в блог
|
||||
*
|
||||
* @param array $aFile
|
||||
* @param ModuleBlog_EntityBlog $oUser
|
||||
* @return (string|bool)
|
||||
* @param array $aFile Массив $_FILES при загрузке аватара
|
||||
* @param ModuleBlog_EntityBlog $oBlog Блог
|
||||
* @return bool
|
||||
*/
|
||||
public function UploadBlogAvatar($aFile,$oBlog) {
|
||||
if(!is_array($aFile) || !isset($aFile['tmp_name'])) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$sFileTmp=Config::Get('sys.cache.dir').func_generator();
|
||||
|
||||
$sFileTmp=Config::Get('sys.cache.dir').func_generator();
|
||||
if (!move_uploaded_file($aFile['tmp_name'],$sFileTmp)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
$sPath=$this->Image_GetIdDir($oBlog->getOwnerId());
|
||||
$aParams=$this->Image_BuildParams('avatar');
|
||||
|
||||
$oImage=$this->Image_CreateImageObject($sFileTmp);
|
||||
/**
|
||||
* Если объект изображения не создан,
|
||||
* Если объект изображения не создан,
|
||||
* возвращаем ошибку
|
||||
*/
|
||||
if($sError=$oImage->get_last_error()) {
|
||||
|
@ -805,12 +822,12 @@ class ModuleBlog extends Module {
|
|||
// $this->Message_AddError($sError,$this->Lang_Get('error'));
|
||||
@unlink($sFileTmp);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Срезаем квадрат
|
||||
*/
|
||||
$oImage = $this->Image_CropSquare($oImage);
|
||||
|
||||
|
||||
$aSize=Config::Get('module.blog.avatar_size');
|
||||
rsort($aSize,SORT_NUMERIC);
|
||||
$sSizeBig=array_shift($aSize);
|
||||
|
@ -835,36 +852,34 @@ class ModuleBlog extends Module {
|
|||
return false;
|
||||
}
|
||||
/**
|
||||
* Delete blog avatar from server
|
||||
* Удаляет аватар блога с сервера
|
||||
*
|
||||
* @param ModuleBlog_EntityBlog $oUser
|
||||
* @param ModuleBlog_EntityBlog $oBlog Блог
|
||||
*/
|
||||
public function DeleteBlogAvatar($oBlog) {
|
||||
/**
|
||||
* Если аватар есть, удаляем его и его рейсайзы
|
||||
*/
|
||||
if($oBlog->getAvatar()) {
|
||||
if($oBlog->getAvatar()) {
|
||||
$aSize=array_merge(Config::Get('module.blog.avatar_size'),array(48));
|
||||
foreach ($aSize as $iSize) {
|
||||
$this->Image_RemoveFile($this->Image_GetServerPath($oBlog->getAvatarPath($iSize)));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Пересчет количества топиков в блогах
|
||||
*
|
||||
* @return mixed
|
||||
* @return bool
|
||||
*/
|
||||
public function RecalculateCountTopic() {
|
||||
return $this->oMapperBlog->RecalculateCountTopic();
|
||||
}
|
||||
|
||||
/**
|
||||
* Пересчет количества топиков в конкретном блоге
|
||||
*
|
||||
* @param $iBlogId
|
||||
* @return mixed
|
||||
* @param int $iBlogId ID блога
|
||||
* @return bool
|
||||
*/
|
||||
public function RecalculateCountTopicByBlogId($iBlogId) {
|
||||
return $this->oMapperBlog->RecalculateCountTopic($iBlogId);
|
||||
|
|
|
@ -15,144 +15,352 @@
|
|||
---------------------------------------------------------
|
||||
*/
|
||||
|
||||
class ModuleBlog_EntityBlog extends Entity
|
||||
{
|
||||
public function getId() {
|
||||
return $this->_getDataOne('blog_id');
|
||||
}
|
||||
public function getOwnerId() {
|
||||
return $this->_getDataOne('user_owner_id');
|
||||
}
|
||||
public function getTitle() {
|
||||
return $this->_getDataOne('blog_title');
|
||||
}
|
||||
public function getDescription() {
|
||||
return $this->_getDataOne('blog_description');
|
||||
}
|
||||
public function getType() {
|
||||
return $this->_getDataOne('blog_type');
|
||||
}
|
||||
public function getDateAdd() {
|
||||
return $this->_getDataOne('blog_date_add');
|
||||
}
|
||||
public function getDateEdit() {
|
||||
return $this->_getDataOne('blog_date_edit');
|
||||
}
|
||||
public function getRating() {
|
||||
return number_format(round($this->_getDataOne('blog_rating'),2), 2, '.', '');
|
||||
}
|
||||
public function getCountVote() {
|
||||
return $this->_getDataOne('blog_count_vote');
|
||||
}
|
||||
public function getCountUser() {
|
||||
return $this->_getDataOne('blog_count_user');
|
||||
}
|
||||
/**
|
||||
* Сущность блога
|
||||
*
|
||||
* @package modules.blog
|
||||
* @since 1.0
|
||||
*/
|
||||
class ModuleBlog_EntityBlog extends Entity {
|
||||
/**
|
||||
* Возвращает ID блога
|
||||
*
|
||||
* @return int|null
|
||||
*/
|
||||
public function getId() {
|
||||
return $this->_getDataOne('blog_id');
|
||||
}
|
||||
/**
|
||||
* Возвращает ID хозяина блога
|
||||
*
|
||||
* @return int|null
|
||||
*/
|
||||
public function getOwnerId() {
|
||||
return $this->_getDataOne('user_owner_id');
|
||||
}
|
||||
/**
|
||||
* Возвращает название блога
|
||||
*
|
||||
* @return string|null
|
||||
*/
|
||||
public function getTitle() {
|
||||
return $this->_getDataOne('blog_title');
|
||||
}
|
||||
/**
|
||||
* Возвращает описание блога
|
||||
*
|
||||
* @return string|null
|
||||
*/
|
||||
public function getDescription() {
|
||||
return $this->_getDataOne('blog_description');
|
||||
}
|
||||
/**
|
||||
* Возвращает тип блога
|
||||
*
|
||||
* @return string|null
|
||||
*/
|
||||
public function getType() {
|
||||
return $this->_getDataOne('blog_type');
|
||||
}
|
||||
/**
|
||||
* Возвращает дату создания блога
|
||||
*
|
||||
* @return string|null
|
||||
*/
|
||||
public function getDateAdd() {
|
||||
return $this->_getDataOne('blog_date_add');
|
||||
}
|
||||
/**
|
||||
* Возвращает дату редактирования блога
|
||||
*
|
||||
* @return string|null
|
||||
*/
|
||||
public function getDateEdit() {
|
||||
return $this->_getDataOne('blog_date_edit');
|
||||
}
|
||||
/**
|
||||
* Возвращает рейтинг блога
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getRating() {
|
||||
return number_format(round($this->_getDataOne('blog_rating'),2), 2, '.', '');
|
||||
}
|
||||
/**
|
||||
* Возврщает количество проголосовавших за блог
|
||||
*
|
||||
* @return int|null
|
||||
*/
|
||||
public function getCountVote() {
|
||||
return $this->_getDataOne('blog_count_vote');
|
||||
}
|
||||
/**
|
||||
* Возвращает количество пользователей в блоге
|
||||
*
|
||||
* @return int|null
|
||||
*/
|
||||
public function getCountUser() {
|
||||
return $this->_getDataOne('blog_count_user');
|
||||
}
|
||||
/**
|
||||
* Возвращает количество топиков в блоге
|
||||
*
|
||||
* @return int|null
|
||||
*/
|
||||
public function getCountTopic() {
|
||||
return $this->_getDataOne('blog_count_topic');
|
||||
}
|
||||
public function getLimitRatingTopic() {
|
||||
return $this->_getDataOne('blog_limit_rating_topic');
|
||||
}
|
||||
/**
|
||||
* Возвращает ограничение по рейтингу для постинга в блог
|
||||
*
|
||||
* @return int|null
|
||||
*/
|
||||
public function getLimitRatingTopic() {
|
||||
return $this->_getDataOne('blog_limit_rating_topic');
|
||||
}
|
||||
/**
|
||||
* Возвращает URL блога
|
||||
*
|
||||
* @return string|null
|
||||
*/
|
||||
public function getUrl() {
|
||||
return $this->_getDataOne('blog_url');
|
||||
}
|
||||
public function getAvatar() {
|
||||
return $this->_getDataOne('blog_avatar');
|
||||
}
|
||||
public function getAvatarType() {
|
||||
return ($sPath=$this->getAvatarPath()) ? pathinfo($sPath,PATHINFO_EXTENSION) : null;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public function getOwner() {
|
||||
return $this->_getDataOne('owner');
|
||||
}
|
||||
public function getVote() {
|
||||
return $this->_getDataOne('vote');
|
||||
}
|
||||
public function getAvatarPath($iSize=48) {
|
||||
if ($sPath=$this->getAvatar()) {
|
||||
return preg_replace("#_\d{1,3}x\d{1,3}(\.\w{3,4})$#", ((($iSize==0)?"":"_{$iSize}x{$iSize}") . "\\1"),$sPath);
|
||||
} else {
|
||||
return Config::Get('path.static.skin').'/images/avatar_blog_'.$iSize.'x'.$iSize.'.jpg';
|
||||
}
|
||||
}
|
||||
public function getUserIsJoin() {
|
||||
return $this->_getDataOne('user_is_join');
|
||||
}
|
||||
public function getUserIsAdministrator() {
|
||||
return $this->_getDataOne('user_is_administrator');
|
||||
}
|
||||
public function getUserIsModerator() {
|
||||
return $this->_getDataOne('user_is_moderator');
|
||||
}
|
||||
public function getUrlFull() {
|
||||
if ($this->getType()=='personal') {
|
||||
return $this->getOwner()->getUserWebPath().'created/topics/';
|
||||
} else {
|
||||
return Router::GetPath('blog').$this->getUrl().'/';
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return $this->_getDataOne('blog_url');
|
||||
}
|
||||
/**
|
||||
* Возвращает полный серверный путь до аватара блога
|
||||
*
|
||||
* @return string|null
|
||||
*/
|
||||
public function getAvatar() {
|
||||
return $this->_getDataOne('blog_avatar');
|
||||
}
|
||||
/**
|
||||
* Возвращает расширения аватра блога
|
||||
*
|
||||
* @return string|null
|
||||
*/
|
||||
public function getAvatarType() {
|
||||
return ($sPath=$this->getAvatarPath()) ? pathinfo($sPath,PATHINFO_EXTENSION) : null;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Возвращает объект пользователя хозяина блога
|
||||
*
|
||||
* @return ModuleUser_EntityUser|null
|
||||
*/
|
||||
public function getOwner() {
|
||||
return $this->_getDataOne('owner');
|
||||
}
|
||||
/**
|
||||
* Возвращает объект голосования за блог
|
||||
*
|
||||
* @return ModuleVote_EntityVote|null
|
||||
*/
|
||||
public function getVote() {
|
||||
return $this->_getDataOne('vote');
|
||||
}
|
||||
/**
|
||||
* Возвращает полный серверный путь до аватара блога определенного размера
|
||||
*
|
||||
* @param int $iSize Размер аватара
|
||||
* @return string
|
||||
*/
|
||||
public function getAvatarPath($iSize=48) {
|
||||
if ($sPath=$this->getAvatar()) {
|
||||
return preg_replace("#_\d{1,3}x\d{1,3}(\.\w{3,4})$#", ((($iSize==0)?"":"_{$iSize}x{$iSize}") . "\\1"),$sPath);
|
||||
} else {
|
||||
return Config::Get('path.static.skin').'/images/avatar_blog_'.$iSize.'x'.$iSize.'.jpg';
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Возвращает факт присоединения пользователя к блогу
|
||||
*
|
||||
* @return bool|null
|
||||
*/
|
||||
public function getUserIsJoin() {
|
||||
return $this->_getDataOne('user_is_join');
|
||||
}
|
||||
/**
|
||||
* Проверяет является ли пользователь администратором блога
|
||||
*
|
||||
* @return bool|null
|
||||
*/
|
||||
public function getUserIsAdministrator() {
|
||||
return $this->_getDataOne('user_is_administrator');
|
||||
}
|
||||
/**
|
||||
* Проверяет является ли пользователь модератором блога
|
||||
*
|
||||
* @return bool|null
|
||||
*/
|
||||
public function getUserIsModerator() {
|
||||
return $this->_getDataOne('user_is_moderator');
|
||||
}
|
||||
/**
|
||||
* Возвращает полный URL блога
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getUrlFull() {
|
||||
if ($this->getType()=='personal') {
|
||||
return $this->getOwner()->getUserWebPath().'created/topics/';
|
||||
} else {
|
||||
return Router::GetPath('blog').$this->getUrl().'/';
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает ID блога
|
||||
*
|
||||
* @param int $data
|
||||
*/
|
||||
public function setId($data) {
|
||||
$this->_aData['blog_id']=$data;
|
||||
}
|
||||
public function setOwnerId($data) {
|
||||
$this->_aData['user_owner_id']=$data;
|
||||
}
|
||||
public function setTitle($data) {
|
||||
$this->_aData['blog_title']=$data;
|
||||
}
|
||||
public function setDescription($data) {
|
||||
$this->_aData['blog_description']=$data;
|
||||
}
|
||||
public function setType($data) {
|
||||
$this->_aData['blog_type']=$data;
|
||||
}
|
||||
public function setDateAdd($data) {
|
||||
$this->_aData['blog_date_add']=$data;
|
||||
}
|
||||
public function setDateEdit($data) {
|
||||
$this->_aData['blog_date_edit']=$data;
|
||||
}
|
||||
public function setRating($data) {
|
||||
$this->_aData['blog_rating']=$data;
|
||||
}
|
||||
public function setCountVote($data) {
|
||||
$this->_aData['blog_count_vote']=$data;
|
||||
}
|
||||
public function setCountUser($data) {
|
||||
$this->_aData['blog_count_user']=$data;
|
||||
}
|
||||
$this->_aData['blog_id']=$data;
|
||||
}
|
||||
/**
|
||||
* Устанавливает ID хозяина блога
|
||||
*
|
||||
* @param int $data
|
||||
*/
|
||||
public function setOwnerId($data) {
|
||||
$this->_aData['user_owner_id']=$data;
|
||||
}
|
||||
/**
|
||||
* Устанавливает заголовок блога
|
||||
*
|
||||
* @param string $data
|
||||
*/
|
||||
public function setTitle($data) {
|
||||
$this->_aData['blog_title']=$data;
|
||||
}
|
||||
/**
|
||||
* Устанавливает описание блога
|
||||
*
|
||||
* @param string $data
|
||||
*/
|
||||
public function setDescription($data) {
|
||||
$this->_aData['blog_description']=$data;
|
||||
}
|
||||
/**
|
||||
* Устанавливает тип блога
|
||||
*
|
||||
* @param string $data
|
||||
*/
|
||||
public function setType($data) {
|
||||
$this->_aData['blog_type']=$data;
|
||||
}
|
||||
/**
|
||||
* Устанавливает дату создания блога
|
||||
*
|
||||
* @param string $data
|
||||
*/
|
||||
public function setDateAdd($data) {
|
||||
$this->_aData['blog_date_add']=$data;
|
||||
}
|
||||
/**
|
||||
* Устанавливает дату редактирования топика
|
||||
*
|
||||
* @param string $data
|
||||
*/
|
||||
public function setDateEdit($data) {
|
||||
$this->_aData['blog_date_edit']=$data;
|
||||
}
|
||||
/**
|
||||
* Устанавливает рейтинг блога
|
||||
*
|
||||
* @param float $data
|
||||
*/
|
||||
public function setRating($data) {
|
||||
$this->_aData['blog_rating']=$data;
|
||||
}
|
||||
/**
|
||||
* Устаналивает количество проголосовавших
|
||||
*
|
||||
* @param int $data
|
||||
*/
|
||||
public function setCountVote($data) {
|
||||
$this->_aData['blog_count_vote']=$data;
|
||||
}
|
||||
/**
|
||||
* Устанавливает количество пользователей блога
|
||||
*
|
||||
* @param int $data
|
||||
*/
|
||||
public function setCountUser($data) {
|
||||
$this->_aData['blog_count_user']=$data;
|
||||
}
|
||||
/**
|
||||
* Устанавливает количество топиков в блоге
|
||||
*
|
||||
* @param int $data
|
||||
*/
|
||||
public function setCountTopic($data) {
|
||||
$this->_aData['blog_count_topic']=$data;
|
||||
}
|
||||
public function setLimitRatingTopic($data) {
|
||||
$this->_aData['blog_limit_rating_topic']=$data;
|
||||
}
|
||||
public function setUrl($data) {
|
||||
$this->_aData['blog_url']=$data;
|
||||
}
|
||||
public function setAvatar($data) {
|
||||
$this->_aData['blog_avatar']=$data;
|
||||
}
|
||||
|
||||
public function setOwner($data) {
|
||||
$this->_aData['owner']=$data;
|
||||
}
|
||||
public function setUserIsAdministrator($data) {
|
||||
$this->_aData['user_is_administrator']=$data;
|
||||
}
|
||||
public function setUserIsModerator($data) {
|
||||
$this->_aData['user_is_moderator']=$data;
|
||||
}
|
||||
public function setUserIsJoin($data) {
|
||||
$this->_aData['user_is_join']=$data;
|
||||
}
|
||||
public function setVote($data) {
|
||||
$this->_aData['vote']=$data;
|
||||
}
|
||||
/**
|
||||
* Устанавливает ограничение на постинг в блог
|
||||
*
|
||||
* @param float $data
|
||||
*/
|
||||
public function setLimitRatingTopic($data) {
|
||||
$this->_aData['blog_limit_rating_topic']=$data;
|
||||
}
|
||||
/**
|
||||
* Устанавливает URL блога
|
||||
*
|
||||
* @param string $data
|
||||
*/
|
||||
public function setUrl($data) {
|
||||
$this->_aData['blog_url']=$data;
|
||||
}
|
||||
/**
|
||||
* Устанавливает полный серверный путь до аватара блога
|
||||
*
|
||||
* @param string $data
|
||||
*/
|
||||
public function setAvatar($data) {
|
||||
$this->_aData['blog_avatar']=$data;
|
||||
}
|
||||
/**
|
||||
* Устанавливает автора блога
|
||||
*
|
||||
* @param ModuleUser_EntityUser $data
|
||||
*/
|
||||
public function setOwner($data) {
|
||||
$this->_aData['owner']=$data;
|
||||
}
|
||||
/**
|
||||
* Устанавливает статус администратора блога для текущего пользователя
|
||||
*
|
||||
* @param bool $data
|
||||
*/
|
||||
public function setUserIsAdministrator($data) {
|
||||
$this->_aData['user_is_administrator']=$data;
|
||||
}
|
||||
/**
|
||||
* Устанавливает статус модератора блога для текущего пользователя
|
||||
*
|
||||
* @param bool $data
|
||||
*/
|
||||
public function setUserIsModerator($data) {
|
||||
$this->_aData['user_is_moderator']=$data;
|
||||
}
|
||||
/**
|
||||
* Устаналивает статус присоединения польователя к блогу
|
||||
*
|
||||
* @param bool $data
|
||||
*/
|
||||
public function setUserIsJoin($data) {
|
||||
$this->_aData['user_is_join']=$data;
|
||||
}
|
||||
/**
|
||||
* Устанавливает объект голосования за блог
|
||||
*
|
||||
* @param ModuleVote_EntityVote $data
|
||||
*/
|
||||
public function setVote($data) {
|
||||
$this->_aData['vote']=$data;
|
||||
}
|
||||
}
|
||||
?>
|
|
@ -15,64 +15,136 @@
|
|||
---------------------------------------------------------
|
||||
*/
|
||||
|
||||
class ModuleBlog_EntityBlogUser extends Entity
|
||||
{
|
||||
public function getBlogId() {
|
||||
return $this->_getDataOne('blog_id');
|
||||
}
|
||||
public function getUserId() {
|
||||
return $this->_getDataOne('user_id');
|
||||
}
|
||||
public function getIsModerator() {
|
||||
return ($this->getUserRole()==ModuleBlog::BLOG_USER_ROLE_MODERATOR);
|
||||
}
|
||||
public function getIsAdministrator() {
|
||||
return ($this->getUserRole()==ModuleBlog::BLOG_USER_ROLE_ADMINISTRATOR);
|
||||
}
|
||||
/**
|
||||
* Сущность связи пользователя и блога
|
||||
*
|
||||
* @package modules.blog
|
||||
* @since 1.0
|
||||
*/
|
||||
class ModuleBlog_EntityBlogUser extends Entity {
|
||||
/**
|
||||
* Возвращает ID блога
|
||||
*
|
||||
* @return int|null
|
||||
*/
|
||||
public function getBlogId() {
|
||||
return $this->_getDataOne('blog_id');
|
||||
}
|
||||
/**
|
||||
* Возвращает ID пользователя
|
||||
*
|
||||
* @return int|null
|
||||
*/
|
||||
public function getUserId() {
|
||||
return $this->_getDataOne('user_id');
|
||||
}
|
||||
/**
|
||||
* Возвращает статус модератор пользователь или нет
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function getIsModerator() {
|
||||
return ($this->getUserRole()==ModuleBlog::BLOG_USER_ROLE_MODERATOR);
|
||||
}
|
||||
/**
|
||||
* Возвращает статус администратор пользователь или нет
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function getIsAdministrator() {
|
||||
return ($this->getUserRole()==ModuleBlog::BLOG_USER_ROLE_ADMINISTRATOR);
|
||||
}
|
||||
/**
|
||||
* Возвращает текущую роль пользователя в блоге
|
||||
*
|
||||
* @return int|null
|
||||
*/
|
||||
public function getUserRole() {
|
||||
return $this->_getDataOne('user_role');
|
||||
}
|
||||
|
||||
public function getBlog() {
|
||||
return $this->_getDataOne('blog');
|
||||
}
|
||||
public function getUser() {
|
||||
return $this->_getDataOne('user');
|
||||
}
|
||||
/**
|
||||
* Возвращает объект блога
|
||||
*
|
||||
* @return ModuleBlog_EntityBlog|null
|
||||
*/
|
||||
public function getBlog() {
|
||||
return $this->_getDataOne('blog');
|
||||
}
|
||||
/**
|
||||
* Возвращает объект пользователя
|
||||
*
|
||||
* @return ModuleUser_EntityUser|null
|
||||
*/
|
||||
public function getUser() {
|
||||
return $this->_getDataOne('user');
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Устанавливает ID блога
|
||||
*
|
||||
* @param int $data
|
||||
*/
|
||||
public function setBlogId($data) {
|
||||
$this->_aData['blog_id']=$data;
|
||||
}
|
||||
public function setUserId($data) {
|
||||
$this->_aData['user_id']=$data;
|
||||
}
|
||||
public function setIsModerator($data) {
|
||||
if($data && !$this->getIsModerator()) {
|
||||
/**
|
||||
* Повышаем статус до модератора
|
||||
*/
|
||||
$this->setUserRole(ModuleBlog::BLOG_USER_ROLE_MODERATOR);
|
||||
}
|
||||
}
|
||||
public function setIsAdministrator($data) {
|
||||
if($data && !$this->getIsAdministrator()) {
|
||||
/**
|
||||
* Повышаем статус до администратора
|
||||
*/
|
||||
$this->setUserRole(ModuleBlog::BLOG_USER_ROLE_ADMINISTRATOR);
|
||||
}
|
||||
}
|
||||
public function setUserRole($data) {
|
||||
$this->_aData['user_role']=$data;
|
||||
}
|
||||
|
||||
$this->_aData['blog_id']=$data;
|
||||
}
|
||||
/**
|
||||
* Устанавливает ID пользователя
|
||||
*
|
||||
* @param int $data
|
||||
*/
|
||||
public function setUserId($data) {
|
||||
$this->_aData['user_id']=$data;
|
||||
}
|
||||
/**
|
||||
* Устанавливает статус модератора блога
|
||||
*
|
||||
* @param bool $data
|
||||
*/
|
||||
public function setIsModerator($data) {
|
||||
if($data && !$this->getIsModerator()) {
|
||||
/**
|
||||
* Повышаем статус до модератора
|
||||
*/
|
||||
$this->setUserRole(ModuleBlog::BLOG_USER_ROLE_MODERATOR);
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Устанавливает статус администратора блога
|
||||
*
|
||||
* @param bool $data
|
||||
*/
|
||||
public function setIsAdministrator($data) {
|
||||
if($data && !$this->getIsAdministrator()) {
|
||||
/**
|
||||
* Повышаем статус до администратора
|
||||
*/
|
||||
$this->setUserRole(ModuleBlog::BLOG_USER_ROLE_ADMINISTRATOR);
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Устанавливает роль пользователя
|
||||
*
|
||||
* @param int $data
|
||||
*/
|
||||
public function setUserRole($data) {
|
||||
$this->_aData['user_role']=$data;
|
||||
}
|
||||
/**
|
||||
* Устанавливает блог
|
||||
*
|
||||
* @param ModuleBlog_EntityBlog $data
|
||||
*/
|
||||
public function setBlog($data) {
|
||||
$this->_aData['blog']=$data;
|
||||
}
|
||||
public function setUser($data) {
|
||||
$this->_aData['user']=$data;
|
||||
}
|
||||
$this->_aData['blog']=$data;
|
||||
}
|
||||
/**
|
||||
* Устанавливаем пользователя
|
||||
*
|
||||
* @param ModuleUser_EntityUser $data
|
||||
*/
|
||||
public function setUser($data) {
|
||||
$this->_aData['user']=$data;
|
||||
}
|
||||
}
|
||||
?>
|
|
@ -15,13 +15,19 @@
|
|||
---------------------------------------------------------
|
||||
*/
|
||||
|
||||
class ModuleBlog_MapperBlog extends Mapper {
|
||||
protected $oUserCurrent=null;
|
||||
|
||||
public function SetUserCurrent($oUserCurrent) {
|
||||
$this->oUserCurrent=$oUserCurrent;
|
||||
}
|
||||
|
||||
/**
|
||||
* Маппер для работы с БД по части блогов
|
||||
*
|
||||
* @package modules.blog
|
||||
* @since 1.0
|
||||
*/
|
||||
class ModuleBlog_MapperBlog extends Mapper {
|
||||
/**
|
||||
* Добавляет блог в БД
|
||||
*
|
||||
* @param ModuleBlog_EntityBlog $oBlog Объект блога
|
||||
* @return int|bool
|
||||
*/
|
||||
public function AddBlog(ModuleBlog_EntityBlog $oBlog) {
|
||||
$sql = "INSERT INTO ".Config::Get('db.table.blog')."
|
||||
(user_owner_id,
|
||||
|
@ -34,14 +40,19 @@ class ModuleBlog_MapperBlog extends Mapper {
|
|||
blog_avatar
|
||||
)
|
||||
VALUES(?d, ?, ?, ?, ?, ?, ?, ?)
|
||||
";
|
||||
";
|
||||
if ($iId=$this->oDb->query($sql,$oBlog->getOwnerId(),$oBlog->getTitle(),$oBlog->getDescription(),$oBlog->getType(),$oBlog->getDateAdd(),$oBlog->getLimitRatingTopic(),$oBlog->getUrl(),$oBlog->getAvatar())) {
|
||||
return $iId;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public function UpdateBlog(ModuleBlog_EntityBlog $oBlog) {
|
||||
/**
|
||||
* Обновляет блог в БД
|
||||
*
|
||||
* @param ModuleBlog_EntityBlog $oBlog Объект блога
|
||||
* @return bool
|
||||
*/
|
||||
public function UpdateBlog(ModuleBlog_EntityBlog $oBlog) {
|
||||
$sql = "UPDATE ".Config::Get('db.table.blog')."
|
||||
SET
|
||||
blog_title= ?,
|
||||
|
@ -57,18 +68,24 @@ class ModuleBlog_MapperBlog extends Mapper {
|
|||
blog_avatar= ?
|
||||
WHERE
|
||||
blog_id = ?d
|
||||
";
|
||||
";
|
||||
if ($this->oDb->query($sql,$oBlog->getTitle(),$oBlog->getDescription(),$oBlog->getType(),$oBlog->getDateEdit(),$oBlog->getRating(),$oBlog->getCountVote(),$oBlog->getCountUser(),$oBlog->getCountTopic(),$oBlog->getLimitRatingTopic(),$oBlog->getUrl(),$oBlog->getAvatar(),$oBlog->getId())) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Получает список блогов по ID
|
||||
*
|
||||
* @param array $aArrayId Список ID блогов
|
||||
* @param array|null $aOrder Сортировка блогов
|
||||
* @return array
|
||||
*/
|
||||
public function GetBlogsByArrayId($aArrayId,$aOrder=null) {
|
||||
if (!is_array($aArrayId) or count($aArrayId)==0) {
|
||||
return array();
|
||||
}
|
||||
|
||||
|
||||
if (!is_array($aOrder)) $aOrder=array($aOrder);
|
||||
$sOrder='';
|
||||
foreach ($aOrder as $key=>$value) {
|
||||
|
@ -90,7 +107,7 @@ class ModuleBlog_MapperBlog extends Mapper {
|
|||
ORDER BY
|
||||
{ FIELD(blog_id,?a) } ";
|
||||
if ($sOrder!='') $sql.=$sOrder;
|
||||
|
||||
|
||||
$aBlogs=array();
|
||||
if ($aRows=$this->oDb->select($sql,$aArrayId,$sOrder=='' ? $aArrayId : DBSIMPLE_SKIP)) {
|
||||
foreach ($aRows as $aBlog) {
|
||||
|
@ -98,8 +115,13 @@ class ModuleBlog_MapperBlog extends Mapper {
|
|||
}
|
||||
}
|
||||
return $aBlogs;
|
||||
}
|
||||
|
||||
}
|
||||
/**
|
||||
* Добавляет свзяь пользователя с блогом в БД
|
||||
*
|
||||
* @param ModuleBlog_EntityBlogUser $oBlogUser Объект отношения пользователя с блогом
|
||||
* @return bool
|
||||
*/
|
||||
public function AddRelationBlogUser(ModuleBlog_EntityBlogUser $oBlogUser) {
|
||||
$sql = "INSERT INTO ".Config::Get('db.table.blog_user')."
|
||||
(blog_id,
|
||||
|
@ -107,27 +129,37 @@ class ModuleBlog_MapperBlog extends Mapper {
|
|||
user_role
|
||||
)
|
||||
VALUES(?d, ?d, ?d)
|
||||
";
|
||||
";
|
||||
if ($this->oDb->query($sql,$oBlogUser->getBlogId(),$oBlogUser->getUserId(),$oBlogUser->getUserRole())===0) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Удаляет отношение пользователя с блогом
|
||||
*
|
||||
* @param ModuleBlog_EntityBlogUser $oBlogUser Объект отношения пользователя с блогом
|
||||
* @return bool
|
||||
*/
|
||||
public function DeleteRelationBlogUser(ModuleBlog_EntityBlogUser $oBlogUser) {
|
||||
$sql = "DELETE FROM ".Config::Get('db.table.blog_user')."
|
||||
WHERE
|
||||
blog_id = ?d
|
||||
AND
|
||||
user_id = ?d
|
||||
";
|
||||
";
|
||||
if ($this->oDb->query($sql,$oBlogUser->getBlogId(),$oBlogUser->getUserId())) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public function UpdateRelationBlogUser(ModuleBlog_EntityBlogUser $oBlogUser) {
|
||||
/**
|
||||
* Обновляет отношение пользователя с блогом
|
||||
*
|
||||
* @param ModuleBlog_EntityBlogUser $oBlogUser Объект отношения пользователя с блогом
|
||||
* @return bool
|
||||
*/
|
||||
public function UpdateRelationBlogUser(ModuleBlog_EntityBlogUser $oBlogUser) {
|
||||
$sql = "UPDATE ".Config::Get('db.table.blog_user')."
|
||||
SET
|
||||
user_role = ?d
|
||||
|
@ -135,13 +167,21 @@ class ModuleBlog_MapperBlog extends Mapper {
|
|||
blog_id = ?d
|
||||
AND
|
||||
user_id = ?d
|
||||
";
|
||||
";
|
||||
if ($this->oDb->query($sql,$oBlogUser->getUserRole(),$oBlogUser->getBlogId(),$oBlogUser->getUserId())) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Получает список отношений пользователей с блогами
|
||||
*
|
||||
* @param array $aFilter Фильтр поиска отношений
|
||||
* @param int $iCount Возвращает общее количество элементов
|
||||
* @param int $iCurrPage Номер текущейс страницы
|
||||
* @param int $iPerPage Количество элементов на одну страницу
|
||||
* @return array
|
||||
*/
|
||||
public function GetBlogUsers($aFilter,&$iCount=null,$iCurrPage=null,$iPerPage=null) {
|
||||
$sWhere=' 1=1 ';
|
||||
if (isset($aFilter['blog_id'])) {
|
||||
|
@ -154,25 +194,25 @@ class ModuleBlog_MapperBlog extends Mapper {
|
|||
if(!is_array($aFilter['user_role'])) {
|
||||
$aFilter['user_role']=array($aFilter['user_role']);
|
||||
}
|
||||
$sWhere.=" AND bu.user_role IN ('".join("', '",$aFilter['user_role'])."')";
|
||||
$sWhere.=" AND bu.user_role IN ('".join("', '",$aFilter['user_role'])."')";
|
||||
} else {
|
||||
$sWhere.=" AND bu.user_role>".ModuleBlog::BLOG_USER_ROLE_GUEST;
|
||||
}
|
||||
|
||||
|
||||
$sql = "SELECT
|
||||
bu.*
|
||||
FROM
|
||||
".Config::Get('db.table.blog_user')." as bu
|
||||
WHERE
|
||||
".$sWhere." ";
|
||||
|
||||
".$sWhere." ";
|
||||
|
||||
if (is_null($iCurrPage)) {
|
||||
$aRows=$this->oDb->select($sql);
|
||||
} else {
|
||||
$sql.=" LIMIT ?d, ?d ";
|
||||
$aRows=$this->oDb->selectPage($iCount,$sql,($iCurrPage-1)*$iPerPage, $iPerPage);
|
||||
}
|
||||
|
||||
|
||||
$aBlogUsers=array();
|
||||
if ($aRows) {
|
||||
foreach ($aRows as $aUser) {
|
||||
|
@ -181,12 +221,18 @@ class ModuleBlog_MapperBlog extends Mapper {
|
|||
}
|
||||
return $aBlogUsers;
|
||||
}
|
||||
|
||||
public function GetBlogUsersByArrayBlog($aArrayId,$sUserId) {
|
||||
/**
|
||||
* Получает список отношений пользователя к блогам
|
||||
*
|
||||
* @param array $aArrayId Список ID блогов
|
||||
* @param int $sUserId ID блогов
|
||||
* @return array
|
||||
*/
|
||||
public function GetBlogUsersByArrayBlog($aArrayId,$sUserId) {
|
||||
if (!is_array($aArrayId) or count($aArrayId)==0) {
|
||||
return array();
|
||||
}
|
||||
|
||||
|
||||
$sql = "SELECT
|
||||
bu.*
|
||||
FROM
|
||||
|
@ -194,7 +240,7 @@ class ModuleBlog_MapperBlog extends Mapper {
|
|||
WHERE
|
||||
bu.blog_id IN(?a)
|
||||
AND
|
||||
bu.user_id = ?d ";
|
||||
bu.user_id = ?d ";
|
||||
$aBlogUsers=array();
|
||||
if ($aRows=$this->oDb->select($sql,$aArrayId,$sUserId)) {
|
||||
foreach ($aRows as $aUser) {
|
||||
|
@ -203,8 +249,12 @@ class ModuleBlog_MapperBlog extends Mapper {
|
|||
}
|
||||
return $aBlogUsers;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Получает ID персонального блога пользователя
|
||||
*
|
||||
* @param int $sUserId ID пользователя
|
||||
* @return int|null
|
||||
*/
|
||||
public function GetPersonalBlogByUserId($sUserId) {
|
||||
$sql = "SELECT blog_id FROM ".Config::Get('db.table.blog')." WHERE user_owner_id = ?d and blog_type='personal'";
|
||||
if ($aRow=$this->oDb->selectRow($sql,$sUserId)) {
|
||||
|
@ -212,8 +262,12 @@ class ModuleBlog_MapperBlog extends Mapper {
|
|||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Получает блог по названию
|
||||
*
|
||||
* @param string $sTitle Нащвание блога
|
||||
* @return ModuleBlog_EntityBlog|null
|
||||
*/
|
||||
public function GetBlogByTitle($sTitle) {
|
||||
$sql = "SELECT blog_id FROM ".Config::Get('db.table.blog')." WHERE blog_title = ? ";
|
||||
if ($aRow=$this->oDb->selectRow($sql,$sTitle)) {
|
||||
|
@ -221,11 +275,13 @@ class ModuleBlog_MapperBlog extends Mapper {
|
|||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
public function GetBlogByUrl($sUrl) {
|
||||
/**
|
||||
* Получает блог по URL
|
||||
*
|
||||
* @param string $sUrl URL блога
|
||||
* @return ModuleBlog_EntityBlog|null
|
||||
*/
|
||||
public function GetBlogByUrl($sUrl) {
|
||||
$sql = "SELECT
|
||||
b.blog_id
|
||||
FROM
|
||||
|
@ -238,7 +294,12 @@ class ModuleBlog_MapperBlog extends Mapper {
|
|||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Получить список блогов по хозяину
|
||||
*
|
||||
* @param int $sUserId ID пользователя
|
||||
* @return array
|
||||
*/
|
||||
public function GetBlogsByOwnerId($sUserId) {
|
||||
$sql = "SELECT
|
||||
b.blog_id
|
||||
|
@ -248,7 +309,7 @@ class ModuleBlog_MapperBlog extends Mapper {
|
|||
b.user_owner_id = ?
|
||||
AND
|
||||
b.blog_type<>'personal'
|
||||
";
|
||||
";
|
||||
$aBlogs=array();
|
||||
if ($aRows=$this->oDb->select($sql,$sUserId)) {
|
||||
foreach ($aRows as $aBlog) {
|
||||
|
@ -257,7 +318,11 @@ class ModuleBlog_MapperBlog extends Mapper {
|
|||
}
|
||||
return $aBlogs;
|
||||
}
|
||||
|
||||
/**
|
||||
* Возвращает список всех не персональных блогов
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function GetBlogs() {
|
||||
$sql = "SELECT
|
||||
b.blog_id
|
||||
|
@ -265,7 +330,7 @@ class ModuleBlog_MapperBlog extends Mapper {
|
|||
".Config::Get('db.table.blog')." as b
|
||||
WHERE
|
||||
b.blog_type<>'personal'
|
||||
";
|
||||
";
|
||||
$aBlogs=array();
|
||||
if ($aRows=$this->oDb->select($sql)) {
|
||||
foreach ($aRows as $aBlog) {
|
||||
|
@ -274,8 +339,15 @@ class ModuleBlog_MapperBlog extends Mapper {
|
|||
}
|
||||
return $aBlogs;
|
||||
}
|
||||
|
||||
public function GetBlogsRating(&$iCount,$iCurrPage,$iPerPage) {
|
||||
/**
|
||||
* Возвращает список не персональных блогов с сортировкой по рейтингу
|
||||
*
|
||||
* @param int $iCount Возвращает общее количество элементов
|
||||
* @param int $iCurrPage Номер текущей страницы
|
||||
* @param int $iPerPage Количество элементов на одну страницу
|
||||
* @return array
|
||||
*/
|
||||
public function GetBlogsRating(&$iCount,$iCurrPage,$iPerPage) {
|
||||
$sql = "SELECT
|
||||
b.blog_id
|
||||
FROM
|
||||
|
@ -283,7 +355,7 @@ class ModuleBlog_MapperBlog extends Mapper {
|
|||
WHERE
|
||||
b.blog_type<>'personal'
|
||||
ORDER by b.blog_rating desc
|
||||
LIMIT ?d, ?d ";
|
||||
LIMIT ?d, ?d ";
|
||||
$aReturn=array();
|
||||
if ($aRows=$this->oDb->selectPage($iCount,$sql,($iCurrPage-1)*$iPerPage, $iPerPage)) {
|
||||
foreach ($aRows as $aRow) {
|
||||
|
@ -292,8 +364,14 @@ class ModuleBlog_MapperBlog extends Mapper {
|
|||
}
|
||||
return $aReturn;
|
||||
}
|
||||
|
||||
public function GetBlogsRatingJoin($sUserId,$iLimit) {
|
||||
/**
|
||||
* Получает список блогов в которых состоит пользователь
|
||||
*
|
||||
* @param int $sUserId ID пользователя
|
||||
* @param int $iLimit Ограничение на выборку элементов
|
||||
* @return array
|
||||
*/
|
||||
public function GetBlogsRatingJoin($sUserId,$iLimit) {
|
||||
$sql = "SELECT
|
||||
b.*
|
||||
FROM
|
||||
|
@ -308,7 +386,7 @@ class ModuleBlog_MapperBlog extends Mapper {
|
|||
ORDER by b.blog_rating desc
|
||||
LIMIT 0, ?d
|
||||
;
|
||||
";
|
||||
";
|
||||
$aReturn=array();
|
||||
if ($aRows=$this->oDb->select($sql,$sUserId,$iLimit)) {
|
||||
foreach ($aRows as $aRow) {
|
||||
|
@ -317,8 +395,14 @@ class ModuleBlog_MapperBlog extends Mapper {
|
|||
}
|
||||
return $aReturn;
|
||||
}
|
||||
|
||||
public function GetBlogsRatingSelf($sUserId,$iLimit) {
|
||||
/**
|
||||
* Получает список блогов, которые создал пользователь
|
||||
*
|
||||
* @param int $sUserId ID пользователя
|
||||
* @param int $iLimit Ограничение на выборку элементов
|
||||
* @return array
|
||||
*/
|
||||
public function GetBlogsRatingSelf($sUserId,$iLimit) {
|
||||
$sql = "SELECT
|
||||
b.*
|
||||
FROM
|
||||
|
@ -329,7 +413,7 @@ class ModuleBlog_MapperBlog extends Mapper {
|
|||
b.blog_type<>'personal'
|
||||
ORDER by b.blog_rating desc
|
||||
LIMIT 0, ?d
|
||||
;";
|
||||
;";
|
||||
$aReturn=array();
|
||||
if ($aRows=$this->oDb->select($sql,$sUserId,$iLimit)) {
|
||||
foreach ($aRows as $aRow) {
|
||||
|
@ -338,7 +422,11 @@ class ModuleBlog_MapperBlog extends Mapper {
|
|||
}
|
||||
return $aReturn;
|
||||
}
|
||||
|
||||
/**
|
||||
* Возвращает полный список закрытых блогов
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function GetCloseBlogs() {
|
||||
$sql = "SELECT b.blog_id
|
||||
FROM ".Config::Get('db.table.blog')." as b
|
||||
|
@ -352,28 +440,26 @@ class ModuleBlog_MapperBlog extends Mapper {
|
|||
}
|
||||
return $aReturn;
|
||||
}
|
||||
|
||||
/**
|
||||
* Удаление блога из базы данных
|
||||
*
|
||||
* @param int $iBlogId
|
||||
* @return bool
|
||||
* @param int $iBlogId ID блога
|
||||
* @return bool
|
||||
*/
|
||||
public function DeleteBlog($iBlogId) {
|
||||
$sql = "
|
||||
DELETE FROM ".Config::Get('db.table.blog')."
|
||||
WHERE blog_id = ?d
|
||||
";
|
||||
";
|
||||
if ($this->oDb->query($sql,$iBlogId)) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Удалить пользователей блога по идентификатору блога
|
||||
*
|
||||
* @param int $iBlogId
|
||||
* @param int $iBlogId ID блога
|
||||
* @return bool
|
||||
*/
|
||||
public function DeleteBlogUsersByBlogId($iBlogId) {
|
||||
|
@ -386,10 +472,10 @@ class ModuleBlog_MapperBlog extends Mapper {
|
|||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Пересчитывает число топиков в блогах
|
||||
*
|
||||
* @param int|null $iBlogId ID блога
|
||||
* @return bool
|
||||
*/
|
||||
public function RecalculateCountTopic($iBlogId=null) {
|
||||
|
@ -411,7 +497,16 @@ class ModuleBlog_MapperBlog extends Mapper {
|
|||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Получает список блогов по фильтру
|
||||
*
|
||||
* @param array $aFilter Фильтр выборки
|
||||
* @param array $aOrder Сортировка
|
||||
* @param int $iCount Возвращает общее количество элментов
|
||||
* @param int $iCurrPage Номер текущей страницы
|
||||
* @param int $iPerPage Количество элементов на одну страницу
|
||||
* @return array
|
||||
*/
|
||||
public function GetBlogsByFilter($aFilter,$aOrder,&$iCount,$iCurrPage,$iPerPage) {
|
||||
$aOrderAllow=array('blog_id','blog_title','blog_rating','blog_count_user','blog_count_topic');
|
||||
$sOrder='';
|
||||
|
|
Loading…
Reference in a new issue