Quando si disabilita la board si noterà che tutti gli utenti con moderatore (M_) e admin (a_) permessi sarà comunque in grado di visualizzare la board. La maggior parte delle persone vorrebbero essere in grado di impostare chi può accedere alla board disabilitata su un utente o gruppo.
Causa
Fatto da disegno.
Soluzione
In primo luogo fare un backup completo dei file e del database del forum. Quindi disattivare la tua board e avvisare ogni moderatore o altro amministratore a non utilizzare la board mentre si lavora su di esso.
Ora cominciamo, prima è necessario creare un nuovo file php chiamato
perm.php
con il seguente codice al suo interno,Codice: Seleziona tutto
<?php
define('IN_PHPBB', true);
$phpbb_root_path = './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
$user->session_begin();
$auth->acl($user->data);
$user->setup();
include($phpbb_root_path . 'includes/acp/auth.' . $phpEx);
$auth_admin = new auth_admin();
$auth_admin->acl_add_option(array(
'local' => array(),
'global' => array('u_see')
));
?>
Ora abbiamo semplicemente bisogno di modificare i file di phpBB di conseguenza,
Apri /language/it/acp/permissions_phpbb.php
Cerca:
Codice: Seleziona tutto
'acl_u_search' => array('lang' => 'Può cercare nel forum', 'cat' => 'misc'),
Codice: Seleziona tutto
'acl_u_see' => array('lang' => 'Può vedere la board anche quando è disattivata', 'cat' => 'misc'),
Cerca:
Codice: Seleziona tutto
'S_NEW_PM' => ($s_privmsg_new) ? 1 : 0,
Codice: Seleziona tutto
'S_SEE' => ($auth->acl_gets('u_see') && $user->data['is_registered']) ? true : false,
Cerca:
Codice: Seleziona tutto
// Is board disabled and user not an admin or moderator?
if ($config['board_disable'] && !defined('IN_LOGIN') && !$auth->acl_gets('a_', 'm_') && !$auth->acl_getf_global('m_'))
{
header('HTTP/1.1 503 Service Unavailable');
$message = (!empty($config['board_disable_msg'])) ? $config['board_disable_msg'] : 'BOARD_DISABLE';
trigger_error($message);
}
// Is load exceeded?
if ($config['limit_load'] && $this->load !== false)
{
if ($this->load > floatval($config['limit_load']) && !defined('IN_LOGIN'))
{
// Set board disabled to true to let the admins/mods get the proper notification
$config['board_disable'] = '1';
if (!$auth->acl_gets('a_', 'm_') && !$auth->acl_getf_global('m_'))
{
header('HTTP/1.1 503 Service Unavailable');
trigger_error('BOARD_UNAVAILABLE');
}
}
}
Codice: Seleziona tutto
// Is board disabled and user not an admin or moderator?
if ($config['board_disable'] && !defined('IN_LOGIN') && !$auth->acl_gets('u_see') && $this->data['user_type'] != USER_FOUNDER)
{
header('HTTP/1.1 503 Service Unavailable');
$message = (!empty($config['board_disable_msg'])) ? $config['board_disable_msg'] : 'BOARD_DISABLE';
trigger_error($message);
}
// Is load exceeded?
if ($config['limit_load'] && $this->load !== false)
{
if ($this->load > floatval($config['limit_load']) && !defined('IN_LOGIN'))
{
// Set board disabled to true to let the admins/mods get the proper notification
$config['board_disable'] = '1';
if (!$auth->acl_gets('u_see') && $this->data['user_type'] != USER_FOUNDER)
{
header('HTTP/1.1 503 Service Unavailable');
trigger_error('BOARD_UNAVAILABLE');
}
}
}
Cerca:
Codice: Seleziona tutto
<!-- IF S_BOARD_DISABLED and S_USER_LOGGED_IN and (U_MCP or U_ACP) -->
Codice: Seleziona tutto
<!-- IF S_BOARD_DISABLED and S_USER_LOGGED_IN and (U_MCP or U_ACP or S_SEE) -->