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
* \brief Fichier de la classe des groupes d'utilisateur
* \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");
@ -115,6 +115,7 @@ class UserGroup extends CommonObject
/**
* Return array of groups objects for a particular user
*
* @param userid User id to search
* @return array Array of groups objects
*/
@ -129,7 +130,6 @@ class UserGroup extends CommonObject
$sql.= " ".MAIN_DB_PREFIX."usergroup_user as ug";
$sql.= " WHERE ug.fk_usergroup = g.rowid";
$sql.= " AND ug.fk_user = ".$userid;
if(! empty($conf->multicompany->enabled) && $conf->entity == 1 && $user->admin && ! $user->entity)
{
$sql.= " AND g.entity IS NOT NULL";
@ -138,7 +138,6 @@ class UserGroup extends CommonObject
{
$sql.= " AND g.entity IN (0,".$conf->entity.")";
}
$sql.= " ORDER BY g.nom";
dol_syslog("UserGroup::listGroupsForUser sql=".$sql,LOG_DEBUG);
@ -147,11 +146,11 @@ class UserGroup extends CommonObject
{
while ($obj = $this->db->fetch_object($result))
{
$group=new UserGroup($this->db);
$group->fetch($obj->rowid);
$group->usergroup_entity = $obj->usergroup_entity;
$newgroup=new UserGroup($this->db);
$newgroup->fetch($obj->rowid);
$newgroup->usergroup_entity = $obj->usergroup_entity;
$ret[]=$group;
$ret[]=$newgroup;
}
$this->db->free($result);
@ -168,6 +167,7 @@ class UserGroup extends CommonObject
/**
* Return array of users id for group
*
* @return array of users
*/
function listUsersForGroup()
@ -181,7 +181,6 @@ class UserGroup extends CommonObject
$sql.= " ".MAIN_DB_PREFIX."usergroup_user as ug";
$sql.= " WHERE ug.fk_user = u.rowid";
$sql.= " AND ug.fk_usergroup = ".$this->id;
if(! empty($conf->multicompany->enabled) && $conf->entity == 1 && $user->admin && ! $user->entity)
{
$sql.= " AND u.entity IS NOT NULL";
@ -190,18 +189,17 @@ class UserGroup extends CommonObject
{
$sql.= " AND u.entity IN (0,".$conf->entity.")";
}
dol_syslog("UserGroup::listUsersForGroup sql=".$sql,LOG_DEBUG);
$result = $this->db->query($sql);
if ($result)
{
while ($obj = $this->db->fetch_object($result))
{
$userstatic=new User($this->db);
$userstatic->fetch($obj->rowid);
$userstatic->usergroup_entity = $obj->usergroup_entity;
$newuser=new User($this->db);
$newuser->fetch($obj->rowid);
$newuser->usergroup_entity = $obj->usergroup_entity;
$ret[]=$userstatic;
$ret[]=$newuser;
}
$this->db->free($result);
@ -456,7 +454,7 @@ class UserGroup extends CommonObject
$this->rights->$row[0]->$row[1] = 1;
}
}
$i++;
}
}
@ -521,7 +519,7 @@ class UserGroup extends CommonObject
global $user, $conf, $langs;
$now=dol_now();
$entity=$conf->entity;
if(! empty($conf->multicompany->enabled) && $conf->entity == 1)
{
@ -576,7 +574,7 @@ class UserGroup extends CommonObject
global $user, $conf, $langs;
$error=0;
$entity=$conf->entity;
if(! empty($conf->multicompany->enabled) && $conf->entity == 1)
{

View File

@ -24,7 +24,7 @@
/**
* \file htdocs/user/fiche.php
* \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");
@ -702,7 +702,7 @@ if (($action == 'create') || ($action == 'adduserldap'))
}
print "</td></tr>\n";
}
//Multicompany
if (! empty($conf->multicompany->enabled))
{
@ -1037,7 +1037,7 @@ else
print yn($fuser->admin);
}
print '</td></tr>'."\n";
// Multicompany
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");
}
else
else
{
$mc = new ActionsMulticompany($db);
$mc->getInfo($fuser->entity);
@ -1394,7 +1394,7 @@ else
print '<table width="100%" class="border">';
$rowspan=12;
if ($conf->societe->enabled) $rowspan++;
if ($conf->adherent->enabled) $rowspan++;
if ($conf->webcalendar->enabled) $rowspan++;
@ -1596,7 +1596,7 @@ else
}
print '</td></tr>';
}
// Tel pro
print "<tr>".'<td valign="top">'.$langs->trans("PhonePro").'</td>';
print '<td>';
@ -1776,7 +1776,7 @@ else
$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
* \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");
@ -170,7 +170,8 @@ if ($id)
$sql.= " FROM ".MAIN_DB_PREFIX."rights_def as r";
$sql.= ", ".MAIN_DB_PREFIX."usergroup_rights as ugr";
$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;
$result=$db->query($sql);
@ -235,7 +236,8 @@ if ($id)
$sql = "SELECT r.id, r.libelle, r.module";
$sql.= " FROM ".MAIN_DB_PREFIX."rights_def as r";
$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
$sql.= " ORDER BY r.module, r.id";
@ -319,5 +321,5 @@ if ($id)
$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
* \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");
@ -154,7 +154,7 @@ foreach($modulesdir as $dir)
$handle=opendir($dir);
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')
{
@ -164,6 +164,7 @@ foreach($modulesdir as $dir)
{
include_once($dir.$file);
$objMod = new $modName($db);
// Load all lang files of module
if (isset($objMod->langfiles) && is_array($objMod->langfiles))
{
@ -173,8 +174,8 @@ foreach($modulesdir as $dir)
}
}
// Load all permissions
if ($objMod->rights_class) {
if ($objMod->rights_class)
{
$ret=$objMod->insert_permissions(0);
$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.= " ".MAIN_DB_PREFIX."user_rights as ur";
$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;
$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_user as gu";
$sql.= " WHERE gr.fk_id = r.id";
$sql.= " AND r.entity = ".$fuser->entity;
$sql.= " AND gu.entity IN (0,".$fuser->entity.")";
if (empty($conf->multicompany->enabled)) $sql.= " AND r.entity = ".$conf->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 gu.fk_user = ".$fuser->id;
@ -288,16 +292,19 @@ print '</tr>'."\n";
$sql = "SELECT r.id, r.libelle, r.module";
$sql.= " FROM ".MAIN_DB_PREFIX."rights_def as r";
$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
$sql.= " ORDER BY r.module, r.id";
dol_syslog("sql=".$sql);
$result=$db->query($sql);
if ($result)
{
$num = $db->num_rows($result);
$i = 0;
$var = True;
while ($i < $num)
{
$obj = $db->fetch_object($result);
@ -394,9 +401,10 @@ if ($result)
$i++;
}
}
else dol_print_error($db);
print '</table>';
$db->close();
llxFooter('$Date: 2011/08/21 00:20:44 $ - $Revision: 1.59 $');
llxFooter('$Date: 2011/08/23 22:25:38 $ - $Revision: 1.60 $');
?>