2 /* ACL selector json backend */
3 require_once("include/acl_selectors.php");
5 function acl_init(&$a){
10 $start = (x($_REQUEST,'start')?$_REQUEST['start']:0);
11 $count = (x($_REQUEST,'count')?$_REQUEST['count']:100);
12 $search = (x($_REQUEST,'search')?$_REQUEST['search']:"");
13 $type = (x($_REQUEST,'type')?$_REQUEST['type']:"");
16 // For use with jquery.autocomplete for private mail completion
18 if(x($_REQUEST,'query') && strlen($_REQUEST['query'])) {
20 $search = $_REQUEST['query'];
25 $sql_extra = "AND `name` LIKE '%%".dbesc($search)."%%'";
26 $sql_extra2 = "AND (`attag` LIKE '%%".dbesc($search)."%%' OR `name` LIKE '%%".dbesc($search)."%%' OR `nick` LIKE '%%".dbesc($search)."%%')";
28 $sql_extra = $sql_extra2 = "";
31 // count groups and contacts
32 if ($type=='' || $type=='g'){
33 $r = q("SELECT COUNT(`id`) AS g FROM `group` WHERE `deleted` = 0 AND `uid` = %d $sql_extra",
36 $group_count = (int)$r[0]['g'];
41 if ($type=='' || $type=='c'){
42 $r = q("SELECT COUNT(`id`) AS c FROM `contact`
43 WHERE `uid` = %d AND `self` = 0
44 AND `blocked` = 0 AND `pending` = 0 AND `archive` = 0
45 AND `notify` != '' $sql_extra2" ,
48 $contact_count = (int)$r[0]['c'];
50 elseif ($type == 'm') {
52 // autocomplete for Private Messages
54 $r = q("SELECT COUNT(`id`) AS c FROM `contact`
55 WHERE `uid` = %d AND `self` = 0
56 AND `blocked` = 0 AND `pending` = 0 AND `archive` = 0
57 AND `network` IN ('%s','%s','%s') $sql_extra2" ,
61 dbesc(NETWORK_DIASPORA)
63 $contact_count = (int)$r[0]['c'];
69 $tot = $group_count+$contact_count;
74 if ($type=='' || $type=='g'){
76 $r = q("SELECT `group`.`id`, `group`.`name`, GROUP_CONCAT(DISTINCT `group_member`.`contact-id` SEPARATOR ',') as uids
77 FROM `group`,`group_member`
78 WHERE `group`.`deleted` = 0 AND `group`.`uid` = %d
79 AND `group_member`.`gid`=`group`.`id`
82 ORDER BY `group`.`name`
90 // logger('acl: group: ' . $g['name'] . ' members: ' . $g['uids']);
93 "photo" => "images/twopeople.png",
95 "id" => intval($g['id']),
96 "uids" => array_map("intval", explode(",",$g['uids'])),
102 if ($type=='' || $type=='c'){
104 $r = q("SELECT `id`, `name`, `nick`, `micro`, `network`, `url`, `attag` FROM `contact`
105 WHERE `uid` = %d AND `self` = 0 AND `blocked` = 0 AND `pending` = 0 AND `archive` = 0 AND `notify` != ''
107 ORDER BY `name` ASC ",
111 elseif($type == 'm') {
112 $r = q("SELECT `id`, `name`, `nick`, `micro`, `network`, `url`, `attag` FROM `contact`
113 WHERE `uid` = %d AND `self` = 0 AND `blocked` = 0 AND `pending` = 0 AND `archive` = 0
114 AND `network` IN ('%s','%s','%s')
116 ORDER BY `name` ASC ",
117 intval(local_user()),
120 dbesc(NETWORK_DIASPORA)
129 $x['query'] = $search;
130 $x['photos'] = array();
131 $x['links'] = array();
132 $x['suggestions'] = array();
133 $x['data'] = array();
136 $x['photos'][] = $g['micro'];
137 $x['links'][] = $g['url'];
138 $x['suggestions'][] = $g['name'];
139 $x['data'][] = intval($g['id']);
142 echo json_encode($x);
150 "photo" => $g['micro'],
151 "name" => $g['name'],
152 "id" => intval($g['id']),
153 "network" => $g['network'],
155 "nick" => ($g['attag']) ? $g['attag'] : $g['nick'],
160 $items = array_merge($groups, $contacts);
169 echo json_encode($o);