fix #328 by using a seperate query instead of group_concat
This commit is contained in:
parent
23419e4c26
commit
9fcd470aca
@ -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();
|
||||
|
15
mod/acl.php
15
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" => ''
|
||||
);
|
||||
}
|
||||
|
Reference in New Issue
Block a user