2
0
forked from Wavyzz/dolibarr

Fix: can't read permissions with an external module in root directory

instead "custom" directory
This commit is contained in:
Regis Houssin
2012-07-25 13:29:36 +02:00
parent a0f78aad4a
commit 1b5f540d93
4 changed files with 49 additions and 81 deletions

View File

@@ -26,6 +26,7 @@
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");
@@ -79,37 +80,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)

View File

@@ -25,6 +25,44 @@
*/
/**
* Return list of modules directories
*
* @param string $subdir Sub directory (Example: '/mailings')
* @return array Array of directories that can contains module descriptors
*/
function dolGetModulesDirs($subdir='')
{
global $conf;
$modulesdir=array();
foreach ($conf->file->dol_document_root as $type => $dirroot)
{
// Default core/modules dir
$modulesdir[$dirroot . '/core/modules'.$subdir.'/'] = $dirroot . '/core/modules'.$subdir.'/';
// 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'.$subdir.'/'))
{
$modulesdir[$dirroot . '/' . $file . '/core/modules'.$subdir.'/'] = $dirroot . '/' . $file . '/core/modules'.$subdir.'/';
}
}
}
closedir($handle);
}
}
return $modulesdir;
}
/**
* Try to guess default paper format according to language into $langs
*

View File

@@ -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");
$langs->load("admin");
@@ -91,42 +92,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<br>";
$handle=@opendir($dir);
$handle=@opendir(dol_osencode($dir));
if (is_resource($handle))
{
while (($file = readdir($handle))!==false)

View File

@@ -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)