Fix GROUP BY in acl_selector, api, notifier, photos, messages

https://github.com/friendica/friendica/issues/3322
This commit is contained in:
Alexandre Alapetite 2017-04-12 15:11:50 +02:00
parent c3e933642e
commit 74b6d09e89
7 changed files with 14 additions and 12 deletions

View File

@ -502,7 +502,7 @@ function acl_lookup(App $a, $out_type = 'json') {
INNER JOIN `group_member` ON `group_member`.`gid`=`group`.`id` AND `group_member`.`uid` = `group`.`uid` INNER JOIN `group_member` ON `group_member`.`gid`=`group`.`id` AND `group_member`.`uid` = `group`.`uid`
WHERE NOT `group`.`deleted` AND `group`.`uid` = %d WHERE NOT `group`.`deleted` AND `group`.`uid` = %d
$sql_extra $sql_extra
GROUP BY `group`.`name` GROUP BY `group`.`name`, `group`.`id`
ORDER BY `group`.`name` ORDER BY `group`.`name`
LIMIT %d,%d", LIMIT %d,%d",
intval(local_user()), intval(local_user()),
@ -619,7 +619,7 @@ function acl_lookup(App $a, $out_type = 'json') {
FROM `item` WHERE `parent` = %d FROM `item` WHERE `parent` = %d
AND (`author-name` LIKE '%%%s%%' OR `author-link` LIKE '%%%s%%') AND (`author-name` LIKE '%%%s%%' OR `author-link` LIKE '%%%s%%')
AND `author-link` NOT IN ('%s') AND `author-link` NOT IN ('%s')
GROUP BY `author-link` GROUP BY `author-link`, `author-avatar`, `author-name`
ORDER BY `author-name` ASC ORDER BY `author-name` ASC
", ",
intval($conv_id), intval($conv_id),

View File

@ -3064,7 +3064,7 @@ use \Friendica\Core\Config;
function api_fr_photos_list($type) { function api_fr_photos_list($type) {
if (api_user()===false) throw new ForbiddenException(); if (api_user()===false) throw new ForbiddenException();
$r = q("select `resource-id`, max(scale) as scale, album, filename, type from photo $r = q("select `resource-id`, max(scale) as scale, album, filename, type from photo
where uid = %d and album != 'Contact Photos' group by `resource-id`", where uid = %d and album != 'Contact Photos' group by `resource-id`, album, filename, type",
intval(local_user()) intval(local_user())
); );
$typetoext = array( $typetoext = array(
@ -3102,8 +3102,10 @@ use \Friendica\Core\Config;
$data_sql = ($scale === false ? "" : "data, "); $data_sql = ($scale === false ? "" : "data, ");
$r = q("select %s `resource-id`, `created`, `edited`, `title`, `desc`, `album`, `filename`, $r = q("select %s `resource-id`, `created`, `edited`, `title`, `desc`, `album`, `filename`,
`type`, `height`, `width`, `datasize`, `profile`, min(`scale`) as minscale, max(`scale`) as maxscale `type`, `height`, `width`, `datasize`, `profile`, min(`scale`) as minscale, max(`scale`) as maxscale
from photo where `uid` = %d and `resource-id` = '%s' %s group by `resource-id`", from photo where `uid` = %d and `resource-id` = '%s' %s
group by `resource-id`, `created`, `edited`, `title`, `desc`, `album`, `filename`,
`type`, `height`, `width`, `datasize`, `profile`",
$data_sql, $data_sql,
intval(local_user()), intval(local_user()),
dbesc($_REQUEST['photo_id']), dbesc($_REQUEST['photo_id']),

View File

@ -517,7 +517,7 @@ function notifier_run(&$argv, &$argc){
} }
$r1 = q("SELECT DISTINCT(`batch`), `id`, `name`,`network` FROM `contact` WHERE `network` = '%s' $r1 = q("SELECT DISTINCT(`batch`), `id`, `name`,`network` FROM `contact` WHERE `network` = '%s'
AND `uid` = %d AND `rel` != %d AND NOT `blocked` AND NOT `pending` AND NOT `archive` GROUP BY `batch` ORDER BY rand()", AND `uid` = %d AND `rel` != %d AND NOT `blocked` AND NOT `pending` AND NOT `archive` GROUP BY `batch`, `id` ORDER BY rand()",
dbesc(NETWORK_DIASPORA), dbesc(NETWORK_DIASPORA),
intval($owner['uid']), intval($owner['uid']),
intval(CONTACT_IS_SHARING) intval(CONTACT_IS_SHARING)

View File

@ -51,7 +51,7 @@ function photo_albums($uid, $update = false) {
$albums = qu("SELECT COUNT(DISTINCT `resource-id`) AS `total`, `album` $albums = qu("SELECT COUNT(DISTINCT `resource-id`) AS `total`, `album`
FROM `photo` FROM `photo`
WHERE `uid` = %d AND `album` != '%s' AND `album` != '%s' $sql_extra WHERE `uid` = %d AND `album` != '%s' AND `album` != '%s' $sql_extra
GROUP BY `album` ORDER BY `created` DESC", GROUP BY `album`, `created` ORDER BY `created` DESC",
intval($uid), intval($uid),
dbesc('Contact Photos'), dbesc('Contact Photos'),
dbesc(t('Contact Photos')) dbesc(t('Contact Photos'))
@ -61,7 +61,7 @@ function photo_albums($uid, $update = false) {
$albums = qu("SELECT DISTINCT(`album`), '' AS `total` $albums = qu("SELECT DISTINCT(`album`), '' AS `total`
FROM `photo` FROM `photo`
WHERE `uid` = %d AND `album` != '%s' AND `album` != '%s' $sql_extra WHERE `uid` = %d AND `album` != '%s' AND `album` != '%s' $sql_extra
GROUP BY `album` ORDER BY `created` DESC", GROUP BY `album`, `created` ORDER BY `created` DESC",
intval($uid), intval($uid),
dbesc('Contact Photos'), dbesc('Contact Photos'),
dbesc(t('Contact Photos')) dbesc(t('Contact Photos'))

View File

@ -350,7 +350,7 @@ function message_content(App $a) {
$o .= $header; $o .= $header;
$r = q("SELECT count(*) AS `total` FROM `mail` $r = q("SELECT count(*) AS `total` FROM `mail`
WHERE `mail`.`uid` = %d GROUP BY `parent-uri` ORDER BY `created` DESC", WHERE `mail`.`uid` = %d GROUP BY `parent-uri`, `created` ORDER BY `created` DESC",
intval(local_user()) intval(local_user())
); );
@ -533,7 +533,7 @@ function get_messages($user, $lstart, $lend) {
`mail`.* , `contact`.`name`, `contact`.`url`, `contact`.`thumb` , `contact`.`network`, `mail`.* , `contact`.`name`, `contact`.`url`, `contact`.`thumb` , `contact`.`network`,
count( * ) as count count( * ) as count
FROM `mail` LEFT JOIN `contact` ON `mail`.`contact-id` = `contact`.`id` FROM `mail` LEFT JOIN `contact` ON `mail`.`contact-id` = `contact`.`id`
WHERE `mail`.`uid` = %d GROUP BY `parent-uri` ORDER BY `mailcreated` DESC LIMIT %d , %d ", WHERE `mail`.`uid` = %d GROUP BY `parent-uri`, `mail`.id ORDER BY `mailcreated` DESC LIMIT %d , %d ",
intval($user), intval($lstart), intval($lend) intval($user), intval($lstart), intval($lend)
); );
} }

View File

@ -1241,7 +1241,7 @@ function photos_content(App $a) {
} }
$r = q("SELECT `resource-id`, `id`, `filename`, type, max(`scale`) AS `scale`, `desc` FROM `photo` WHERE `uid` = %d AND `album` = '%s' $r = q("SELECT `resource-id`, `id`, `filename`, type, max(`scale`) AS `scale`, `desc` FROM `photo` WHERE `uid` = %d AND `album` = '%s'
AND `scale` <= 4 $sql_extra GROUP BY `resource-id` ORDER BY `created` $order LIMIT %d , %d", AND `scale` <= 4 $sql_extra GROUP BY `resource-id`, `id` ORDER BY `created` $order LIMIT %d , %d",
intval($owner_uid), intval($owner_uid),
dbesc($album), dbesc($album),
intval($a->pager['start']), intval($a->pager['start']),

View File

@ -358,7 +358,7 @@ function videos_content(App $a) {
$r = q("SELECT hash, `id`, `filename`, filetype FROM `attach` $r = q("SELECT hash, `id`, `filename`, filetype FROM `attach`
WHERE `uid` = %d AND filetype LIKE '%%video%%' WHERE `uid` = %d AND filetype LIKE '%%video%%'
$sql_extra GROUP BY hash ORDER BY `created` DESC LIMIT %d , %d", $sql_extra GROUP BY hash, `id` ORDER BY `created` DESC LIMIT %d , %d",
intval($a->data['user']['uid']), intval($a->data['user']['uid']),
intval($a->pager['start']), intval($a->pager['start']),
intval($a->pager['itemspage']) intval($a->pager['itemspage'])