Skip to content

Commit

Permalink
Fix: compatibility with multicompany and transverse mode
Browse files Browse the repository at this point in the history
  • Loading branch information
hregis committed Jul 7, 2012
1 parent 714fe81 commit 05b7dfd
Show file tree
Hide file tree
Showing 4 changed files with 46 additions and 20 deletions.
25 changes: 16 additions & 9 deletions htdocs/user/class/usergroup.class.php
Expand Up @@ -146,11 +146,14 @@ function listGroupsForUser($userid)
{
while ($obj = $this->db->fetch_object($result))
{
$newgroup=new UserGroup($this->db);
$newgroup->fetch($obj->rowid);
$newgroup->usergroup_entity = $obj->usergroup_entity;
if (! array_key_exists($obj->rowid, $ret))
{
$newgroup=new UserGroup($this->db);
$newgroup->fetch($obj->rowid);
$ret[$obj->rowid]=$newgroup;
}

$ret[]=$newgroup;
$ret[$obj->rowid]->usergroup_entity[]=$obj->usergroup_entity;
}

$this->db->free($result);
Expand Down Expand Up @@ -181,25 +184,29 @@ function listUsersForGroup()
$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)
if (! empty($conf->multicompany->enabled) && $conf->entity == 1 && $user->admin && ! $user->entity)
{
$sql.= " AND u.entity IS NOT NULL";
}
else
{
$sql.= " AND u.entity IN (0,".$conf->entity.")";
}

dol_syslog(get_class($this)."::listUsersForGroup sql=".$sql,LOG_DEBUG);
$result = $this->db->query($sql);
if ($result)
{
while ($obj = $this->db->fetch_object($result))
{
$newuser=new User($this->db);
$newuser->fetch($obj->rowid);
$newuser->usergroup_entity = $obj->usergroup_entity;
if (! array_key_exists($obj->rowid, $ret))
{
$newuser=new User($this->db);
$newuser->fetch($obj->rowid);
$ret[$obj->rowid]=$newuser;
}

$ret[]=$newuser;
$ret[$obj->rowid]->usergroup_entity[]=$obj->usergroup_entity;
}

$this->db->free($result);
Expand Down
13 changes: 11 additions & 2 deletions htdocs/user/fiche.php
Expand Up @@ -1394,8 +1394,17 @@
print '</td>';
if (! empty($conf->multicompany->enabled) && ! empty($conf->multicompany->transverse_mode) && $conf->entity == 1 && $user->admin && ! $user->entity)
{
$mc->getInfo($group->usergroup_entity);
print '<td class="valeur">'.$mc->label."</td>";
print '<td class="valeur">';
if (! empty($group->usergroup_entity))
{
$nb=0;
foreach($group->usergroup_entity as $group_entity)
{
$mc->getInfo($group_entity);
print ($nb > 0 ? ', ' : '').$mc->label;
$nb++;
}
}
}
print '<td align="right">';
if ($caneditgroup)
Expand Down
20 changes: 15 additions & 5 deletions htdocs/user/group/fiche.php
Expand Up @@ -354,7 +354,7 @@

if (! empty($object->members))
{
if( !($conf->multicompany->enabled && $conf->multicompany->transverse_mode))
if (! ($conf->multicompany->enabled && $conf->multicompany->transverse_mode))
{
foreach($object->members as $useringroup)
{
Expand Down Expand Up @@ -404,7 +404,7 @@
print '<td class="liste_titre">'.$langs->trans("Login").'</td>';
print '<td class="liste_titre">'.$langs->trans("Lastname").'</td>';
print '<td class="liste_titre">'.$langs->trans("Firstname").'</td>';
if(! empty($conf->multicompany->enabled) && $conf->entity == 1)
if (! empty($conf->multicompany->enabled) && $conf->entity == 1)
{
print '<td class="liste_titre">'.$langs->trans("Entity").'</td>';
}
Expand All @@ -428,10 +428,20 @@
print '</td>';
print '<td>'.$useringroup->lastname.'</td>';
print '<td>'.$useringroup->firstname.'</td>';
if(! empty($conf->multicompany->enabled) && $conf->entity == 1)
if (! empty($conf->multicompany->enabled) && $conf->entity == 1)
{
$mc->getInfo($useringroup->usergroup_entity);
print '<td class="valeur">'.$mc->label."</td>";
print '<td class="valeur">';
if (! empty($useringroup->usergroup_entity))
{
$nb=0;
foreach($useringroup->usergroup_entity as $group_entity)
{
$mc->getInfo($group_entity);
print ($nb > 0 ? ', ' : '').$mc->label;
$nb++;
}
}
print '</td>';
}
print '<td align="center">'.$useringroup->getLibStatut(3).'</td>';
print '<td align="right">';
Expand Down
8 changes: 4 additions & 4 deletions htdocs/user/group/index.php
Expand Up @@ -55,10 +55,10 @@

print_fiche_titre($langs->trans("ListOfGroups"));

$sql = "SELECT g.rowid, g.nom, g.entity, g.datec, COUNT(ugu.rowid) as nb";
$sql = "SELECT g.rowid, g.nom, g.entity, g.datec, COUNT(DISTINCT ugu.fk_user) as nb";
$sql.= " FROM ".MAIN_DB_PREFIX."usergroup as g";
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."usergroup_user as ugu ON ugu.fk_usergroup = g.rowid";
if(! empty($conf->multicompany->enabled) && $conf->entity == 1 && ($conf->multicompany->transverse_mode || ($user->admin && ! $user->entity)))
if (! empty($conf->multicompany->enabled) && $conf->entity == 1 && ($conf->multicompany->transverse_mode || ($user->admin && ! $user->entity)))
{
$sql.= " WHERE g.entity IS NOT NULL";
}
Expand Down Expand Up @@ -100,13 +100,13 @@

print "<tr $bc[$var]>";
print '<td><a href="fiche.php?id='.$obj->rowid.'">'.img_object($langs->trans("ShowGroup"),"group").' '.$obj->nom.'</a>';
if (!$obj->entity)
if (! $obj->entity)
{
print img_picto($langs->trans("GlobalGroup"),'redstar');
}
print "</td>";
//multicompany
if(! empty($conf->multicompany->enabled) && empty($conf->multicompany->transverse_mode) && $conf->entity == 1)
if (! empty($conf->multicompany->enabled) && empty($conf->multicompany->transverse_mode) && $conf->entity == 1)
{
$mc->getInfo($obj->entity);
print '<td align="center">'.$mc->label.'</td>';
Expand Down

0 comments on commit 05b7dfd

Please sign in to comment.