From 7e846ba7acf2cf452f4250d42105ba24d429f67e Mon Sep 17 00:00:00 2001 From: Michael Date: Sun, 15 Jan 2017 14:50:26 +0000 Subject: [PATCH] Hide the calculation for "previous" and "next" behind a setting --- mod/photos.php | 57 +++++++++++++++++++++++++++----------------------- 1 file changed, 31 insertions(+), 26 deletions(-) diff --git a/mod/photos.php b/mod/photos.php index e23e4fcc92..af4c60b268 100644 --- a/mod/photos.php +++ b/mod/photos.php @@ -10,6 +10,8 @@ require_once('include/tags.php'); require_once('include/threads.php'); require_once('include/Probe.php'); +use \Friendica\Core\Config; + function photos_init(App $a) { if ($a->argc > 1) @@ -1339,35 +1341,38 @@ function photos_content(App $a) { $prevlink = ''; $nextlink = ''; - if ($_GET['order'] === 'posted') - $order = 'ASC'; - else - $order = 'DESC'; - /// @todo This query is totally bad, the whole functionality has to be changed - $prvnxt = qu("SELECT `resource-id` FROM `photo` WHERE `album` = '%s' AND `uid` = %d AND `scale` = 0 - $sql_extra ORDER BY `created` $order ", - dbesc($ph[0]['album']), - intval($owner_uid) - ); + // The query leads to a really intense used index. + // By now we hide it if someone wants to. + if (!Config::get('system', 'no_count', false)) { + if ($_GET['order'] === 'posted') + $order = 'ASC'; + else + $order = 'DESC'; - if (count($prvnxt)) { - for($z = 0; $z < count($prvnxt); $z++) { - if ($prvnxt[$z]['resource-id'] == $ph[0]['resource-id']) { - $prv = $z - 1; - $nxt = $z + 1; - if ($prv < 0) - $prv = count($prvnxt) - 1; - if ($nxt >= count($prvnxt)) - $nxt = 0; - break; + $prvnxt = qu("SELECT `resource-id` FROM `photo` WHERE `album` = '%s' AND `uid` = %d AND `scale` = 0 + $sql_extra ORDER BY `created` $order ", + dbesc($ph[0]['album']), + intval($owner_uid) + ); + + if (count($prvnxt)) { + for($z = 0; $z < count($prvnxt); $z++) { + if ($prvnxt[$z]['resource-id'] == $ph[0]['resource-id']) { + $prv = $z - 1; + $nxt = $z + 1; + if ($prv < 0) + $prv = count($prvnxt) - 1; + if ($nxt >= count($prvnxt)) + $nxt = 0; + break; + } } - } - $edit_suffix = ((($cmd === 'edit') && ($can_post)) ? '/edit' : ''); - $prevlink = 'photos/' . $a->data['user']['nickname'] . '/image/' . $prvnxt[$prv]['resource-id'] . $edit_suffix . (($_GET['order'] === 'posted') ? '?f=&order=posted' : ''); - $nextlink = 'photos/' . $a->data['user']['nickname'] . '/image/' . $prvnxt[$nxt]['resource-id'] . $edit_suffix . (($_GET['order'] === 'posted') ? '?f=&order=posted' : ''); - } - + $edit_suffix = ((($cmd === 'edit') && ($can_post)) ? '/edit' : ''); + $prevlink = 'photos/' . $a->data['user']['nickname'] . '/image/' . $prvnxt[$prv]['resource-id'] . $edit_suffix . (($_GET['order'] === 'posted') ? '?f=&order=posted' : ''); + $nextlink = 'photos/' . $a->data['user']['nickname'] . '/image/' . $prvnxt[$nxt]['resource-id'] . $edit_suffix . (($_GET['order'] === 'posted') ? '?f=&order=posted' : ''); + } + } if (count($ph) == 1) $hires = $lores = $ph[0];