Fix: Activation of a module must works even when $user not defined (for installer).

This commit is contained in:
Laurent Destailleur 2011-07-13 22:15:19 +00:00
parent 597a99a518
commit 5485706bdc
5 changed files with 25 additions and 22 deletions

View File

@ -20,7 +20,7 @@
/** /**
* \file htdocs/core/class/menubase.class.php * \file htdocs/core/class/menubase.class.php
* \ingroup core * \ingroup core
* \version $Id$ * \version $Id: menubase.class.php,v 1.25 2011/07/13 22:18:48 eldy Exp $
* \brief File of class to manage dynamic menu entries * \brief File of class to manage dynamic menu entries
* \remarks Initialy built by build_class_from_table on 2008-01-12 14:19 * \remarks Initialy built by build_class_from_table on 2008-01-12 14:19
*/ */
@ -78,7 +78,7 @@ class Menubase
* @param user User that create * @param user User that create
* @return int <0 if KO, Id of record if OK * @return int <0 if KO, Id of record if OK
*/ */
function create($user) function create($user=0)
{ {
global $conf, $langs; global $conf, $langs;

View File

@ -28,10 +28,10 @@
* \file htdocs/filefunc.inc.php * \file htdocs/filefunc.inc.php
* \ingroup core * \ingroup core
* \brief File that include conf.php file and functions.lib.php * \brief File that include conf.php file and functions.lib.php
* \version $Id: filefunc.inc.php,v 1.17 2011/06/28 12:25:43 hregis Exp $ * \version $Id: filefunc.inc.php,v 1.18 2011/07/13 21:19:58 eldy Exp $
*/ */
define('DOL_VERSION','3.1.0-alpha'); // Also defined in htdocs/install/inc.php (Ex: x.y.z-alpha, x.y.z) define('DOL_VERSION','3.1.0-beta'); // Also defined in htdocs/install/inc.php (Ex: x.y.z-alpha, x.y.z)
define('EURO',chr(128)); define('EURO',chr(128));
// Definition des constantes syslog // Definition des constantes syslog

View File

@ -24,7 +24,7 @@
/** /**
* \file htdocs/includes/modules/DolibarrModules.class.php * \file htdocs/includes/modules/DolibarrModules.class.php
* \brief Fichier de description et activation des modules Dolibarr * \brief Fichier de description et activation des modules Dolibarr
* \version $Id: DolibarrModules.class.php,v 1.159 2011/06/28 20:31:23 eldy Exp $ * \version $Id: DolibarrModules.class.php,v 1.161 2011/07/13 22:15:19 eldy Exp $
*/ */
@ -926,7 +926,7 @@ class DolibarrModules
/** /**
* Insert permissions definitions related to the module into llx_rights_def * Insert permissions definitions related to the module into llx_rights_def
* @param $reinitadminperms If 1, we also grant them to admin user * @param $reinitadminperms If 1, we also grant them to all admin users
* @return int Number of error (0 if OK) * @return int Number of error (0 if OK)
*/ */
function insert_permissions($reinitadminperms=0) function insert_permissions($reinitadminperms=0)
@ -955,7 +955,7 @@ class DolibarrModules
{ {
$r_id = $this->rights[$key][0]; $r_id = $this->rights[$key][0];
$r_desc = $this->rights[$key][1]; $r_desc = $this->rights[$key][1];
$r_type = $this->rights[$key][2]; $r_type = isset($this->rights[$key][2])?$this->rights[$key][2]:'';
$r_def = $this->rights[$key][3]; $r_def = $this->rights[$key][3];
$r_perms = $this->rights[$key][4]; $r_perms = $this->rights[$key][4];
$r_subperms = isset($this->rights[$key][5])?$this->rights[$key][5]:''; $r_subperms = isset($this->rights[$key][5])?$this->rights[$key][5]:'';
@ -1004,12 +1004,15 @@ class DolibarrModules
} }
// If we are into a logged session and we are an admin user, we take permission of new activated module // If we are into a logged session and we are an admin user, we take permission of new activated module
if ($reinitadminperms && ! empty($user->admin)) if ($reinitadminperms)
{ {
$user->addrights($r_id); if (! empty($user->admin)) // FIXME. We must loop on each admin records and make grant on each fuser object. We must removed global $user.
// We reload permissions {
$user->clearrights(); $user->addrights($r_id);
$user->getrights(); // We reload permissions
$user->clearrights();
$user->getrights();
}
} }
} }
} }
@ -1056,8 +1059,6 @@ class DolibarrModules
*/ */
function insert_menus() function insert_menus()
{ {
global $user;
require_once(DOL_DOCUMENT_ROOT."/core/class/menubase.class.php"); require_once(DOL_DOCUMENT_ROOT."/core/class/menubase.class.php");
$err=0; $err=0;
@ -1118,7 +1119,7 @@ class DolibarrModules
if (! $err) if (! $err)
{ {
$result=$menu->create($user); $result=$menu->create();
if ($result > 0) if ($result > 0)
{ {
$this->menu[$key]['rowid']=$result; $this->menu[$key]['rowid']=$result;

View File

@ -22,10 +22,10 @@
/** \file htdocs/install/inc.php /** \file htdocs/install/inc.php
* \ingroup core * \ingroup core
* \brief File that define environment for install pages * \brief File that define environment for install pages
* \version $Id: inc.php,v 1.134 2011/07/11 10:53:37 eldy Exp $ * \version $Id: inc.php,v 1.135 2011/07/13 21:19:58 eldy Exp $
*/ */
define('DOL_VERSION','3.1.0-alpha'); // Also defined in htdocs/master.inc.php (Ex: x.y.z-alpha, x.y.z) define('DOL_VERSION','3.1.0-beta'); // Also defined in htdocs/master.inc.php (Ex: x.y.z-alpha, x.y.z)
require_once('../core/class/translate.class.php'); require_once('../core/class/translate.class.php');
require_once('../lib/functions.lib.php'); require_once('../lib/functions.lib.php');

View File

@ -20,7 +20,7 @@
/** /**
* \file htdocs/lib/files.lib.php * \file htdocs/lib/files.lib.php
* \brief Library for file managing functions * \brief Library for file managing functions
* \version $Id: files.lib.php,v 1.68 2011/07/11 06:23:22 hregis Exp $ * \version $Id: files.lib.php,v 1.69 2011/07/13 21:33:38 eldy Exp $
*/ */
/** /**
@ -590,12 +590,13 @@ function dol_move_uploaded_file($src_file, $dest_file, $allowoverwrite, $disable
* @param disableglob Disable usage of glob like * * @param disableglob Disable usage of glob like *
* @param nophperrors Disable all PHP output errors * @param nophperrors Disable all PHP output errors
* @param notrigger Disable all triggers * @param notrigger Disable all triggers
* @param triggercode Code of trigger
* @param object Object for trigger
* @return boolean True if file is deleted, False if error * @return boolean True if file is deleted, False if error
*/ */
function dol_delete_file($file,$disableglob=0,$nophperrors=0,$notrigger=0) function dol_delete_file($file,$disableglob=0,$nophperrors=0,$notrigger=0,$triggercode='FILE_DELETE',$object=null)
{ {
global $conf, $user, $langs; global $db, $conf, $user, $langs;
global $object;
//print "x".$file." ".$disableglob; //print "x".$file." ".$disableglob;
$ok=true; $ok=true;
@ -611,12 +612,13 @@ function dol_delete_file($file,$disableglob=0,$nophperrors=0,$notrigger=0)
dol_syslog("Removed file ".$filename,LOG_DEBUG); dol_syslog("Removed file ".$filename,LOG_DEBUG);
if (! $notrigger) if (! $notrigger)
{ {
if (! is_object($object)) $object=(object) 'dummy';
$object->src_file=$file; $object->src_file=$file;
// Appel des triggers // Appel des triggers
include_once(DOL_DOCUMENT_ROOT . "/core/class/interfaces.class.php"); include_once(DOL_DOCUMENT_ROOT . "/core/class/interfaces.class.php");
$interface=new Interfaces($db); $interface=new Interfaces($db);
$result=$interface->run_triggers('FILE_DELETE',$object,$user,$langs,$conf); $result=$interface->run_triggers($triggercode,$object,$user,$langs,$conf);
if ($result < 0) { $error++; $errors=$interface->errors; } if ($result < 0) { $error++; $errors=$interface->errors; }
// Fin appel triggers // Fin appel triggers
} }