aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/group.php16
-rw-r--r--mod/acl.php15
-rw-r--r--view/js/acl.js13
3 files changed, 31 insertions, 13 deletions
diff --git a/include/group.php b/include/group.php
index 22f221059..748ec0c13 100644
--- a/include/group.php
+++ b/include/group.php
@@ -211,6 +211,22 @@ function group_get_members($gid) {
return $ret;
}
+function group_get_members_xchan($gid) {
+ $ret = array();
+ if(intval($gid)) {
+ $r = q("SELECT xchan FROM group_member WHERE gid = %d AND uid = %d",
+ intval($gid),
+ intval(local_channel())
+ );
+ if(count($r)) {
+ foreach($r as $rr) {
+ $ret[] = $rr['xchan'];
+ }
+ }
+ }
+ return $ret;
+}
+
function mini_group_select($uid,$group = '') {
$grps = array();
diff --git a/mod/acl.php b/mod/acl.php
index f7984fa13..146cb74c8 100644
--- a/mod/acl.php
+++ b/mod/acl.php
@@ -2,6 +2,7 @@
/* ACL selector json backend */
require_once("include/acl_selectors.php");
+require_once("include/group.php");
function acl_init(&$a){
@@ -48,32 +49,28 @@ function acl_init(&$a){
if ($type=='' || $type=='g'){
- $r = q("SELECT `groups`.`id`, `groups`.`hash`, `groups`.`name`,
- %s as uids
+ $r = q("SELECT `groups`.`id`, `groups`.`hash`, `groups`.`name`
FROM `groups`,`group_member`
WHERE `groups`.`deleted` = 0 AND `groups`.`uid` = %d
- AND `group_member`.`gid`=`groups`.`id`
- $sql_extra
+ AND `group_member`.`gid`=`groups`.`id`
+ $sql_extra
GROUP BY `groups`.`id`
ORDER BY `groups`.`name`
LIMIT %d OFFSET %d",
- db_concat('group_member.xchan', ','),
intval(local_channel()),
intval($count),
intval($start)
);
foreach($r as $g){
-// logger('acl: group: ' . $g['name'] . ' members: ' . $g['uids']);
+// logger('acl: group: ' . $g['name'] . ' members: ' . group_get_members_xchan($g['id']));
$groups[] = array(
"type" => "g",
"photo" => "images/twopeople.png",
"name" => $g['name'],
"id" => $g['id'],
"xid" => $g['hash'],
- //FIXME: db_concat aka GROUP_CONCAT has a defoult setting of group_concat_max_len = 1024 in mysql.
- // This value is quickly exceeded here. As a result $g['uids'] only contains a part of the complete xchan set.
- "uids" => explode(",",$g['uids']),
+ "uids" => group_get_members_xchan($g['id']),
"link" => ''
);
}
diff --git a/view/js/acl.js b/view/js/acl.js
index 70440b572..65f1009ed 100644
--- a/view/js/acl.js
+++ b/view/js/acl.js
@@ -121,8 +121,10 @@ ACL.prototype.on_button_show = function(event) {
event.stopImmediatePropagation();
event.stopPropagation();
- that.set_allow($(this).parent().attr('id'));
- that.on_submit();
+ if(!$(this).parent().hasClass("grouphide")) {
+ that.set_allow($(this).parent().attr('id'));
+ that.on_submit();
+ }
return false;
};
@@ -245,12 +247,15 @@ ACL.prototype.update_view = function() {
break;
case "c":
if (that.allow_cid.indexOf(id)>=0){
- btshow.removeClass("btn-default").addClass("btn-success");
- bthide.removeClass("btn-danger").addClass("btn-default");
+ if(!$(this).hasClass("grouphide") ) {
+ btshow.removeClass("btn-default").addClass("btn-success");
+ bthide.removeClass("btn-danger").addClass("btn-default");
+ }
}
if (that.deny_cid.indexOf(id)>=0){
btshow.removeClass("btn-success").addClass("btn-default");
bthide.removeClass("btn-default").addClass("btn-danger");
+ $(this).removeClass("groupshow");
}
}
});