Browse Source

prune all dead/blocked contacts from allowed permissions, ok to keep them in "deny" lists -

Contacts will be pruned when creating the editor. They can't be added with the ACL selector,
but we won't prevent them from being added through other means.
Allowed groups will be pruned on item submit.
pull/543/head
friendica 8 years ago
parent
commit
6b36863dd8
3 changed files with 31 additions and 2 deletions
  1. +25
    -0
      include/acl_selectors.php
  2. +5
    -1
      include/group.php
  3. +1
    -1
      include/notifier.php

+ 25
- 0
include/acl_selectors.php View File

@ -227,6 +227,23 @@ function fixacl(&$item) {
$item = intval(str_replace(array('<','>'),array('',''),$item));
}
function prune_deadguys($arr) {
if(! $arr)
return $arr;
$str = dbesc(implode(',',$arr));
$r = q("select id from contact where id in ( " . $str . ") and blocked = 0 and pending = 0 and archive = 0 ");
if($r) {
$ret = array();
foreach($r as $rr)
$ret[] = $rr['id'];
return $ret;
}
return array();
}
function populate_acl($user = null,$celeb = false) {
$allow_cid = $allow_gid = $deny_cid = $deny_gid = false;
@ -246,6 +263,14 @@ function populate_acl($user = null,$celeb = false) {
array_walk($deny_gid,'fixacl');
}
$allow_cid = prune_deadguys($allow_cid);
// We shouldn't need to prune deadguys from the block list. Either way they can't get the message.
// Also no point enumerating groups and checking them, that will take place on delivery.
// $deny_cid = prune_deadguys($deny_cid);
/*$o = '';
$o .= '<div id="acl-wrapper">';
$o .= '<div id="acl-permit-outer-wrapper">';


+ 5
- 1
include/group.php View File

@ -279,7 +279,7 @@ function group_side($every="contacts",$each="group",$edit = false, $group_id = 0
return $o;
}
function expand_groups($a) {
function expand_groups($a,$check_dead = false) {
if(! (is_array($a) && count($a)))
return array();
$groups = implode(',', $a);
@ -289,6 +289,10 @@ function expand_groups($a) {
if(count($r))
foreach($r as $rr)
$ret[] = $rr['contact-id'];
if($check_dead) {
require_once('include/acl_selectors.php');
$ret = prune_deadguys($ret);
}
return $ret;
}


+ 1
- 1
include/notifier.php View File

@ -309,7 +309,7 @@ function notifier_run(&$argv, &$argc){
}
$allow_people = expand_acl($parent['allow_cid']);
$allow_groups = expand_groups(expand_acl($parent['allow_gid']));
$allow_groups = expand_groups(expand_acl($parent['allow_gid']),true);
$deny_people = expand_acl($parent['deny_cid']);
$deny_groups = expand_groups(expand_acl($parent['deny_gid']));


Loading…
Cancel
Save