1
0
Fork 0
mirror of https://github.com/Oreolek/ifhub.club.git synced 2024-05-17 08:18:18 +03:00

добавлено управление пользователями в блогах

This commit is contained in:
Mzhelskiy Maxim 2008-10-16 20:26:53 +00:00
parent b67f7878a3
commit 8fe77caca3
6 changed files with 221 additions and 6 deletions

View file

@ -74,7 +74,7 @@ class ActionBlog extends Action {
*
* @var unknown_type
*/
protected $aBadBlogUrl=array('new','good','bad','edit','add');
protected $aBadBlogUrl=array('new','good','bad','edit','add','admin');
/**
* Инизиализация экшена
@ -113,6 +113,7 @@ class ActionBlog extends Action {
$this->AddEvent('new','EventNew');
$this->AddEvent('add','EventAddBlog');
$this->AddEvent('edit','EventEditBlog');
$this->AddEvent('admin','EventAdminBlog');
$this->AddEventPreg('/^(\d+)\.html$/i','EventShowTopicPersonal');
$this->AddEventPreg('/^[\w\-\_]+$/i','/^(\d+)\.html$/i','EventShowTopic');
@ -202,8 +203,8 @@ class ActionBlog extends Action {
/**
* Меню
*/
$this->sMenuSubItemSelect='saved';
$this->sMenuItemSelect='';
$this->sMenuSubItemSelect='';
$this->sMenuItemSelect='profile';
/**
* Проверяем передан ли в УРЛе номер блога
@ -227,6 +228,8 @@ class ActionBlog extends Action {
}
$this->Viewer_AddHtmlTitle($oBlog->getTitle());
$this->Viewer_AddHtmlTitle('Редактирование блога');
$this->Viewer_Assign('oBlogEdit',$oBlog);
/**
* Устанавливаем шалон для вывода
*/
@ -272,6 +275,87 @@ class ActionBlog extends Action {
}
}
/**
* Управление пользователями блога
*
* @return unknown
*/
protected function EventAdminBlog() {
/**
* Меню
*/
$this->sMenuItemSelect='admin';
$this->sMenuSubItemSelect='';
/**
* Проверяем передан ли в УРЛе номер блога
*/
$sBlogId=$this->GetParam(0);
if (!$oBlog=$this->Blog_GetBlogById($sBlogId)) {
return parent::EventNotFound();
}
/**
* Проверям авторизован ли пользователь
*/
if (!$this->User_IsAuthorization()) {
$this->Message_AddErrorSingle('Для того чтобы изменить блог, сначало нужно войти под своим аккаунтом.','Нет доступа');
return Router::Action('error');
}
/**
* Явлется ли авторизованный пользователь хозяином блога
*/
if ($oBlog->getOwnerId()!=$this->oUserCurrent->getId() and !$this->oUserCurrent->isAdministrator()) {
return parent::EventNotFound();
}
/**
* Обрабатываем сохранение формы
*/
if (isset($_REQUEST['submit_blog_admin'])) {
$aUserRank=getRequest('user_rank',array());
if (!is_array($aUserRank)) {
$aUserRank=array();
}
foreach ($aUserRank as $sUserId => $sRank) {
if (!($oBlogUser=$this->Blog_GetRelationBlogUserByBlogIdAndUserId($oBlog->getId(),$sUserId))) {
$this->Message_AddError('Что то не так','Ошибка');
break;
}
switch ($sRank) {
case 'administrator':
$oBlogUser->setIsAdministrator(1);
$oBlogUser->setIsModerator(0);
break;
case 'moderator':
$oBlogUser->setIsAdministrator(0);
$oBlogUser->setIsModerator(1);
break;
default:
$oBlogUser->setIsAdministrator(0);
$oBlogUser->setIsModerator(0);
break;
}
$this->Blog_UpdateRelationBlogUser($oBlogUser);
$this->Message_AddNoticeSingle('Права сохранены');
}
}
/**
* Получаем список подписчиков блога
*/
$aBlogUsers=$this->Blog_GetRelationBlog($oBlog->getId());
$this->Viewer_AddHtmlTitle($oBlog->getTitle());
$this->Viewer_AddHtmlTitle('Управление блогом');
$this->Viewer_Assign('oBlogEdit',$oBlog);
$this->Viewer_Assign('aBlogUsers',$aBlogUsers);
/**
* Устанавливаем шалон для вывода
*/
$this->SetTemplateAction('admin');
}
/**

View file

@ -205,7 +205,7 @@ class Blog extends Module {
return $this->oMapperBlog->GetRelationBlogUsers($aFilter);
}
/**
* Получает отношение юзера к блогу(сотосит в блоге или нет)
* Получает отношение юзера к блогу(состоит в блоге или нет)
*
* @param unknown_type $sUserId
* @return unknown
@ -261,6 +261,22 @@ class Blog extends Module {
);
return $this->oMapperBlog->GetRelationBlogUsers($aFilter);
}
/**
* Список тех кто состоит в блоге
*
* @param unknown_type $sBlogId
* @return unknown
*/
public function GetRelationBlog($sBlogId) {
$aFilter=array(
'blog_id'=> $sBlogId,
);
return $this->oMapperBlog->GetRelationBlogUsers($aFilter);
}
public function UpdateRelationBlogUser(BlogEntity_BlogUser $oBlogUser) {
return $this->oMapperBlog->UpdateRelationBlogUser($oBlogUser);
}
/**
* Получает список блогов по рейтингу
*

View file

@ -88,6 +88,21 @@ class Mapper_Blog extends Mapper {
return false;
}
public function UpdateRelationBlogUser(BlogEntity_BlogUser $oBlogUser) {
$sql = "UPDATE ".DB_TABLE_BLOG_USER."
SET
is_moderator= ?,
is_administrator= ?
WHERE
blog_id = ?d
AND
user_id = ?d
";
if ($this->oDb->query($sql,$oBlogUser->getIsModerator(),$oBlogUser->getIsAdministrator(),$oBlogUser->getBlogId(),$oBlogUser->getUserId())) {
return true;
}
return false;
}
public function GetRelationBlogUsers($aFilter) {
$sWhere=' 1=1 ';

View file

@ -1,8 +1,12 @@
{include file='header.tpl'}
{include file='menu.action.tpl'}
{if $sEvent=='add'}
<h1>Создание нового блога</h1>
{else}
<h1>Управление блогом: <a href="{$DIR_WEB_ROOT}/blog/{$oBlogEdit->getUrl()}/" class="blog_headline_group">{$oBlogEdit->getTitle()}</a></h1>
{include file='menu.blog_edit.tpl'}
{/if}
{include file='system_message.tpl'}

View file

@ -0,0 +1,61 @@
{include file='header.tpl'}
{if $sEvent=='add'}
<h1>Создание нового блога</h1>
{else}
<h1>Управление блогом: <a href="{$DIR_WEB_ROOT}/blog/{$oBlogEdit->getUrl()}/" class="blog_headline_group">{$oBlogEdit->getTitle()}</a></h1>
{include file='menu.blog_edit.tpl'}
{/if}
{include file='system_message.tpl'}
<div class="backoffice">
<form action="" method="POST" id="thisform" enctype="multipart/form-data">
<table width="100%" bgcolor="White" border="0" cellspacing="0" cellpadding="0" class="inbox">
<tr>
<td width="200px"></td>
<td align="center">администратор</td>
<td align="center">модератор</td>
<td align="center">читатель</td>
</tr>
{foreach from=$aBlogUsers item=oBlogUser}
<tr>
<td><a href="{$DIR_WEB_ROOT}/profile/{$oBlogUser->getUserLogin()}/">{$oBlogUser->getUserLogin()}</a></td>
<td align="center">
<input type="radio" name="user_rank[{$oBlogUser->getUserId()}]" value="administrator" {if $oBlogUser->getIsAdministrator()}checked{/if}>
</td>
<td align="center">
<input type="radio" name="user_rank[{$oBlogUser->getUserId()}]" value="moderator" {if $oBlogUser->getIsModerator()}checked{/if}>
</td>
<td align="center">
<input type="radio" name="user_rank[{$oBlogUser->getUserId()}]" value="reader" {if !$oBlogUser->getIsAdministrator() and !$oBlogUser->getIsModerator()}checked{/if}>
</td>
</tr>
{/foreach}
</table><br>
<p class="l-bot">
<input type="submit" name="submit_blog_admin" value="сохранить">&nbsp;
</p>
<div class="form_note">После нажатия на кнопку &laquo;Сохранить&raquo;, права пользователей будут сохранены</div>
<p>Может быть, перейти на <a href="{$DIR_WEB_ROOT}/topic/add/">страницу создания топиков</a>?</p>
<input type="hidden" name="blog_id" value="{$_aRequest.blog_id}">
</form>
</div>
</div>
</div>
{include file='footer.tpl'}

View file

@ -0,0 +1,35 @@
<TABLE class=pagemenu id=pagemenuszd>
<TBODY>
<TR>
{if $oUserCurrent}
<TD class="width10 read_"><IMG height=35 alt=" " src="{$DIR_STATIC_SKIN}/img/red_ul.gif" width=10></TD>
<TD class="subitem1 center read_" style="WIDTH: 14px">
<A href="{$DIR_WEB_ROOT}/topic/add/"><IMG title=написать height=14 alt="написать" src="{$DIR_STATIC_SKIN}/img/new_habratopic.gif" width=14></A>
</TD>
<TD class="border2px width10 read_"></TD>
{/if}
{assign var="sel" value=""}
{if $sMenuItemSelect=='profile'}
{assign var="sel" value="sel "}
{/if}
<TD class="{$sel}width10"></TD>
<TD class="{$sel}subitem1 center">
<A class=tags_f href="{$DIR_WEB_ROOT}/blog/edit/{$oBlogEdit->getId()}/">Профиль</A>
</TD>
<TD class="{$sel}border2px width10"></TD>
{assign var="sel" value=""}
{if $sMenuItemSelect=='admin'}
{assign var="sel" value="sel "}
{/if}
<TD class="{$sel}width10"></TD>
<TD class="{$sel}subitem1 center">
<A class=tags_f href="{$DIR_WEB_ROOT}/blog/admin/{$oBlogEdit->getId()}/">Пользователи</A>
</TD>
<TD class="{$sel}border2px width10"></TD>
</TR>
</TBODY>
</TABLE>