possibly improve the album list query and save the result in App::$data

This commit is contained in:
Mario Vavti 2017-01-13 11:22:50 +01:00
parent bb0f3afb71
commit 8ef84e2aa7
2 changed files with 17 additions and 13 deletions

View File

@ -691,20 +691,17 @@ class Photos extends \Zotlabs\Web\Controller {
} }
$album = (($datum) ? hex2bin($datum) : ''); $album = (($datum) ? hex2bin($datum) : '');
\App::$page['htmlhead'] .= "\r\n" . '<link rel="alternate" type="application/json+oembed" href="' . z_root() . '/oep?f=&url=' . urlencode(z_root() . '/' . \App::$cmd) . '" title="oembed" />' . "\r\n"; \App::$page['htmlhead'] .= "\r\n" . '<link rel="alternate" type="application/json+oembed" href="' . z_root() . '/oep?f=&url=' . urlencode(z_root() . '/' . \App::$cmd) . '" title="oembed" />' . "\r\n";
$r = q("SELECT resource_id, max(imgscale) AS imgscale FROM photo WHERE uid = %d AND album = '%s' //check if the album exists and if we have perms
AND imgscale <= 4 and photo_usage IN ( %d, %d ) and is_nsfw = %d $sql_extra GROUP BY resource_id", $r = q("SELECT album FROM photo WHERE uid = %d AND album = '%s' and is_nsfw = %d $sql_extra LIMIT 1",
intval($owner_uid), intval($owner_uid),
dbesc($album), dbesc($album),
intval(PHOTO_NORMAL),
intval(PHOTO_PROFILE),
intval($unsafe) intval($unsafe)
); );
if(count($r)) {
\App::set_pager_total(count($r)); if($r) {
\App::set_pager_itemspage(60); \App::set_pager_itemspage(60);
} else { } else {
goaway(z_root() . '/photos/' . \App::$data['channel']['channel_address']); goaway(z_root() . '/photos/' . \App::$data['channel']['channel_address']);

View File

@ -464,10 +464,15 @@ function photos_albums_list($channel, $observer, $sort_key = 'album', $direction
$sort_key = dbesc($sort_key); $sort_key = dbesc($sort_key);
$direction = dbesc($direction); $direction = dbesc($direction);
$albums = q("SELECT count( distinct resource_id ) as total, album from photo where uid = %d and photo_usage IN ( %d, %d ) $sql_extra group by album order by $sort_key $direction", //$albums = q("SELECT count( distinct resource_id ) as total, album from photo where uid = %d and photo_usage IN ( %d, %d ) $sql_extra group by album order by $sort_key $direction",
intval($channel_id), // intval($channel_id),
intval(PHOTO_NORMAL), // intval(PHOTO_NORMAL),
intval(PHOTO_PROFILE) // intval(PHOTO_PROFILE)
//);
// this query provides the same results but might perform better
$albums = q("SELECT count( distinct resource_id ) as total, album from photo where uid = %d and os_storage = 1 $sql_extra group by album order by $sort_key $direction",
intval($channel_id)
); );
// add various encodings to the array so we can just loop through and pick them out in a template // add various encodings to the array so we can just loop through and pick them out in a template
@ -490,6 +495,8 @@ function photos_albums_list($channel, $observer, $sort_key = 'album', $direction
} }
} }
App::$data['albums'] = $ret;
return $ret; return $ret;
} }