Add check_dead parameter to Item::enumeratePermissions

This commit is contained in:
Hypolite Petovan 2019-08-16 23:59:48 -04:00
parent aba23abfaa
commit 828368267c
1 changed files with 11 additions and 4 deletions

View File

@ -2881,13 +2881,20 @@ class Item extends BaseObject
return ($recipients1 == $recipients2);
}
// returns an array of contact-ids that are allowed to see this object
public static function enumeratePermissions(array $obj)
/**
* Returns an array of contact-ids that are allowed to see this object
*
* @param array $obj Item array with at least uid, allow_cid, allow_gid, deny_cid and deny_gid
* @param bool $check_dead Prunes unavailable contacts from the result
* @return array
* @throws \Exception
*/
public static function enumeratePermissions(array $obj, bool $check_dead = false)
{
$allow_people = expand_acl($obj['allow_cid']);
$allow_groups = Group::expand($obj['uid'], expand_acl($obj['allow_gid']));
$allow_groups = Group::expand($obj['uid'], expand_acl($obj['allow_gid']), $check_dead);
$deny_people = expand_acl($obj['deny_cid']);
$deny_groups = Group::expand($obj['uid'], expand_acl($obj['deny_gid']));
$deny_groups = Group::expand($obj['uid'], expand_acl($obj['deny_gid']), $check_dead);
$recipients = array_unique(array_merge($allow_people, $allow_groups));
$deny = array_unique(array_merge($deny_people, $deny_groups));
$recipients = array_diff($recipients, $deny);