/**
 *  Rafraichit le cache des droits.
 *  @author vincent1870
 *  @return void
 */
function refresh_cache_droits($id_grp = null)
{
    inc_lib('admin/new_grp_auth_cache');
    if (!is_null($id_grp)) {
        $list_grp = array('g_id' => $id_grp);
    } else {
        inc_lib('admin/get_list_grp');
        $list_grp = get_list_grp();
    }
    foreach ($list_grp as $grp) {
        //Suppression du vieux cache s'il existe.
        if (is_file(PATH_ROOT . Nw::$assets['dir_cache'] . Nw::$site_lang . '._groupauth_' . $grp['g_id'] . '.php')) {
            @unlink(PATH_ROOT . Nw::$assets['dir_cache'] . Nw::$site_lang . '._groupauth_' . $grp['g_id'] . '.php');
        }
        $start_cache_file = '<?php' . "\r" . ' $group_auth[\'g' . $grp['g_id'] . '\'] = array( ' . "\r";
        //Récupération des droits de la bdd
        $dn = array();
        $query = Nw::$DB->query('SELECT droit_valeur, droit_nom
        FROM ' . Nw::$prefix_table . 'droits
        WHERE droit_groupe = ' . intval($grp['g_id'])) or Nw::$DB->trigger(__LINE__, __FILE__);
        while ($dn = $query->fetch_assoc()) {
            $droits[] = $dn;
        }
        foreach ($droits as $droit) {
            if (in_array($droit['droit_valeur'], array(1, 0))) {
                $value_droit = $droit['droit_valeur'];
            } else {
                $value_droit = '\'' . intval($droit['droit_valeur']) . '\'';
            }
            $start_cache_file .= "\t" . '\'' . $droit['droit_nom'] . '\' => ' . $value_droit . ', ' . "\r";
        }
        $start_cache_file .= "\r" . ');' . "\r" . '?>';
        new_grp_auth_cache($grp['g_id'], $start_cache_file);
    }
}
 protected function main()
 {
     if (empty($_GET['id']) || !is_numeric($_GET['id'])) {
         header('Location: ./');
     }
     if (is_logged_in() && check_auth('manage_groups')) {
         include PATH_ROOT . 'lang/' . Nw::$site_lang . '/droits.php';
         $this->set_tpl('admin/edit_grp_perms.html');
         $this->add_css('forms.css');
         $this->set_title(Nw::$lang['admin']['titre_accueil']);
         inc_lib('admin/get_info_grp');
         $donnees_groupe = get_info_grp($_GET['id']);
         // Fil ariane
         $this->set_filAriane(array(Nw::$lang['admin']['fa_admin'] => array('admin.html'), Nw::$lang['admin']['fa_grp'] => array('admin-299.html'), $donnees_groupe['g_nom'] => array('admin-300-' . $_GET['id'] . '.html'), Nw::$lang['admin']['fa_edit_perms_grp'] => array('')));
         // Liste des droits
         inc_lib('admin/get_xml_droits');
         $all_droit = get_xml_droits();
         $list_droits_cache = array();
         if (is_file(PATH_ROOT . Nw::$assets['dir_cache'] . Nw::$site_lang . '._groupauth_' . $_GET['id'] . '.php')) {
             include PATH_ROOT . Nw::$assets['dir_cache'] . Nw::$site_lang . '._groupauth_' . $_GET['id'] . '.php';
             $group_values = $group_auth['g' . $_GET['id']];
         } else {
             $group_values = array();
         }
         foreach ($all_droit as $section => $list_droit) {
             Nw::$tpl->setBlock("section", array('NOM' => Nw::$lang['droits']['section_' . $section]));
             foreach ($list_droit as $nom_droit => $droit) {
                 Nw::$tpl->setBlock("section.droit", array('TYPE' => $droit[0], 'NOM' => $nom_droit, 'FULLNAME' => Nw::$lang['droits'][$nom_droit], 'VALEUR' => isset($group_values[$nom_droit]) ? $group_values[$nom_droit] : ''));
                 $list_droits_cache[$nom_droit] = array($droit[0]);
             }
         }
         // Formulaire soumis
         if (isset($_POST['submit'])) {
             inc_lib('admin/edit_auth_grp');
             inc_lib('admin/new_grp_auth_cache');
             if (is_file(PATH_ROOT . Nw::$assets['dir_cache'] . Nw::$site_lang . '._groupauth_' . $_GET['id'] . '.php')) {
                 @unlink(PATH_ROOT . Nw::$assets['dir_cache'] . Nw::$site_lang . '._groupauth_' . $_GET['id'] . '.php');
             }
             $start_cache_file = '<?php' . "\r" . ' $group_auth[\'g' . $_GET['id'] . '\'] = array( ' . "\r";
             foreach ($list_droits_cache as $nom_droit => $donnees_droit) {
                 if ($donnees_droit[0] == 1) {
                     $value_droit = isset($_POST['prm_' . $nom_droit]) ? 1 : 0;
                 } else {
                     $value_droit = '\'' . intval($_POST['prm_' . $nom_droit]) . '\'';
                 }
                 $value_droit_cache = isset($group_values[$nom_droit]) ? $group_values[$nom_droit] : '';
                 // Édition en BDD si nécessaire.
                 if ($value_droit != $value_droit_cache || !in_array($nom_droit, $group_values)) {
                     edit_auth_grp($_GET['id'], $nom_droit, $value_droit);
                 }
                 $start_cache_file .= "\t" . '\'' . $nom_droit . '\' => ' . $value_droit . ', ' . "\r";
             }
             $start_cache_file .= "\r" . ');' . "\r" . '?>';
             new_grp_auth_cache($_GET['id'], $start_cache_file);
             redir(Nw::$lang['admin']['redir_modif_droits'], true, 'admin-310-' . $_GET['id'] . '.html');
         }
         Nw::$tpl->set(array('ID' => $_GET['id'], 'NOM_GRP' => $donnees_groupe['g_nom']));
     } else {
         redir(Nw::$lang['admin']['error_cant_see_admin'], false, './');
     }
 }