--- CUserGroup.ori.php 2014-12-19 15:11:44.458972836 +0100 +++ CUserGroup.php 2014-12-23 09:37:01.577915925 +0100 @@ -74,6 +74,7 @@ 'editable' => null, 'output' => API_OUTPUT_EXTEND, 'selectUsers' => null, + 'selectUsrgrpRights' => null, 'countOutput' => null, 'preservekeys' => null, 'sortfield' => '', @@ -731,6 +732,37 @@ protected function addRelatedObjects(array $options, array $result) { $result = parent::addRelatedObjects($options, $result); + + // PATCH TO OBTAIN selectRights on usrgrp + if ($options['selectUsrgrpRights'] !== null && $options['selectUsrgrpRights'] != API_OUTPUT_COUNT) { + + // relationMap creation with usrgrpid as foreign key + $relationMap = $this->createRelationMap($result, 'usrgrpid', 'usrgrpid' , 'users_groups'); + + + // all the keys from result (key as usrgrpid) + $usrgrpids=array_keys($result); + + // recopie des lignes 522 a 531 + + // get already linked rights + $linkedRights = array(); + $sql = 'SELECT groupid,permission,id'. + ' FROM rights'. + ' WHERE '.dbConditionInt('groupid', $usrgrpids); + + $linkedRightsDb = DBselect($sql); + while ($link = DBfetch($linkedRightsDb)) { + if (!isset($linkedRights[$link['groupid']])) { + $linkedRights[$link['groupid']] = array(); + } + $linkedRights[$link['groupid']][$link['id']] = $link['permission']; + } + + // add in result as rights + $result = $relationMap->mapMany($result,$linkedRights, 'usrgrprights'); + } + // END PATCH // adding users if ($options['selectUsers'] !== null && $options['selectUsers'] != API_OUTPUT_COUNT) { @@ -745,7 +777,6 @@ $result = $relationMap->mapMany($result, $dbUsers, 'users'); } - return $result; } }