diff options
-rw-r--r-- | include/group.php | 16 | ||||
-rw-r--r-- | mod/acl.php | 15 | ||||
-rw-r--r-- | view/js/acl.js | 13 |
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"); } } }); |