/** * 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, './'); } }