Merge pull request #7524 from MrPetovan/bug/7337-check-dead-enumeratePermissions
Prune unavailable contacts from AP envelope
This commit is contained in:
commit
0f32ab10d8
2 changed files with 12 additions and 5 deletions
|
@ -2881,13 +2881,20 @@ class Item extends BaseObject
|
||||||
return ($recipients1 == $recipients2);
|
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_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_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));
|
$recipients = array_unique(array_merge($allow_people, $allow_groups));
|
||||||
$deny = array_unique(array_merge($deny_people, $deny_groups));
|
$deny = array_unique(array_merge($deny_people, $deny_groups));
|
||||||
$recipients = array_diff($recipients, $deny);
|
$recipients = array_diff($recipients, $deny);
|
||||||
|
|
|
@ -386,7 +386,7 @@ class Transmitter
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$receiver_list = Item::enumeratePermissions($item);
|
$receiver_list = Item::enumeratePermissions($item, true);
|
||||||
|
|
||||||
foreach ($terms as $term) {
|
foreach ($terms as $term) {
|
||||||
$cid = Contact::getIdForURL($term['url'], $item['uid']);
|
$cid = Contact::getIdForURL($term['url'], $item['uid']);
|
||||||
|
|
Loading…
Reference in a new issue