Merge branch 'v2.1'

# Conflicts:
#	config/app.php
This commit is contained in:
Andy Heathershaw 2018-07-28 09:01:32 +01:00
commit 1220e87bc9
3 changed files with 50 additions and 21 deletions

View File

@ -70,7 +70,9 @@ class DbHelper
->leftJoin('permissions AS group_permissions', 'group_permissions.id', '=', 'album_group_permissions.permission_id')
->leftJoin('permissions AS user_permissions', 'user_permissions.id', '=', 'album_user_permissions.permission_id')
->leftJoin('user_groups', 'user_groups.group_id', '=', 'album_group_permissions.group_id')
->where('albums.user_id', $user->id)
->where(function($query) use ($user, $permission)
{
$query->where('albums.user_id', $user->id)
->orWhere([
['group_permissions.section', 'album'],
['group_permissions.description', $permission],
@ -81,6 +83,7 @@ class DbHelper
['user_permissions.description', $permission],
['album_user_permissions.user_id', $user->id]
]);
});
}
$parentAlbumID = intval($parentAlbumID);

View File

@ -71,14 +71,14 @@ class AlbumController extends Controller
else if ($requestedView != 'slideshow')
{
$photos = $album->photos()
->orderBy(DB::raw('COALESCE(taken_at, created_at)'))
->orderBy(DB::raw('COALESCE(taken_at, created_at), name, id'))
->paginate(UserConfig::get('items_per_page'));
}
else
{
// The slideshow view needs access to all photos, not paged
$photos = $album->photos()
->orderBy(DB::raw('COALESCE(taken_at, created_at)'))
->orderBy(DB::raw('COALESCE(taken_at, created_at), name, id'))
->get();
}

View File

@ -105,14 +105,40 @@ class PhotoController extends Controller
// Load the Next/Previous buttons
$thisPhotoDate = is_null($photo->taken_at) ? $photo->created_at : $photo->taken_at;
$previousPhoto = $album->photos()
->where(DB::raw('COALESCE(taken_at, created_at)'), '<', $thisPhotoDate)
->orderBy(DB::raw('COALESCE(taken_at, created_at)'), 'desc')
->first();
$nextPhoto = $album->photos()
->where(DB::raw('COALESCE(taken_at, created_at)'), '>', $thisPhotoDate)
->orderBy(DB::raw('COALESCE(taken_at, created_at)'))
->first();
// I don't like the idea of using a totally raw SQL query, but it's the only sure-fire way to number the rows
// so we can get the previous/next photos accurately - and we don't have to load all data for the photo objects
$previousPhoto = null;
$nextPhoto = null;
$allAlbumPhotos = DB::select(
DB::raw(
'SELECT p.id, (@row_number:=@row_number + 1) AS row_number
FROM photos p, (SELECT @row_number:=0) AS t
WHERE p.album_id = :album_id
ORDER BY COALESCE(p.taken_at, p.created_at), p.name, p.id;'
),
[
'album_id' => $album->id
]
);
for ($i = 0; $i < count($allAlbumPhotos); $i++)
{
if ($allAlbumPhotos[$i]->id === $photo->id)
{
if ($i > 0)
{
$previousPhoto = Photo::where('id', $allAlbumPhotos[$i - 1]->id)->first();
}
if ($i + 1 < count($allAlbumPhotos))
{
$nextPhoto = Photo::where('id', $allAlbumPhotos[$i + 1]->id)->first();
}
break;
}
}
// Record the visit to the photo
if (UserConfig::get('enable_visitor_hits'))