Fix: Try to restore borken permission features when multicompany is off.

This commit is contained in:
Laurent Destailleur 2011-08-23 22:25:37 +00:00
parent 373974d2f3
commit e1c807b7d0
4 changed files with 44 additions and 36 deletions

View File

@ -21,7 +21,7 @@
* \file htdocs/user/class/usergroup.class.php * \file htdocs/user/class/usergroup.class.php
* \brief Fichier de la classe des groupes d'utilisateur * \brief Fichier de la classe des groupes d'utilisateur
* \author Rodolphe Qiedeville * \author Rodolphe Qiedeville
* \version $Id: usergroup.class.php,v 1.16 2011/08/21 10:01:37 hregis Exp $ * \version $Id: usergroup.class.php,v 1.17 2011/08/23 22:25:38 eldy Exp $
*/ */
require_once(DOL_DOCUMENT_ROOT."/core/class/commonobject.class.php"); require_once(DOL_DOCUMENT_ROOT."/core/class/commonobject.class.php");
@ -115,6 +115,7 @@ class UserGroup extends CommonObject
/** /**
* Return array of groups objects for a particular user * Return array of groups objects for a particular user
*
* @param userid User id to search * @param userid User id to search
* @return array Array of groups objects * @return array Array of groups objects
*/ */
@ -129,7 +130,6 @@ class UserGroup extends CommonObject
$sql.= " ".MAIN_DB_PREFIX."usergroup_user as ug"; $sql.= " ".MAIN_DB_PREFIX."usergroup_user as ug";
$sql.= " WHERE ug.fk_usergroup = g.rowid"; $sql.= " WHERE ug.fk_usergroup = g.rowid";
$sql.= " AND ug.fk_user = ".$userid; $sql.= " AND ug.fk_user = ".$userid;
if(! empty($conf->multicompany->enabled) && $conf->entity == 1 && $user->admin && ! $user->entity) if(! empty($conf->multicompany->enabled) && $conf->entity == 1 && $user->admin && ! $user->entity)
{ {
$sql.= " AND g.entity IS NOT NULL"; $sql.= " AND g.entity IS NOT NULL";
@ -138,7 +138,6 @@ class UserGroup extends CommonObject
{ {
$sql.= " AND g.entity IN (0,".$conf->entity.")"; $sql.= " AND g.entity IN (0,".$conf->entity.")";
} }
$sql.= " ORDER BY g.nom"; $sql.= " ORDER BY g.nom";
dol_syslog("UserGroup::listGroupsForUser sql=".$sql,LOG_DEBUG); dol_syslog("UserGroup::listGroupsForUser sql=".$sql,LOG_DEBUG);
@ -147,11 +146,11 @@ class UserGroup extends CommonObject
{ {
while ($obj = $this->db->fetch_object($result)) while ($obj = $this->db->fetch_object($result))
{ {
$group=new UserGroup($this->db); $newgroup=new UserGroup($this->db);
$group->fetch($obj->rowid); $newgroup->fetch($obj->rowid);
$group->usergroup_entity = $obj->usergroup_entity; $newgroup->usergroup_entity = $obj->usergroup_entity;
$ret[]=$group; $ret[]=$newgroup;
} }
$this->db->free($result); $this->db->free($result);
@ -168,6 +167,7 @@ class UserGroup extends CommonObject
/** /**
* Return array of users id for group * Return array of users id for group
*
* @return array of users * @return array of users
*/ */
function listUsersForGroup() function listUsersForGroup()
@ -181,7 +181,6 @@ class UserGroup extends CommonObject
$sql.= " ".MAIN_DB_PREFIX."usergroup_user as ug"; $sql.= " ".MAIN_DB_PREFIX."usergroup_user as ug";
$sql.= " WHERE ug.fk_user = u.rowid"; $sql.= " WHERE ug.fk_user = u.rowid";
$sql.= " AND ug.fk_usergroup = ".$this->id; $sql.= " AND ug.fk_usergroup = ".$this->id;
if(! empty($conf->multicompany->enabled) && $conf->entity == 1 && $user->admin && ! $user->entity) if(! empty($conf->multicompany->enabled) && $conf->entity == 1 && $user->admin && ! $user->entity)
{ {
$sql.= " AND u.entity IS NOT NULL"; $sql.= " AND u.entity IS NOT NULL";
@ -190,18 +189,17 @@ class UserGroup extends CommonObject
{ {
$sql.= " AND u.entity IN (0,".$conf->entity.")"; $sql.= " AND u.entity IN (0,".$conf->entity.")";
} }
dol_syslog("UserGroup::listUsersForGroup sql=".$sql,LOG_DEBUG); dol_syslog("UserGroup::listUsersForGroup sql=".$sql,LOG_DEBUG);
$result = $this->db->query($sql); $result = $this->db->query($sql);
if ($result) if ($result)
{ {
while ($obj = $this->db->fetch_object($result)) while ($obj = $this->db->fetch_object($result))
{ {
$userstatic=new User($this->db); $newuser=new User($this->db);
$userstatic->fetch($obj->rowid); $newuser->fetch($obj->rowid);
$userstatic->usergroup_entity = $obj->usergroup_entity; $newuser->usergroup_entity = $obj->usergroup_entity;
$ret[]=$userstatic; $ret[]=$newuser;
} }
$this->db->free($result); $this->db->free($result);
@ -456,7 +454,7 @@ class UserGroup extends CommonObject
$this->rights->$row[0]->$row[1] = 1; $this->rights->$row[0]->$row[1] = 1;
} }
} }
$i++; $i++;
} }
} }
@ -521,7 +519,7 @@ class UserGroup extends CommonObject
global $user, $conf, $langs; global $user, $conf, $langs;
$now=dol_now(); $now=dol_now();
$entity=$conf->entity; $entity=$conf->entity;
if(! empty($conf->multicompany->enabled) && $conf->entity == 1) if(! empty($conf->multicompany->enabled) && $conf->entity == 1)
{ {
@ -576,7 +574,7 @@ class UserGroup extends CommonObject
global $user, $conf, $langs; global $user, $conf, $langs;
$error=0; $error=0;
$entity=$conf->entity; $entity=$conf->entity;
if(! empty($conf->multicompany->enabled) && $conf->entity == 1) if(! empty($conf->multicompany->enabled) && $conf->entity == 1)
{ {

View File

@ -24,7 +24,7 @@
/** /**
* \file htdocs/user/fiche.php * \file htdocs/user/fiche.php
* \brief Tab of user card * \brief Tab of user card
* \version $Id: fiche.php,v 1.281 2011/08/21 10:01:37 hregis Exp $ * \version $Id: fiche.php,v 1.282 2011/08/23 22:25:38 eldy Exp $
*/ */
require("../main.inc.php"); require("../main.inc.php");
@ -702,7 +702,7 @@ if (($action == 'create') || ($action == 'adduserldap'))
} }
print "</td></tr>\n"; print "</td></tr>\n";
} }
//Multicompany //Multicompany
if (! empty($conf->multicompany->enabled)) if (! empty($conf->multicompany->enabled))
{ {
@ -1037,7 +1037,7 @@ else
print yn($fuser->admin); print yn($fuser->admin);
} }
print '</td></tr>'."\n"; print '</td></tr>'."\n";
// Multicompany // Multicompany
if (! empty($conf->multicompany->enabled) && empty($conf->global->MULTICOMPANY_TRANSVERSE_MODE) && $conf->entity == 1 && $user->admin && ! $user->entity) if (! empty($conf->multicompany->enabled) && empty($conf->global->MULTICOMPANY_TRANSVERSE_MODE) && $conf->entity == 1 && $user->admin && ! $user->entity)
{ {
@ -1046,7 +1046,7 @@ else
{ {
print $langs->trans("AllEntities"); print $langs->trans("AllEntities");
} }
else else
{ {
$mc = new ActionsMulticompany($db); $mc = new ActionsMulticompany($db);
$mc->getInfo($fuser->entity); $mc->getInfo($fuser->entity);
@ -1394,7 +1394,7 @@ else
print '<table width="100%" class="border">'; print '<table width="100%" class="border">';
$rowspan=12; $rowspan=12;
if ($conf->societe->enabled) $rowspan++; if ($conf->societe->enabled) $rowspan++;
if ($conf->adherent->enabled) $rowspan++; if ($conf->adherent->enabled) $rowspan++;
if ($conf->webcalendar->enabled) $rowspan++; if ($conf->webcalendar->enabled) $rowspan++;
@ -1596,7 +1596,7 @@ else
} }
print '</td></tr>'; print '</td></tr>';
} }
// Tel pro // Tel pro
print "<tr>".'<td valign="top">'.$langs->trans("PhonePro").'</td>'; print "<tr>".'<td valign="top">'.$langs->trans("PhonePro").'</td>';
print '<td>'; print '<td>';
@ -1776,7 +1776,7 @@ else
$db->close(); $db->close();
llxFooter('$Date: 2011/08/21 10:01:37 $ - $Revision: 1.281 $'); llxFooter('$Date: 2011/08/23 22:25:38 $ - $Revision: 1.282 $');

View File

@ -22,7 +22,7 @@
/** /**
* \file htdocs/user/group/perms.php * \file htdocs/user/group/perms.php
* \brief Onglet user et permissions de la fiche utilisateur * \brief Onglet user et permissions de la fiche utilisateur
* \version $Id: perms.php,v 1.42 2011/08/21 00:20:43 hregis Exp $ * \version $Id: perms.php,v 1.43 2011/08/23 22:25:37 eldy Exp $
*/ */
require("../../main.inc.php"); require("../../main.inc.php");
@ -170,7 +170,8 @@ if ($id)
$sql.= " FROM ".MAIN_DB_PREFIX."rights_def as r"; $sql.= " FROM ".MAIN_DB_PREFIX."rights_def as r";
$sql.= ", ".MAIN_DB_PREFIX."usergroup_rights as ugr"; $sql.= ", ".MAIN_DB_PREFIX."usergroup_rights as ugr";
$sql.= " WHERE ugr.fk_id = r.id"; $sql.= " WHERE ugr.fk_id = r.id";
$sql.= " AND r.entity = ".$fgroup->entity; if (empty($conf->multicompany->enabled)) $sql.= " AND r.entity = ".$conf->entity;
else $sql.= " AND r.entity = ".$fgroup->entity;
$sql.= " AND ugr.fk_usergroup = ".$fgroup->id; $sql.= " AND ugr.fk_usergroup = ".$fgroup->id;
$result=$db->query($sql); $result=$db->query($sql);
@ -235,7 +236,8 @@ if ($id)
$sql = "SELECT r.id, r.libelle, r.module"; $sql = "SELECT r.id, r.libelle, r.module";
$sql.= " FROM ".MAIN_DB_PREFIX."rights_def as r"; $sql.= " FROM ".MAIN_DB_PREFIX."rights_def as r";
$sql.= " WHERE r.libelle NOT LIKE 'tou%'"; // On ignore droits "tous" $sql.= " WHERE r.libelle NOT LIKE 'tou%'"; // On ignore droits "tous"
$sql.= " AND r.entity = ".$fgroup->entity; if (empty($conf->multicompany->enabled)) $sql.= " AND r.entity = ".$conf->entity;
else $sql.= " AND r.entity = ".$fgroup->entity;
if (empty($conf->global->MAIN_USE_ADVANCED_PERMS)) $sql.= " AND r.perms NOT LIKE '%_advance'"; // Hide advanced perms if option is disable if (empty($conf->global->MAIN_USE_ADVANCED_PERMS)) $sql.= " AND r.perms NOT LIKE '%_advance'"; // Hide advanced perms if option is disable
$sql.= " ORDER BY r.module, r.id"; $sql.= " ORDER BY r.module, r.id";
@ -319,5 +321,5 @@ if ($id)
$db->close(); $db->close();
llxFooter('$Date: 2011/08/21 00:20:43 $ - $Revision: 1.42 $'); llxFooter('$Date: 2011/08/23 22:25:37 $ - $Revision: 1.43 $');
?> ?>

View File

@ -22,7 +22,7 @@
/** /**
* \file htdocs/user/perms.php * \file htdocs/user/perms.php
* \brief Onglet user et permissions de la fiche utilisateur * \brief Onglet user et permissions de la fiche utilisateur
* \version $Id: perms.php,v 1.59 2011/08/21 00:20:44 hregis Exp $ * \version $Id: perms.php,v 1.60 2011/08/23 22:25:38 eldy Exp $
*/ */
require("../main.inc.php"); require("../main.inc.php");
@ -154,7 +154,7 @@ foreach($modulesdir as $dir)
$handle=opendir($dir); $handle=opendir($dir);
if (is_resource($handle)) if (is_resource($handle))
{ {
while (($file = readdir($handle))!==false) while (($file = readdir($handle))!==false)
{ {
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')
{ {
@ -164,6 +164,7 @@ foreach($modulesdir as $dir)
{ {
include_once($dir.$file); include_once($dir.$file);
$objMod = new $modName($db); $objMod = new $modName($db);
// Load all lang files of module // Load all lang files of module
if (isset($objMod->langfiles) && is_array($objMod->langfiles)) if (isset($objMod->langfiles) && is_array($objMod->langfiles))
{ {
@ -173,8 +174,8 @@ foreach($modulesdir as $dir)
} }
} }
// Load all permissions // Load all permissions
if ($objMod->rights_class) { if ($objMod->rights_class)
{
$ret=$objMod->insert_permissions(0); $ret=$objMod->insert_permissions(0);
$modules[$objMod->rights_class]=$objMod; $modules[$objMod->rights_class]=$objMod;
@ -195,7 +196,8 @@ $sql = "SELECT r.id, r.libelle, r.module";
$sql.= " FROM ".MAIN_DB_PREFIX."rights_def as r,"; $sql.= " FROM ".MAIN_DB_PREFIX."rights_def as r,";
$sql.= " ".MAIN_DB_PREFIX."user_rights as ur"; $sql.= " ".MAIN_DB_PREFIX."user_rights as ur";
$sql.= " WHERE ur.fk_id = r.id"; $sql.= " WHERE ur.fk_id = r.id";
$sql.= " AND r.entity = ".$fuser->entity; if (empty($conf->multicompany->enabled)) $sql.= " AND r.entity = ".$conf->entity;
else $sql.= " AND r.entity = ".$fuser->entity;
$sql.= " AND ur.fk_user = ".$fuser->id; $sql.= " AND ur.fk_user = ".$fuser->id;
$result=$db->query($sql); $result=$db->query($sql);
@ -224,8 +226,10 @@ $sql.= " FROM ".MAIN_DB_PREFIX."rights_def as r,";
$sql.= " ".MAIN_DB_PREFIX."usergroup_rights as gr,"; $sql.= " ".MAIN_DB_PREFIX."usergroup_rights as gr,";
$sql.= " ".MAIN_DB_PREFIX."usergroup_user as gu"; $sql.= " ".MAIN_DB_PREFIX."usergroup_user as gu";
$sql.= " WHERE gr.fk_id = r.id"; $sql.= " WHERE gr.fk_id = r.id";
$sql.= " AND r.entity = ".$fuser->entity; if (empty($conf->multicompany->enabled)) $sql.= " AND r.entity = ".$conf->entity;
$sql.= " AND gu.entity IN (0,".$fuser->entity.")"; else $sql.= " AND r.entity = ".$fuser->entity;
if (empty($conf->multicompany->enabled)) $sql.= " AND gu.entity IN (0,".$conf->entity.")";
else $sql.= " AND gu.entity IN (0,".$fuser->entity.")";
$sql.= " AND gr.fk_usergroup = gu.fk_usergroup"; $sql.= " AND gr.fk_usergroup = gu.fk_usergroup";
$sql.= " AND gu.fk_user = ".$fuser->id; $sql.= " AND gu.fk_user = ".$fuser->id;
@ -288,16 +292,19 @@ print '</tr>'."\n";
$sql = "SELECT r.id, r.libelle, r.module"; $sql = "SELECT r.id, r.libelle, r.module";
$sql.= " FROM ".MAIN_DB_PREFIX."rights_def as r"; $sql.= " FROM ".MAIN_DB_PREFIX."rights_def as r";
$sql.= " WHERE r.libelle NOT LIKE 'tou%'"; // On ignore droits "tous" $sql.= " WHERE r.libelle NOT LIKE 'tou%'"; // On ignore droits "tous"
$sql.= " AND r.entity = ".$fuser->entity; if (empty($conf->multicompany->enabled)) $sql.= " AND r.entity = ".$conf->entity;
else $sql.= " AND r.entity = ".$fuser->entity;
if (empty($conf->global->MAIN_USE_ADVANCED_PERMS)) $sql.= " AND r.perms NOT LIKE '%_advance'"; // Hide advanced perms if option is disable if (empty($conf->global->MAIN_USE_ADVANCED_PERMS)) $sql.= " AND r.perms NOT LIKE '%_advance'"; // Hide advanced perms if option is disable
$sql.= " ORDER BY r.module, r.id"; $sql.= " ORDER BY r.module, r.id";
dol_syslog("sql=".$sql);
$result=$db->query($sql); $result=$db->query($sql);
if ($result) if ($result)
{ {
$num = $db->num_rows($result); $num = $db->num_rows($result);
$i = 0; $i = 0;
$var = True; $var = True;
while ($i < $num) while ($i < $num)
{ {
$obj = $db->fetch_object($result); $obj = $db->fetch_object($result);
@ -394,9 +401,10 @@ if ($result)
$i++; $i++;
} }
} }
else dol_print_error($db);
print '</table>'; print '</table>';
$db->close(); $db->close();
llxFooter('$Date: 2011/08/21 00:20:44 $ - $Revision: 1.59 $'); llxFooter('$Date: 2011/08/23 22:25:38 $ - $Revision: 1.60 $');
?> ?>