2
0
forked from Wavyzz/dolibarr

Qual: Uniformize management of alt directories.

This commit is contained in:
Laurent Destailleur
2012-05-08 22:49:03 +02:00
parent 161846be77
commit c01fae04e4
7 changed files with 73 additions and 148 deletions

View File

@@ -26,11 +26,14 @@
require("../main.inc.php"); require("../main.inc.php");
require_once(DOL_DOCUMENT_ROOT."/core/lib/admin.lib.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("admin");
$langs->load("users"); $langs->load("users");
$langs->load("other"); $langs->load("other");
$action=GETPOST('action');
if (!$user->admin) accessforbidden(); if (!$user->admin) accessforbidden();
@@ -38,7 +41,7 @@ if (!$user->admin) accessforbidden();
* Actions * Actions
*/ */
if ($_GET["action"] == 'add') if ($action == 'add')
{ {
$sql = "UPDATE ".MAIN_DB_PREFIX."rights_def SET bydefault=1"; $sql = "UPDATE ".MAIN_DB_PREFIX."rights_def SET bydefault=1";
$sql.= " WHERE id = ".$_GET["pid"]; $sql.= " WHERE id = ".$_GET["pid"];
@@ -46,7 +49,7 @@ if ($_GET["action"] == 'add')
$db->query($sql); $db->query($sql);
} }
if ($_GET["action"] == 'remove') if ($action == 'remove')
{ {
$sql = "UPDATE ".MAIN_DB_PREFIX."rights_def SET bydefault=0"; $sql = "UPDATE ".MAIN_DB_PREFIX."rights_def SET bydefault=0";
$sql.= " WHERE id = ".$_GET["pid"]; $sql.= " WHERE id = ".$_GET["pid"];
@@ -79,37 +82,13 @@ $db->begin();
// Charge les modules soumis a permissions // Charge les modules soumis a permissions
$modules = array(); $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);
}
}
}
foreach ($modulesdir as $dir) foreach ($modulesdir as $dir)
{ {
// Load modules attributes in arrays (name, numero, orders) from dir directory // Load modules attributes in arrays (name, numero, orders) from dir directory
//print $dir."\n<br>"; //print $dir."\n<br>";
$handle=@opendir($dir); $handle=@opendir(dol_osencode($dir));
if (is_resource($handle)) if (is_resource($handle))
{ {
while (($file = readdir($handle))!==false) while (($file = readdir($handle))!==false)
@@ -162,7 +141,7 @@ if ($result)
$i = 0; $i = 0;
$var = True; $var = True;
$oldmod = ""; $oldmod = "";
while ($i < $num) while ($i < $num)
{ {
$obj = $db->fetch_object($result); $obj = $db->fetch_object($result);
@@ -179,16 +158,16 @@ if ($result)
foreach($modules[$obj->module]->rights as $key => $val) foreach($modules[$obj->module]->rights as $key => $val)
{ {
$rights_class=$objMod->rights_class; $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; $found=true;
break; break;
} }
} }
if (! $found) if (! $found)
{ {
$i++; $i++;
continue; continue;
} }
// Break found, it's a new module to catch // Break found, it's a new module to catch

View File

@@ -23,13 +23,13 @@
*/ */
require("../../main.inc.php"); require("../../main.inc.php");
require_once(DOL_DOCUMENT_ROOT."/core/lib/functions2.lib.php");
$langs->load("admin"); $langs->load("admin");
$langs->load("install"); $langs->load("install");
$langs->load("other"); $langs->load("other");
if (!$user->admin) if (!$user->admin) accessforbidden();
accessforbidden();
/* /*
@@ -46,36 +46,12 @@ print "<br>\n";
$modules = array(); $modules = array();
$modules_names = array(); $modules_names = array();
$modules_files = array(); $modules_files = array();
$modulesdir = dolGetModulesDirs();
// 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);
// Load list of modules // Load list of modules
foreach($modulesdir as $dir) foreach($modulesdir as $dir)
{ {
$handle=@opendir($dir); $handle=@opendir(dol_osencode($dir));
if (is_resource($handle)) if (is_resource($handle))
{ {
while (($file = readdir($handle))!==false) while (($file = readdir($handle))!==false)

View File

@@ -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 * Try to guess default paper format according to language into $langs
* *

View File

@@ -50,11 +50,11 @@ class Export
/** /**
* Constructor * 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; $i=0;
// Define list of modules directories into modulesdir // Define list of modules directories into modulesdir
foreach ($conf->file->dol_document_root as $type => $dirroot) require_once(DOL_DOCUMENT_ROOT."/core/lib/functions2.lib.php");
{
$modulesdir[] = $dirroot . "/core/modules/";
if ($type == 'alt') $modulesdir = dolGetModulesDirs();
{
$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);
}
}
}
foreach($modulesdir as $dir) foreach($modulesdir as $dir)
{ {
// Search available exports // Search available exports
$handle=@opendir($dir); $handle=@opendir(dol_osencode($dir));
if (is_resource($handle)) if (is_resource($handle))
{ {
// Search module files // Search module files

View File

@@ -67,12 +67,12 @@ class Import
$var=true; $var=true;
$i=0; $i=0;
//$dir=DOL_DOCUMENT_ROOT."/core/modules"; require_once(DOL_DOCUMENT_ROOT."/core/lib/functions2.lib.php");
foreach($conf->file->dol_document_root as $dirroot) $modulesdir = dolGetModulesDirs();
{
$dir = $dirroot.'/core/modules';
// Search available exports // Load list of modules
foreach($modulesdir as $dir)
{
$handle=@opendir(dol_osencode($dir)); $handle=@opendir(dol_osencode($dir));
if (! is_resource($handle)) continue; if (! is_resource($handle)) continue;

View File

@@ -27,6 +27,7 @@
require("../../main.inc.php"); require("../../main.inc.php");
require_once(DOL_DOCUMENT_ROOT.'/user/class/usergroup.class.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/usergroups.lib.php");
require_once(DOL_DOCUMENT_ROOT."/core/lib/functions2.lib.php");
$langs->load("users"); $langs->load("users");
@@ -90,42 +91,17 @@ if ($id)
$title = $langs->trans("Group"); $title = $langs->trans("Group");
dol_fiche_head($head, 'rights', $title, 0, 'group'); dol_fiche_head($head, 'rights', $title, 0, 'group');
$db->begin();
// Charge les modules soumis a permissions // Charge les modules soumis a permissions
$modules = array(); $modules = array();
$modulesdir = array(); $modulesdir = dolGetModulesDirs();
foreach ($conf->file->dol_document_root as $type => $dirroot) $db->begin();
{
$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);
}
}
}
foreach ($modulesdir as $dir) foreach ($modulesdir as $dir)
{ {
// Load modules attributes in arrays (name, numero, orders) from dir directory // Load modules attributes in arrays (name, numero, orders) from dir directory
//print $dir."\n<br>"; //print $dir."\n<br>";
$handle=@opendir($dir); $handle=@opendir(dol_osencode($dir));
if (is_resource($handle)) if (is_resource($handle))
{ {
while (($file = readdir($handle))!==false) 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') 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); $modName = substr($file, 0, dol_strlen($file) - 10);
if ($modName) if ($modName)
{ {
include_once($dir."/".$file); include_once($dir."/".$file);
@@ -182,7 +158,7 @@ if ($id)
{ {
$sql.= " AND r.entity IN (0,".$conf->entity.")"; $sql.= " AND r.entity IN (0,".$conf->entity.")";
} }
$sql.= " AND ugr.fk_usergroup = ".$fgroup->id; $sql.= " AND ugr.fk_usergroup = ".$fgroup->id;
$result=$db->query($sql); $result=$db->query($sql);
@@ -273,7 +249,7 @@ if ($id)
$i = 0; $i = 0;
$var = true; $var = true;
$oldmod = ''; $oldmod = '';
$num = $db->num_rows($result); $num = $db->num_rows($result);
while ($i < $num) while ($i < $num)

View File

@@ -26,6 +26,7 @@
require("../main.inc.php"); require("../main.inc.php");
require_once(DOL_DOCUMENT_ROOT."/core/lib/usergroups.lib.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("users");
$langs->load("admin"); $langs->load("admin");
@@ -122,35 +123,11 @@ $db->begin();
// Search all modules with permission and reload permissions def. // Search all modules with permission and reload permissions def.
$modules = array(); $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);
}
}
}
foreach($modulesdir as $dir) foreach($modulesdir as $dir)
{ {
$handle=@opendir($dir); $handle=@opendir(dol_osencode($dir));
if (is_resource($handle)) if (is_resource($handle))
{ {
while (($file = readdir($handle))!==false) while (($file = readdir($handle))!==false)