Nuovi permessi Board disabilitata

Area dedicata alle Guide
Regole del forum
Immagine
Rispondi
Avatar utente
Galandas
Staff phpBB3World
Staff phpBB3World
Messaggi: 792
Iscritto il: 4 nov 2012, 9:18
Località: phpbb3world
Contatta:

Nuovi permessi Board disabilitata

Messaggio da Galandas » 12 lug 2013, 17:19

Problema

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') 
));
?>
Una volta creato questo file è necessario caricarlo all'interno della cartella phpBB3 forum ovvero nella root, e quindi passare ad esso utilizzando il browser web. Questo vi darà una pagina vuota, ma non preoccupatevi che avrà fatto ciò che doveva e che si aggiunge la nuova opzione di permessi per il database. Con questo stiamo aggiungendo un nuovo permesso globale utente (vedi sticky permessi in questo forum per maggiori dettagli su come aggiungere altre autorizzazioni). Eliminare il file una volta che avete eseguito tramite il browser.

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'),
Aggiungi dopo:

Codice: Seleziona tutto

'acl_u_see'    => array('lang' => 'Può vedere la board anche quando è disattivata', 'cat' => 'misc'), 
Apri: /includes/functions.php

Cerca:

Codice: Seleziona tutto

'S_NEW_PM'                => ($s_privmsg_new) ? 1 : 0,
Aggiungi dopo:

Codice: Seleziona tutto

'S_SEE'                 => ($auth->acl_gets('u_see') && $user->data['is_registered']) ? true : false,
Apri: /includes/sessions.php

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');
                }
            }
        }
Sostituisci con:

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');
                }
            }
        }
Apri: /styles/templates/overall_header.html

Cerca:

Codice: Seleziona tutto

<!-- IF S_BOARD_DISABLED and S_USER_LOGGED_IN and (U_MCP or U_ACP) -->
Sostituisci con:

Codice: Seleziona tutto

 <!-- IF S_BOARD_DISABLED and S_USER_LOGGED_IN and (U_MCP or U_ACP or S_SEE) -->
Ora dovreste essere in grado di impostare i permessi utente globali per i gruppi e che gli utenti siano in grado di vedere la board quando questo è disattivato. Gli utenti con i permessi per vedere la board mentre è disabilitato avranno l'avviso in alto dicendo loro che la board è disabilitata. I Fondatori ottengono automaticamente l'accesso alla board quando questa è disattivata indipendentemente dalle impostazioni dei permessi. :/>

Menu Forum ha scritto:

Rispondi

Torna a “[3.0.x] Guide”

Chi c’è in linea

Visitano il forum: Nessuno e 23 ospiti