Moderator permissions
From phpBB Development Wiki
Moderator permissions can be defined in any page by using the predefined auth class.
Contents |
Moderator Permission Options
| Auth Option | Auth Usage | Auth Lang |
|---|---|---|
| m_ | $auth->acl_get('m_'); //global
| Moderator permissions |
| m_approve | $auth->acl_get('m_approve', $forum_id);
| Can approve posts |
| m_ban | $auth->acl_get('m_ban');
| Can manage bans |
| m_chgposter | $auth->acl_get('m_chgposter', $forum_id);
| Can change post author |
| m_delete | $auth->acl_get('m_delete', $forum_id);
| Can delete posts |
| m_edit | $auth->acl_get('m_edit', $forum_id);
| Can edit posts |
| m_info | $auth->acl_get('m_info', $forum_id);
| Can view post details |
| m_lock | $auth->acl_get('m_lock', $forum_id);
| Can lock topics |
| m_merge | $auth->acl_get('m_merge', $forum_id);
| Can merge topics |
| m_move | $auth->acl_get('m_move', $forum_id);
| Can move topics |
| m_report | $auth->acl_get('m_report', $forum_id);
| Can close and delete reports |
| m_split | $auth->acl_get('m_split', $forum_id);
| Can split topics |
| m_warn | $auth->acl_get('m_warn');
| Can issue warnings |
Moderator Only Variables and Switches
You can use variables and switches to define what moderators are able to see.
e.g.:
$template->assign_vars(array(
'MY_VARIABLE' => ($auth->acl_get('m_')) ? $variable_for_moderator : $variable_for_user,
// or a switch (better)
'S_IS_MODERATOR'=> ($auth->acl_get('m_')) ? true : false,
// moderator has lock permissions, to lock the currently viewable topics within a forum.
'S_CAN_LOCK' => ($auth->acl_get('m_lock')) ? true : false,
// moderator has ban permissions.
// Ban permissions are global, and therefor not limited to a specific forum
'S_CAN_BAN' => ($auth->acl_get('m_ban')) ? true : false,
));
Usage within templates: (example)
<!-- IF S_IS_MODERATOR -->I am a Moderator!<!-- ELSE -->I am not a Moderator<!-- ENDIF -->
<!-- IF S_CAN_LOCK -->I can lock topics<!-- ELSE -->Even if I have some Moderator permissions, I cannot lock topics<!-- ENDIF -->
<!-- IF S_CAN_BAN -->I can ban people!!<!-- ELSE -->I watch can’t ban people<!-- ENDIF -->
{MY_VARIABLE}
Restricting Scripts/Pages to Moderators
<?php
/**
*
* @author Highway of Life
* @package Develop
* @version $Id: page.php $
* @copyright (c) 2007 copyright info
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*
*/
/**
* @ignore
*/
define('IN_PHPBB', true);
$phpbb_root_path = './../';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup('common');
// is the user logged in?
if (!$user->data['is_registered'])
{
if ($user->data['is_bot'])
{
// the user is a bot, send them back to home plate...
redirect(append_sid("{$phpbb_root_path}index.$phpEx"));
}
// the user is not logged in, give them a chance to login here...
login_box('', 'LOGIN');
}
else if (!$auth->acl_get('m_'))
{
// the user is logged in, but they do not have Moderator permissions, give them a nice warning message
trigger_error('NOT_AUTHORISED');
}
// the rest of your script/page
// you can also be specific with the moderator permissions...
// to give access to ONLY those moderators who have ban permissions (for example)
// we would have used the following code above.
else if (!$auth->acl_get('m_ban'))
{
// the user does not have moderator ban permissions...
trigger_error('NOT_AUTHORISED');
}

