diff --git a/htdocs/admin/perms.php b/htdocs/admin/perms.php
index 735ba92a0bd..ab738f60d70 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
";
- $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 a3a52653496..616c551d00c 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 "
\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 48928163f9c..25b07af7a4a 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 14e9197fc08..bc4b9ee1265 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 f981847a466..8e88243ac46 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 175f005646a..a877154fdbb 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();
+ $modulesdir = dolGetModulesDirs();
- 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);
- }
- }
- }
+ $db->begin();
foreach ($modulesdir as $dir)
{
// Load modules attributes in arrays (name, numero, orders) from dir directory
//print $dir."\n
";
- $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 0ee185c0432..820ec2bed34 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)