forked from Public/pics
Dennis Brentjes
344db6e4c5
The Delete button is non functional yet and is only available for admins and the photo owner.
76 lines
2.1 KiB
PHP
76 lines
2.1 KiB
PHP
<?php
|
|
/*****************************************************************************
|
|
* ViewPhoto.php
|
|
* Contains the view photo controller
|
|
*
|
|
* Kabuki CMS (C) 2013-2016, Aaron van Geffen
|
|
*****************************************************************************/
|
|
|
|
class ViewPhoto extends HTMLController
|
|
{
|
|
public function __construct()
|
|
{
|
|
// Ensure we're logged in at this point.
|
|
if (!Registry::get('user')->isLoggedIn())
|
|
throw new NotAllowedException();
|
|
|
|
$photo = Asset::fromSlug($_GET['slug']);
|
|
if (empty($photo))
|
|
throw new NotFoundException();
|
|
|
|
if (!empty($_POST))
|
|
$this->handleTagging($photo->getImage());
|
|
|
|
parent::__construct($photo->getTitle() . ' - ' . SITE_TITLE);
|
|
$page = new PhotoPage($photo->getImage());
|
|
|
|
// Exif data?
|
|
$exif = EXIF::fromFile($photo->getFullPath());
|
|
if ($exif)
|
|
$page->setExif($exif);
|
|
|
|
// What tag are we browsing?
|
|
$tag = isset($_GET['in']) ? Tag::fromId($_GET['in']) : null;
|
|
$id_tag = isset($tag) ? $tag->id_tag : null;
|
|
|
|
// Find previous photo in set.
|
|
$previous_url = $photo->getUrlForPreviousInSet($id_tag);
|
|
if ($previous_url)
|
|
$page->setPreviousPhotoUrl($previous_url);
|
|
|
|
// ... and the next photo, too.
|
|
$next_url = $photo->getUrlForNextInSet($id_tag);
|
|
if ($next_url)
|
|
$page->setNextPhotoUrl($next_url);
|
|
|
|
$user = Registry::get('user');
|
|
$author = $photo->getAuthor();
|
|
if ($user->isAdmin() || $user->getUserId() === $author->getUserId())
|
|
$page->setIsAssetOwner(true);
|
|
|
|
$this->page->adopt($page);
|
|
$this->page->setCanonicalUrl($photo->getPageUrl());
|
|
|
|
// Add an edit button to the admin bar.
|
|
if (Registry::get('user')->isAdmin())
|
|
$this->admin_bar->appendItem(BASEURL . '/editasset/?id=' . $photo->getId(), 'Edit this photo');
|
|
}
|
|
|
|
private function handleTagging(Image $photo)
|
|
{
|
|
header('Content-Type: text/json; charset=utf-8');
|
|
|
|
// Are we tagging a photo?
|
|
if (!isset($_POST['id_tag']))
|
|
{
|
|
echo json_encode(['error' => true, 'msg' => 'Invalid tag request.']);
|
|
exit;
|
|
}
|
|
|
|
// We are!
|
|
$photo->linkTags([(int) $_POST['id_tag']]);
|
|
echo json_encode(['success' => true]);
|
|
exit;
|
|
}
|
|
}
|