Friendica Communications Platform
(please note that this is a clone of the repository at github, issues are handled there)
https://friendi.ca
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
94 lines
2.0 KiB
94 lines
2.0 KiB
<?php |
|
/* ACL selector json backend */ |
|
require_once("include/acl_selectors.php"); |
|
|
|
function acl_init(&$a){ |
|
if(!local_user()) |
|
return ""; |
|
|
|
|
|
$start = (x($_POST,'start')?$_POST['start']:0); |
|
$count = (x($_POST,'count')?$_POST['count']:100); |
|
$search = (x($_POST,'search')?$_POST['search']:""); |
|
|
|
if ($search!=""){ |
|
$sql_extra = "AND `name` LIKE '%%".dbesc($search)."%%'"; |
|
} |
|
|
|
// count groups and contacts |
|
$r = q("SELECT COUNT(`id`) AS g FROM `group` WHERE `deleted` = 0 AND `uid` = %d $sql_extra", |
|
intval(local_user()) |
|
); |
|
$group_count = (int)$r[0]['g']; |
|
$r = q("SELECT COUNT(`id`) AS c FROM `contact` |
|
WHERE `uid` = %d AND `self` = 0 |
|
AND `blocked` = 0 AND `pending` = 0 |
|
AND `notify` != '' $sql_extra" , |
|
intval(local_user()) |
|
); |
|
$contact_count = (int)$r[0]['c']; |
|
|
|
$tot = $group_count+$contact_count; |
|
|
|
$groups = array(); |
|
$contacts = array(); |
|
|
|
$r = q("SELECT `group`.`id`, `group`.`name`, GROUP_CONCAT(DISTINCT `group_member`.`contact-id` SEPARATOR ',') as uids |
|
FROM `group`,`group_member` |
|
WHERE `group`.`deleted` = 0 AND `group`.`uid` = %d |
|
AND `group_member`.`gid`=`group`.`id` |
|
$sql_extra |
|
GROUP BY `group`.`id` |
|
ORDER BY `group`.`name` |
|
LIMIT %d,%d", |
|
intval(local_user()), |
|
intval($start), |
|
intval($count) |
|
); |
|
|
|
|
|
foreach($r as $g){ |
|
$groups[] = array( |
|
"type" => "g", |
|
"photo" => "images/default-group-mm.jpg", |
|
"name" => $g['name'], |
|
"id" => intval($g['id']), |
|
"uids" => array_map("intval", explode(",",$g['uids'])) |
|
); |
|
} |
|
|
|
|
|
$r = q("SELECT `id`, `name`, `micro`, `network` FROM `contact` |
|
WHERE `uid` = %d AND `self` = 0 AND `blocked` = 0 AND `pending` = 0 AND `notify` != '' |
|
$sql_extra |
|
ORDER BY `name` ASC ", |
|
intval(local_user()) |
|
); |
|
foreach($r as $g){ |
|
$contacts[] = array( |
|
"type" => "c", |
|
"photo" => $g['micro'], |
|
"name" => $g['name'], |
|
"id" => intval($g['id']), |
|
"network" => $g['network'] |
|
); |
|
} |
|
|
|
|
|
|
|
|
|
$items = array_merge($groups, $contacts); |
|
|
|
$o = array( |
|
'tot' => $tot, |
|
'start' => $start, |
|
'count' => $count, |
|
'items' => $items, |
|
); |
|
|
|
echo json_encode($o); |
|
|
|
killme(); |
|
} |
|
|
|
|
|
|