<?php
/* --------------------------------------------------------------------
Chevereto
http://chevereto.com/
@author Rodolfo Berrios A. <http://rodolfoberrios.com/>
<inbox@rodolfoberrios.com>
Copyright (C) Rodolfo Berrios A. All rights reserved.
BY USING THIS SOFTWARE YOU DECLARE TO ACCEPT THE CHEVERETO EULA
http://chevereto.com/license
--------------------------------------------------------------------- */
$route = function($handler) {
try {
if($handler->isRequestLevel(3)) return $handler->issue404(); // Allow only 2 levels
if(is_null($handler->request[0])) {
return $handler->issue404();
}
$logged_user = CHV\Login::getUser();
// User status override redirect
CHV\User::statusRedirect($logged_user['status']);
$id = CHV\decodeID($handler->request[0]);
$tables = CHV\DB::getTables();
if($id==0) {
return $handler->issue404();
}
// Get image DB
$image = CHV\Image::getSingle($id, true, true);
// No image or belogns to a banned user if exists?
if(!$image or (!$logged_user['is_admin'] and !is_null($image['user']['status']) and $image['user']['status'] !== 'valid')) {
return $handler->issue404();
}
if(!$image['path'] or !file_exists($image['path'])) {
//CHV\Image::delete($id);
return $handler->issue404();
}
$is_admin = $handler::getCond('admin');
$is_owner = $image['user']['id'] !== NULL ? ($image['user']['id'] == $logged_user['id']) : false;
// Privacy
if($handler::getCond('forced_private_mode')) {
$image['album']['privacy'] = CHV\get_chv_setting('website_content_privacy_mode');
}
if(!$is_admin and in_array($image['album']['privacy'], array('private', 'custom')) and !$is_owner) {
return $handler->issue404();
}
$db = CHV\DB::getInstance();
// User found
if($image['user']['id'] !== NULL) {
// Get user albums
$name_array = explode(' ', $image['user']['name']);
$user_name_short = $name_array[0];
$image['user']['albums'] = [];
// Lets fake the stream as an album
$image['user']['albums']['stream'] = CHV\User::getStreamAlbum($image['user']);
// Get user album list
$image['user']['albums'] += CHV\DB::get('albums', ['user_id' => $image['user']['id']], 'AND', ['field' => 'date', 'order' => 'asc']);
foreach($image['user']['albums'] as $k => $v) {
$image['user']['albums'][$k] = CHV\DB::formatRow($v, 'album');
CHV\Album::fill($image['user']['albums'][$k]);
}
}
// Get the album slice
if($image['album']['id'] !== NULL) {
$get_album_slice = CHV\Image::getAlbumSlice($image['id'], $image['album']['id'], 2);
$image_album_slice_db = $get_album_slice['db'];
$image_album_slice = array_merge($image['album'], $get_album_slice['formatted']);
}elseif($image['category_id']){
$get_album_slice = CHV\Image::getCategorySlice($image['id'], $image['category_id'], 2);
$image_album_slice = $get_album_slice['formatted'];
}else{
$image_album_slice['next'] = array('url_viewer' => G\get_base_url("?random") );
}
$image_safe_html = G\safe_html($image);
$pre_doctitle = $image_safe_html['description'] ? $image_safe_html['description'] : ($image_safe_html['name'].'.'.$image_safe_html['extension']) . ' hosted at ' . CHV\get_chv_setting('website_name');
$handler::setVar('pre_doctitle', $pre_doctitle);
$handler::setCond('owner', $is_owner);
$handler::setVar('image_album_slice_db', $image_album_slice_db);
$handler::setVar('image', $image);
$handler::setVar('image_safe_html', $image_safe_html);
$handler::setVar('image_album_slice', G\safe_html($image_album_slice));
// Populate image category to meta keywords
$category = $handler::getVar('categories')[$image['category_id']];
if($category) {
$handler::setVar('meta_keywords', _s('%s images', $category['name']) . ', ' . $handler::getVar('meta_keywords'));
}
// Populate the image meta description
if($image['description']) {
$handler::setVar('meta_description', htmlspecialchars($image['description']));
}
// Trail this view
$_SESSION['last_viewed_image'] = CHV\encodeId($id);
} catch(Exception $e) {
G\exception_to_error($e);
}
};