From 9fcd470acacf3dc283c91c52f591f5aaa3983ba4 Mon Sep 17 00:00:00 2001 From: Mario Vavti Date: Sun, 20 Mar 2016 20:26:55 +0100 Subject: fix #328 by using a seperate query instead of group_concat --- include/group.php | 16 ++++++++++++++++ mod/acl.php | 15 ++++++--------- 2 files changed, 22 insertions(+), 9 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 d48a9b19c..6eeca8af0 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" => '' ); } -- cgit v1.2.3 From 1ddb43b0d32ab0dadb3fabc1ed79c96c4365eb77 Mon Sep 17 00:00:00 2001 From: Mario Vavti Date: Sun, 20 Mar 2016 23:07:39 +0100 Subject: an attempt to visualize the supremacy of dont show over show in the acl selector --- view/js/acl.js | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) 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"); } } }); -- cgit v1.2.3