1
0
Fork 0
mirror of https://github.com/Oreolek/ifhub.club.git synced 2024-06-26 11:40:48 +03:00

Постраничность пользователей в управлении блогом

This commit is contained in:
Mzhelskiy Maxim 2011-05-05 13:30:01 +00:00
parent 531945a0c5
commit 96c47f8f6a
8 changed files with 56 additions and 26 deletions

View file

@ -119,7 +119,7 @@ class ActionBlog extends Action {
$this->AddEvent('add','EventAddBlog');
$this->AddEvent('edit','EventEditBlog');
$this->AddEvent('delete','EventDeleteBlog');
$this->AddEvent('admin','EventAdminBlog');
$this->AddEventPreg('/^admin$/i','/^\d+$/i','/^(page(\d+))?$/i','EventAdminBlog');
$this->AddEvent('invite','EventInviteBlog');
$this->AddEvent('ajaxaddcomment','AjaxAddComment');
@ -415,19 +415,30 @@ class ActionBlog extends Action {
}
$this->Blog_UpdateBlog($oBlog);
}
/**
* Текущая страница
*/
$iPage= $this->GetParamEventMatch(1,2) ? $this->GetParamEventMatch(1,2) : 1;
/**
* Получаем список подписчиков блога
*/
$aBlogUsers=$this->Blog_GetBlogUsersByBlogId(
$aResult=$this->Blog_GetBlogUsersByBlogId(
$oBlog->getId(),
array(
ModuleBlog::BLOG_USER_ROLE_BAN,
ModuleBlog::BLOG_USER_ROLE_USER,
ModuleBlog::BLOG_USER_ROLE_MODERATOR,
ModuleBlog::BLOG_USER_ROLE_ADMINISTRATOR
)
),$iPage,Config::Get('module.blog.users_per_page')
);
$aBlogUsers=$aResult['collection'];
/**
* Формируем постраничность
*/
$aPaging=$this->Viewer_MakePaging($aResult['count'],$iPage,Config::Get('module.blog.users_per_page'),4,Router::GetPath('blog')."admin/{$oBlog->getId()}");
$this->Viewer_Assign('aPaging',$aPaging);
$this->Viewer_AddHtmlTitle($oBlog->getTitle());
$this->Viewer_AddHtmlTitle($this->Lang_Get('blog_admin'));
@ -443,8 +454,8 @@ class ActionBlog extends Action {
* и добавляем блок-форму для приглашения
*/
if($oBlog->getType()=='close') {
$aBlogUsersInvited=$this->Blog_GetBlogUsersByBlogId($oBlog->getId(),ModuleBlog::BLOG_USER_ROLE_INVITE);
$this->Viewer_Assign('aBlogUsersInvited',$aBlogUsersInvited);
$aBlogUsersInvited=$this->Blog_GetBlogUsersByBlogId($oBlog->getId(),ModuleBlog::BLOG_USER_ROLE_INVITE,null);
$this->Viewer_Assign('aBlogUsersInvited',$aBlogUsersInvited['collection']);
$this->Viewer_AddBlock('right','actions/ActionBlog/invited.tpl');
}
}
@ -770,9 +781,12 @@ class ActionBlog extends Action {
/**
* Получаем список юзеров блога
*/
$aBlogUsers=$this->Blog_GetBlogUsersByBlogId($oBlog->getId(),ModuleBlog::BLOG_USER_ROLE_USER);
$aBlogModerators=$this->Blog_GetBlogUsersByBlogId($oBlog->getId(),ModuleBlog::BLOG_USER_ROLE_MODERATOR);
$aBlogAdministrators=$this->Blog_GetBlogUsersByBlogId($oBlog->getId(),ModuleBlog::BLOG_USER_ROLE_ADMINISTRATOR);
$aBlogUsersResult=$this->Blog_GetBlogUsersByBlogId($oBlog->getId(),ModuleBlog::BLOG_USER_ROLE_USER);
$aBlogUsers=$aBlogUsersResult['collection'];
$aBlogModeratorsResult=$this->Blog_GetBlogUsersByBlogId($oBlog->getId(),ModuleBlog::BLOG_USER_ROLE_MODERATOR);
$aBlogModerators=$aBlogModeratorsResult['collection'];
$aBlogAdministratorsResult=$this->Blog_GetBlogUsersByBlogId($oBlog->getId(),ModuleBlog::BLOG_USER_ROLE_ADMINISTRATOR);
$aBlogAdministrators=$aBlogAdministratorsResult['collection'];
/**
* Для админов проекта получаем список блогов и передаем их во вьювер
@ -1069,9 +1083,10 @@ class ActionBlog extends Action {
}
/**
* Получаем список пользователей блога (любого статуса)
* Получаем список пользователей блога (любого статуса)
* Это полный АХТУНГ - исправить!
*/
$aBlogUsers = $this->Blog_GetBlogUsersByBlogId(
$aBlogUsersResult = $this->Blog_GetBlogUsersByBlogId(
$oBlog->getId(),
array(
ModuleBlog::BLOG_USER_ROLE_BAN,
@ -1080,8 +1095,9 @@ class ActionBlog extends Action {
ModuleBlog::BLOG_USER_ROLE_USER,
ModuleBlog::BLOG_USER_ROLE_MODERATOR,
ModuleBlog::BLOG_USER_ROLE_ADMINISTRATOR
)
),null // пока костылем
);
$aBlogUsers=$aBlogUsersResult['collection'];
$aUsers=explode(',',$sUsers);
$aResult=array();

View file

@ -375,7 +375,7 @@ class ModuleBlog extends Module {
* @param (null|int|array) $iRole
* @return array
*/
public function GetBlogUsersByBlogId($sBlogId,$iRole=null) {
public function GetBlogUsersByBlogId($sBlogId,$iRole=null,$iPage=1,$iPerPage=100) {
$aFilter=array(
'blog_id'=> $sBlogId,
);
@ -383,23 +383,23 @@ class ModuleBlog extends Module {
$aFilter['user_role']=$iRole;
}
$s=serialize($aFilter);
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_relation_change_blog_{$sBlogId}"), 60*60*24*3);
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);
}
/**
* Достаем дополнительные данные, для этого формируем список юзеров и делаем мульти-запрос
*/
if ($data) {
if ($data['collection']) {
$aUserId=array();
foreach ($data as $oBlogUser) {
foreach ($data['collection'] as $oBlogUser) {
$aUserId[]=$oBlogUser->getUserId();
}
$aUsers=$this->User_GetUsersAdditionalData($aUserId);
$aBlogs=$this->Blog_GetBlogsAdditionalData($sBlogId);
$aResults=array();
foreach ($data as $oBlogUser) {
foreach ($data['collection'] as $oBlogUser) {
if (isset($aUsers[$oBlogUser->getUserId()])) {
$oBlogUser->setUser($aUsers[$oBlogUser->getUserId()]);
} else {
@ -412,7 +412,7 @@ class ModuleBlog extends Module {
}
$aResults[$oBlogUser->getUserId()]=$oBlogUser;
}
$data=$aResults;
$data['collection']=$aResults;
}
return $data;
}

View file

@ -126,7 +126,7 @@ class ModuleBlog_MapperBlog extends Mapper {
return false;
}
public function GetBlogUsers($aFilter) {
public function GetBlogUsers($aFilter,&$iCount=null,$iCurrPage=null,$iPerPage=null) {
$sWhere=' 1=1 ';
if (isset($aFilter['blog_id'])) {
$sWhere.=" AND bu.blog_id = ".(int)$aFilter['blog_id'];
@ -148,11 +148,17 @@ class ModuleBlog_MapperBlog extends Mapper {
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=$this->oDb->select($sql)) {
if ($aRows) {
foreach ($aRows as $aUser) {
$aBlogUsers[]=Engine::GetEntity('Blog_BlogUser',$aUser);
}

View file

@ -1241,7 +1241,8 @@ class ModuleTopic extends Module {
* @param unknown_type $oUserTopic
*/
public function SendNotifyTopicNew($oBlog,$oTopic,$oUserTopic) {
$aBlogUsers=$this->Blog_GetBlogUsersByBlogId($oBlog->getId());
$aBlogUsersResult=$this->Blog_GetBlogUsersByBlogId($oBlog->getId(),null,null); // нужно постранично пробегаться по всем
$aBlogUsers=$aBlogUsersResult['collection'];
foreach ($aBlogUsers as $oBlogUser) {
if ($oBlogUser->getUserId()==$oUserTopic->getId()) {
continue;

View file

@ -154,6 +154,7 @@ $config['acl']['vote']['comment']['limit_time'] = 60*60*24*5; // ог
*/
// Модуль Blog
$config['module']['blog']['per_page'] = 20; // Число блогов на страницу
$config['module']['blog']['users_per_page'] = 20; // Число пользователей блога на страницу
$config['module']['blog']['personal_good'] = -5; // Рейтинг топика в персональном блоге ниже которого он считается плохим
$config['module']['blog']['collective_good'] = -3; // рейтинг топика в коллективных блогах ниже которого он считается плохим
$config['module']['blog']['index_good'] = 8; // Рейтинг топика выше которого(включительно) он попадает на главную

View file

@ -34,6 +34,8 @@
<input type="submit" name="submit_blog_admin" value="{$aLang.blog_admin_users_submit}" />
</form>
<br>
{include file='paging.tpl' aPaging=$aPaging}
{else}
{$aLang.blog_admin_users_empty}
{/if}

View file

@ -34,6 +34,8 @@
<input type="submit" name="submit_blog_admin" value="{$aLang.blog_admin_users_submit}" />
</form>
<br>
{include file='paging.tpl' aPaging=$aPaging}
{else}
{$aLang.blog_admin_users_empty}
{/if}

View file

@ -37,6 +37,8 @@
<input type="submit" name="submit_blog_admin" value="{$aLang.blog_admin_users_submit}">
</form>
<br>
{include file='paging.tpl' aPaging=$aPaging}
{else}
{$aLang.blog_admin_users_empty}
{/if}