diff --git a/htdocs/admin/perms.php b/htdocs/admin/perms.php index 735ba92a0bd6f9a0fc9d5abfc2045c79e9ee3bab..ab738f60d706159acfb157dfdfc18b859dcd6709 100644 --- a/htdocs/admin/perms.php +++ b/htdocs/admin/perms.php @@ -26,11 +26,14 @@ require("../main.inc.php"); require_once(DOL_DOCUMENT_ROOT."/core/lib/admin.lib.php"); +require_once(DOL_DOCUMENT_ROOT."/core/lib/functions2.lib.php"); $langs->load("admin"); $langs->load("users"); $langs->load("other"); +$action=GETPOST('action'); + if (!$user->admin) accessforbidden(); @@ -38,7 +41,7 @@ if (!$user->admin) accessforbidden(); * Actions */ -if ($_GET["action"] == 'add') +if ($action == 'add') { $sql = "UPDATE ".MAIN_DB_PREFIX."rights_def SET bydefault=1"; $sql.= " WHERE id = ".$_GET["pid"]; @@ -46,7 +49,7 @@ if ($_GET["action"] == 'add') $db->query($sql); } -if ($_GET["action"] == 'remove') +if ($action == 'remove') { $sql = "UPDATE ".MAIN_DB_PREFIX."rights_def SET bydefault=0"; $sql.= " WHERE id = ".$_GET["pid"]; @@ -79,37 +82,13 @@ $db->begin(); // Charge les modules soumis a permissions $modules = array(); -$modulesdir = array(); - -foreach ($conf->file->dol_document_root as $type => $dirroot) -{ - $modulesdir[] = $dirroot . "/core/modules/"; - - if ($type == 'alt') - { - $handle=@opendir($dirroot); - if (is_resource($handle)) - { - while (($file = readdir($handle))!==false) - { - if (is_dir($dirroot.'/'.$file) && substr($file, 0, 1) <> '.' && substr($file, 0, 3) <> 'CVS' && $file != 'includes') - { - if (is_dir($dirroot . '/' . $file . '/core/modules/')) - { - $modulesdir[] = $dirroot . '/' . $file . '/core/modules/'; - } - } - } - closedir($handle); - } - } -} +$modulesdir = dolGetModulesDirs(); foreach ($modulesdir as $dir) { // Load modules attributes in arrays (name, numero, orders) from dir directory //print $dir."\n<br>"; - $handle=@opendir($dir); + $handle=@opendir(dol_osencode($dir)); if (is_resource($handle)) { while (($file = readdir($handle))!==false) @@ -162,7 +141,7 @@ if ($result) $i = 0; $var = True; $oldmod = ""; - + while ($i < $num) { $obj = $db->fetch_object($result); @@ -179,16 +158,16 @@ if ($result) foreach($modules[$obj->module]->rights as $key => $val) { $rights_class=$objMod->rights_class; - if ($val[4] == $obj->perms && (empty($val[5]) || $val[5] == $obj->subperms)) + if ($val[4] == $obj->perms && (empty($val[5]) || $val[5] == $obj->subperms)) { $found=true; break; } } - if (! $found) + if (! $found) { $i++; - continue; + continue; } // Break found, it's a new module to catch diff --git a/htdocs/admin/system/modules.php b/htdocs/admin/system/modules.php index a3a5265349617c384433dce00369861992809af2..616c551d00c436964b5004b35a7e904823374ee6 100644 --- a/htdocs/admin/system/modules.php +++ b/htdocs/admin/system/modules.php @@ -23,13 +23,13 @@ */ require("../../main.inc.php"); +require_once(DOL_DOCUMENT_ROOT."/core/lib/functions2.lib.php"); $langs->load("admin"); $langs->load("install"); $langs->load("other"); -if (!$user->admin) -accessforbidden(); +if (!$user->admin) accessforbidden(); /* @@ -46,36 +46,12 @@ print "<br>\n"; $modules = array(); $modules_names = array(); $modules_files = array(); - -// Search modules dirs -$modulesdir = array(); -foreach ($conf->file->dol_document_root as $type => $dirroot) -{ - $modulesdir[$dirroot . '/core/modules/'] = $dirroot . '/core/modules/'; - - $handle=@opendir($dirroot); - if (is_resource($handle)) - { - while (($file = readdir($handle))!==false) - { - if (is_dir($dirroot.'/'.$file) && substr($file, 0, 1) <> '.' && substr($file, 0, 3) <> 'CVS' && $file != 'includes') - { - if (is_dir($dirroot . '/' . $file . '/core/modules/')) - { - $modulesdir[$dirroot . '/' . $file . '/core/modules/'] = $dirroot . '/' . $file . '/core/modules/'; - } - } - } - closedir($handle); - } -} -//var_dump($modulesdir); - +$modulesdir = dolGetModulesDirs(); // Load list of modules foreach($modulesdir as $dir) { - $handle=@opendir($dir); + $handle=@opendir(dol_osencode($dir)); if (is_resource($handle)) { while (($file = readdir($handle))!==false) diff --git a/htdocs/core/lib/functions2.lib.php b/htdocs/core/lib/functions2.lib.php index 48928163f9cca80fad9ff1acda5e6fa99404d0e7..25b07af7a4abe2ee2732105b611efe627b87ae88 100644 --- a/htdocs/core/lib/functions2.lib.php +++ b/htdocs/core/lib/functions2.lib.php @@ -25,6 +25,43 @@ */ +/** + * Return list of modules directories + * + * @return array Array of directories that can contains module descriptors + */ +function dolGetModulesDirs() +{ + global $conf; + + $modulesdir=array(); + + foreach ($conf->file->dol_document_root as $type => $dirroot) + { + // Default core/modules dir + $modulesdir[$dirroot . '/core/modules/'] = $dirroot . '/core/modules/'; + + // Scan dir from external modules + $handle=@opendir($dirroot); + if (is_resource($handle)) + { + while (($file = readdir($handle))!==false) + { + if (is_dir($dirroot.'/'.$file) && substr($file, 0, 1) <> '.' && substr($file, 0, 3) <> 'CVS' && $file != 'includes') + { + if (is_dir($dirroot . '/' . $file . '/core/modules/')) + { + $modulesdir[$dirroot . '/' . $file . '/core/modules/'] = $dirroot . '/' . $file . '/core/modules/'; + } + } + } + closedir($handle); + } + } + return $modulesdir; +} + + /** * Try to guess default paper format according to language into $langs * diff --git a/htdocs/exports/class/export.class.php b/htdocs/exports/class/export.class.php index 14e9197fc087b6a14e2057560c6155da176f72e1..bc4b9ee1265b34c31ba59771f372e8ce848be7ba 100644 --- a/htdocs/exports/class/export.class.php +++ b/htdocs/exports/class/export.class.php @@ -50,11 +50,11 @@ class Export /** * Constructor * - * @param DoliDB $DB Database handler + * @param DoliDB $db Database handler */ - function Export($DB) + function Export($db) { - $this->db=$DB; + $this->db=$db; } @@ -75,34 +75,14 @@ class Export $i=0; // Define list of modules directories into modulesdir - foreach ($conf->file->dol_document_root as $type => $dirroot) - { - $modulesdir[] = $dirroot . "/core/modules/"; + require_once(DOL_DOCUMENT_ROOT."/core/lib/functions2.lib.php"); - if ($type == 'alt') - { - $handle=@opendir($dirroot); - if (is_resource($handle)) - { - while (($file = readdir($handle))!==false) - { - if (is_dir($dirroot.'/'.$file) && substr($file, 0, 1) <> '.' && substr($file, 0, 3) <> 'CVS' && $file != 'includes') - { - if (is_dir($dirroot . '/' . $file . '/core/modules/')) - { - $modulesdir[] = $dirroot . '/' . $file . '/core/modules/'; - } - } - } - closedir($handle); - } - } - } + $modulesdir = dolGetModulesDirs(); foreach($modulesdir as $dir) { // Search available exports - $handle=@opendir($dir); + $handle=@opendir(dol_osencode($dir)); if (is_resource($handle)) { // Search module files diff --git a/htdocs/imports/class/import.class.php b/htdocs/imports/class/import.class.php index f981847a466ff1082f821238df8beb428dcdf940..8e88243ac46aae39cb8c61ad5e237b95617a7d1a 100644 --- a/htdocs/imports/class/import.class.php +++ b/htdocs/imports/class/import.class.php @@ -67,12 +67,12 @@ class Import $var=true; $i=0; - //$dir=DOL_DOCUMENT_ROOT."/core/modules"; - foreach($conf->file->dol_document_root as $dirroot) - { - $dir = $dirroot.'/core/modules'; + require_once(DOL_DOCUMENT_ROOT."/core/lib/functions2.lib.php"); + $modulesdir = dolGetModulesDirs(); - // Search available exports + // Load list of modules + foreach($modulesdir as $dir) + { $handle=@opendir(dol_osencode($dir)); if (! is_resource($handle)) continue; diff --git a/htdocs/user/group/perms.php b/htdocs/user/group/perms.php index 175f005646a139e9ef775ec66890a9cb9a3f58b9..a877154fdbba43c4b7c0eefdd25a8b00b983bc1d 100644 --- a/htdocs/user/group/perms.php +++ b/htdocs/user/group/perms.php @@ -27,6 +27,7 @@ require("../../main.inc.php"); require_once(DOL_DOCUMENT_ROOT.'/user/class/usergroup.class.php'); require_once(DOL_DOCUMENT_ROOT."/core/lib/usergroups.lib.php"); +require_once(DOL_DOCUMENT_ROOT."/core/lib/functions2.lib.php"); $langs->load("users"); @@ -90,42 +91,17 @@ if ($id) $title = $langs->trans("Group"); dol_fiche_head($head, 'rights', $title, 0, 'group'); - - $db->begin(); - // Charge les modules soumis a permissions $modules = array(); - $modulesdir = array(); - - foreach ($conf->file->dol_document_root as $type => $dirroot) - { - $modulesdir[] = $dirroot . "/core/modules/"; - - if ($type == 'alt') - { - $handle=@opendir($dirroot); - if (is_resource($handle)) - { - while (($file = readdir($handle))!==false) - { - if (is_dir($dirroot.'/'.$file) && substr($file, 0, 1) <> '.' && substr($file, 0, 3) <> 'CVS' && $file != 'includes') - { - if (is_dir($dirroot . '/' . $file . '/core/modules/')) - { - $modulesdir[] = $dirroot . '/' . $file . '/core/modules/'; - } - } - } - closedir($handle); - } - } - } + $modulesdir = dolGetModulesDirs(); + + $db->begin(); foreach ($modulesdir as $dir) { // Load modules attributes in arrays (name, numero, orders) from dir directory //print $dir."\n<br>"; - $handle=@opendir($dir); + $handle=@opendir(dol_osencode($dir)); if (is_resource($handle)) { while (($file = readdir($handle))!==false) @@ -133,7 +109,7 @@ if ($id) if (is_readable($dir.$file) && substr($file, 0, 3) == 'mod' && substr($file, dol_strlen($file) - 10) == '.class.php') { $modName = substr($file, 0, dol_strlen($file) - 10); - + if ($modName) { include_once($dir."/".$file); @@ -182,7 +158,7 @@ if ($id) { $sql.= " AND r.entity IN (0,".$conf->entity.")"; } - + $sql.= " AND ugr.fk_usergroup = ".$fgroup->id; $result=$db->query($sql); @@ -273,7 +249,7 @@ if ($id) $i = 0; $var = true; $oldmod = ''; - + $num = $db->num_rows($result); while ($i < $num) diff --git a/htdocs/user/perms.php b/htdocs/user/perms.php index 0ee185c043201cf3c00f4d36bbdac1a0448bf180..820ec2bed3492245d584583cb999d97acd65bc07 100644 --- a/htdocs/user/perms.php +++ b/htdocs/user/perms.php @@ -26,6 +26,7 @@ require("../main.inc.php"); require_once(DOL_DOCUMENT_ROOT."/core/lib/usergroups.lib.php"); +require_once(DOL_DOCUMENT_ROOT."/core/lib/functions2.lib.php"); $langs->load("users"); $langs->load("admin"); @@ -122,35 +123,11 @@ $db->begin(); // Search all modules with permission and reload permissions def. $modules = array(); -$modulesdir = array(); - -foreach ($conf->file->dol_document_root as $type => $dirroot) -{ - $modulesdir[] = $dirroot . "/core/modules/"; - - if ($type == 'alt') - { - $handle=@opendir($dirroot); - if (is_resource($handle)) - { - while (($file = readdir($handle))!==false) - { - if (is_dir($dirroot.'/'.$file) && substr($file, 0, 1) <> '.' && substr($file, 0, 3) <> 'CVS' && $file != 'includes') - { - if (is_dir($dirroot . '/' . $file . '/core/modules/')) - { - $modulesdir[] = $dirroot . '/' . $file . '/core/modules/'; - } - } - } - closedir($handle); - } - } -} +$modulesdir = dolGetModulesDirs(); foreach($modulesdir as $dir) { - $handle=@opendir($dir); + $handle=@opendir(dol_osencode($dir)); if (is_resource($handle)) { while (($file = readdir($handle))!==false)