Added Database::execute to run a query

Database::execute automatically logs errors
pull/462/head
Tobias Reich 8 years ago
parent 7dc4e01313
commit 7b86a737af

@ -32,15 +32,12 @@ final class Album {
// Database
$sysstamp = time();
$query = Database::prepare(Database::get(), "INSERT INTO ? (title, sysstamp, public, visible) VALUES ('?', '?', '?', '?')", array(LYCHEE_TABLE_ALBUMS, $title, $sysstamp, $public, $visible));
$result = Database::get()->query($query);
$result = Database::execute(Database::get(), $query, __METHOD__, __LINE__);
// Call plugins
Plugins::get()->activate(__METHOD__, 1, func_get_args());
if ($result===false) {
Log::error(__METHOD__, __LINE__, Database::get()->error);
return false;
}
if ($result===false) return false;
return Database::get()->insert_id;
}
@ -111,7 +108,7 @@ final class Album {
default:
$query = Database::prepare(Database::get(), "SELECT * FROM ? WHERE id = '?' LIMIT 1", array(LYCHEE_TABLE_ALBUMS, $this->albumIDs));
$albums = Database::get()->query($query);
$albums = Database::execute(Database::get(), $query, __METHOD__, __LINE__);
$return = $albums->fetch_assoc();
$return = Album::prepareData($return);
$query = Database::prepare(Database::get(), "SELECT id, title, tags, public, star, album, thumbUrl, takestamp, url FROM ? WHERE album = '?' " . Settings::get()['sortingPhotos'], array(LYCHEE_TABLE_PHOTOS, $this->albumIDs));
@ -120,8 +117,11 @@ final class Album {
}
// Get photos
$photos = Database::get()->query($query);
$photos = Database::execute(Database::get(), $query, __METHOD__, __LINE__);
$previousPhotoID = '';
if ($photos===false) exit('Error: Could not get photos of album from database!');
while ($photo = $photos->fetch_assoc()) {
// Turn data from the database into a front-end friendly format
@ -190,12 +190,9 @@ final class Album {
else $query = Database::prepare(Database::get(), 'SELECT id, title, public, sysstamp, password FROM ? WHERE public = 1 AND visible <> 0 ' . Settings::get()['sortingAlbums'], array(LYCHEE_TABLE_ALBUMS));
// Execute query
$albums = Database::get()->query($query);
$albums = Database::execute(Database::get(), $query, __METHOD__, __LINE__);
if ($albums===false) {
Log::error(__METHOD__, __LINE__, 'Could not get albums from database (' . Database::get()->error . ')');
exit('Error: Could not get albums from database!');
}
if ($albums===false) exit('Error: Could not get albums from database!');
// For each album
while ($album = $albums->fetch_assoc()) {
@ -209,12 +206,9 @@ final class Album {
// Execute query
$query = Database::prepare(Database::get(), "SELECT thumbUrl FROM ? WHERE album = '?' ORDER BY star DESC, " . substr(Settings::get()['sortingPhotos'], 9) . " LIMIT 3", array(LYCHEE_TABLE_PHOTOS, $album['id']));
$thumbs = Database::get()->query($query);
$thumbs = Database::execute(Database::get(), $query, __METHOD__, __LINE__);
if ($thumbs===false) {
Log::error(__METHOD__, __LINE__, 'Could not get thumbs of album from database (' . Database::get()->error . ')');
exit('Error: Could not get thumbs of album from database!');
}
if ($thumbs===false) exit('Error: Could not get thumbs of album from database!');
// For each thumb
$k = 0;
@ -255,9 +249,11 @@ final class Album {
*/
$query = Database::prepare(Database::get(), 'SELECT thumbUrl FROM ? WHERE album = 0 ' . Settings::get()['sortingPhotos'], array(LYCHEE_TABLE_PHOTOS));
$unsorted = Database::get()->query($query);
$unsorted = Database::execute(Database::get(), $query, __METHOD__, __LINE__);
$i = 0;
if ($unsorted===false) exit('Error: Could not get unsorted photos from database!');
$return['unsorted'] = array(
'thumbs' => array(),
'num' => $unsorted->num_rows
@ -275,9 +271,11 @@ final class Album {
*/
$query = Database::prepare(Database::get(), 'SELECT thumbUrl FROM ? WHERE star = 1 ' . Settings::get()['sortingPhotos'], array(LYCHEE_TABLE_PHOTOS));
$starred = Database::get()->query($query);
$starred = Database::execute(Database::get(), $query, __METHOD__, __LINE__);
$i = 0;
if ($starred===false) exit('Error: Could not get starred photos from database!');
$return['starred'] = array(
'thumbs' => array(),
'num' => $starred->num_rows
@ -295,9 +293,11 @@ final class Album {
*/
$query = Database::prepare(Database::get(), 'SELECT thumbUrl FROM ? WHERE public = 1 ' . Settings::get()['sortingPhotos'], array(LYCHEE_TABLE_PHOTOS));
$public = Database::get()->query($query);
$public = Database::execute(Database::get(), $query, __METHOD__, __LINE__);
$i = 0;
if ($public===false) exit('Error: Could not get public photos from database!');
$return['public'] = array(
'thumbs' => array(),
'num' => $public->num_rows
@ -315,9 +315,11 @@ final class Album {
*/
$query = Database::prepare(Database::get(), 'SELECT thumbUrl FROM ? WHERE LEFT(id, 10) >= unix_timestamp(DATE_SUB(NOW(), INTERVAL 1 DAY)) ' . Settings::get()['sortingPhotos'], array(LYCHEE_TABLE_PHOTOS));
$recent = Database::get()->query($query);
$recent = Database::execute(Database::get(), $query, __METHOD__, __LINE__);
$i = 0;
if ($recent===false) exit('Error: Could not get recent photos from database!');
$return['recent'] = array(
'thumbs' => array(),
'num' => $recent->num_rows
@ -372,20 +374,17 @@ final class Album {
if ($this->albumIDs!=0&&is_numeric($this->albumIDs)) {
$query = Database::prepare(Database::get(), "SELECT title FROM ? WHERE id = '?' LIMIT 1", array(LYCHEE_TABLE_ALBUMS, $this->albumIDs));
$album = Database::get()->query($query);
$album = Database::execute(Database::get(), $query, __METHOD__, __LINE__);
if ($album===false) {
Log::error(__METHOD__, __LINE__, Database::get()->error);
return false;
}
if ($album===false) exit('Error: Could not get album from database!');
// Fetch object
// Get album object
$album = $album->fetch_object();
// Photo not found
if ($album===null) {
Log::error(__METHOD__, __LINE__, 'Album not found. Cannot start download.');
return false;
Log::error(Database::get(), __METHOD__, __LINE__, 'Could not find specified album');
exit('Error: Could not find specified album!');
}
// Set title
@ -401,17 +400,19 @@ final class Album {
// Create zip
$zip = new ZipArchive();
if ($zip->open($filename, ZIPARCHIVE::CREATE)!==TRUE) {
Log::error(__METHOD__, __LINE__, 'Could not create ZipArchive');
Log::error(Database::get(), __METHOD__, __LINE__, 'Could not create ZipArchive');
return false;
}
// Execute query
$photos = Database::get()->query($photos);
$photos = Database::execute(Database::get(), $photos, __METHOD__, __LINE__);
if ($album===null) exit('Error: Could not get photos from database!');
// Check if album empty
if ($photos->num_rows==0) {
Log::error(__METHOD__, __LINE__, 'Could not create ZipArchive without images');
return false;
Log::error(Database::get(), __METHOD__, __LINE__, 'Could not create ZipArchive without images');
exit('Error: Could not create ZipArchive without images!');
}
// Parse each path
@ -484,15 +485,12 @@ final class Album {
// Execute query
$query = Database::prepare(Database::get(), "UPDATE ? SET title = '?' WHERE id IN (?)", array(LYCHEE_TABLE_ALBUMS, $title, $this->albumIDs));
$result = Database::get()->query($query);
$result = Database::execute(Database::get(), $query, __METHOD__, __LINE__);
// Call plugins
Plugins::get()->activate(__METHOD__, 1, func_get_args());
if ($result===false) {
Log::error(__METHOD__, __LINE__, Database::get()->error);
return false;
}
if ($result===false) return false;
return true;
}
@ -507,15 +505,12 @@ final class Album {
// Execute query
$query = Database::prepare(Database::get(), "UPDATE ? SET description = '?' WHERE id IN (?)", array(LYCHEE_TABLE_ALBUMS, $description, $this->albumIDs));
$result = Database::get()->query($query);
$result = Database::execute(Database::get(), $query, __METHOD__, __LINE__);
// Call plugins
Plugins::get()->activate(__METHOD__, 1, func_get_args());
if ($result===false) {
Log::error(__METHOD__, __LINE__, Database::get()->error);
return false;
}
if ($result===false) return false;
return true;
}
@ -532,8 +527,12 @@ final class Album {
// Execute query
$query = Database::prepare(Database::get(), "SELECT public FROM ? WHERE id = '?' LIMIT 1", array(LYCHEE_TABLE_ALBUMS, $this->albumIDs));
$albums = Database::get()->query($query);
$album = $albums->fetch_object();
$albums = Database::execute(Database::get(), $query, __METHOD__, __LINE__);
if ($albums===false) return false;
// Get album object
$album = $albums->fetch_object();
// Call plugins
Plugins::get()->activate(__METHOD__, 1, func_get_args());
@ -555,8 +554,12 @@ final class Album {
// Execute query
$query = Database::prepare(Database::get(), "SELECT downloadable FROM ? WHERE id = '?' LIMIT 1", array(LYCHEE_TABLE_ALBUMS, $this->albumIDs));
$albums = Database::get()->query($query);
$album = $albums->fetch_object();
$albums = Database::execute(Database::get(), $query, __METHOD__, __LINE__);
if ($albums===false) return false;
// Get album object
$album = $albums->fetch_object();
// Call plugins
Plugins::get()->activate(__METHOD__, 1, func_get_args());
@ -581,20 +584,18 @@ final class Album {
// Set public
$query = Database::prepare(Database::get(), "UPDATE ? SET public = '?', visible = '?', downloadable = '?', password = NULL WHERE id IN (?)", array(LYCHEE_TABLE_ALBUMS, $public, $visible, $downloadable, $this->albumIDs));
$result = Database::get()->query($query);
if ($result===false) {
Log::error(__METHOD__, __LINE__, Database::get()->error);
return false;
}
$result = Database::execute(Database::get(), $query, __METHOD__, __LINE__);
if ($result===false) return false;
// Reset permissions for photos
if ($public===1) {
$query = Database::prepare(Database::get(), "UPDATE ? SET public = 0 WHERE album IN (?)", array(LYCHEE_TABLE_PHOTOS, $this->albumIDs));
$result = Database::get()->query($query);
if ($result===false) {
Log::error(__METHOD__, __LINE__, Database::get()->error);
return false;
}
$result = Database::execute(Database::get(), $query, __METHOD__, __LINE__);
if ($result===false) return false;
}
// Call plugins
@ -602,7 +603,6 @@ final class Album {
// Set password
if (isset($password)&&strlen($password)>0) return $this->setPassword($password);
return true;
}
@ -633,15 +633,12 @@ final class Album {
}
// Execute query
$result = Database::get()->query($query);
$result = Database::execute(Database::get(), $query, __METHOD__, __LINE__);
// Call plugins
Plugins::get()->activate(__METHOD__, 1, func_get_args());
if ($result===false) {
Log::error(__METHOD__, __LINE__, Database::get()->error);
return false;
}
if ($result===false) return false;
return true;
}
@ -656,14 +653,19 @@ final class Album {
// Execute query
$query = Database::prepare(Database::get(), "SELECT password FROM ? WHERE id = '?' LIMIT 1", array(LYCHEE_TABLE_ALBUMS, $this->albumIDs));
$albums = Database::get()->query($query);
$album = $albums->fetch_object();
$albums = Database::execute(Database::get(), $query, __METHOD__, __LINE__);
if ($albums===false) return false;
// Get album object
$album = $albums->fetch_object();
// Call plugins
Plugins::get()->activate(__METHOD__, 1, func_get_args());
// Check if password is correct
if ($album->password=='') return true;
else if ($album->password===crypt($password, $album->password)) return true;
if ($album->password===crypt($password, $album->password)) return true;
return false;
}
@ -684,27 +686,21 @@ final class Album {
$albumID = $albumID[0];
$query = Database::prepare(Database::get(), "UPDATE ? SET album = ? WHERE album IN (?)", array(LYCHEE_TABLE_PHOTOS, $albumID, $this->albumIDs));
$result = Database::get()->query($query);
$result = Database::execute(Database::get(), $query, __METHOD__, __LINE__);
if ($result===false) {
Log::error(__METHOD__, __LINE__, Database::get()->error);
return false;
}
if ($result===false) return false;
// $albumIDs contains all IDs without the first albumID
// Convert to string
$filteredIDs = implode(',', $albumIDs);
$query = Database::prepare(Database::get(), "DELETE FROM ? WHERE id IN (?)", array(LYCHEE_TABLE_ALBUMS, $filteredIDs));
$result = Database::get()->query($query);
$result = Database::execute(Database::get(), $query, __METHOD__, __LINE__);
// Call plugins
Plugins::get()->activate(__METHOD__, 1, func_get_args());
if ($result===false) {
Log::error(__METHOD__, __LINE__, Database::get()->error);
return false;
}
if ($result===false) return false;
return true;
}
@ -718,32 +714,37 @@ final class Album {
Plugins::get()->activate(__METHOD__, 0, func_get_args());
// Init vars
$error = false;
$photoIDs = array();
// Execute query
$query = Database::prepare(Database::get(), "SELECT id FROM ? WHERE album IN (?)", array(LYCHEE_TABLE_PHOTOS, $this->albumIDs));
$photos = Database::get()->query($query);
$photos = Database::execute(Database::get(), $query, __METHOD__, __LINE__);
// For each album delete photo
while ($row = $photos->fetch_object()) {
if ($photos===false) return false;
$photo = new Photo($row->id);
if (!$photo->delete($row->id)) $error = true;
// Only delete photos when albums contain photos
if ($photos->num_rows>0) {
// Add each id to photoIDs
while ($row = $photos->fetch_object()) $photoIDs[] = $row->id;
// Convert photoIDs to a string
$photoIDs = implode(',', $photoIDs);
// Delete all photos
$photo = new Photo($photoIDs);
if ($photo->delete()!==true) return false;
}
// Delete albums
$query = Database::prepare(Database::get(), "DELETE FROM ? WHERE id IN (?)", array(LYCHEE_TABLE_ALBUMS, $this->albumIDs));
$result = Database::get()->query($query);
$result = Database::execute(Database::get(), $query, __METHOD__, __LINE__);
// Call plugins
Plugins::get()->activate(__METHOD__, 1, func_get_args());
if ($error) return false;
if ($result===false) {
Log::error(__METHOD__, __LINE__, Database::get()->error);
return false;
}
if ($result===false) return false;
return true;
}

@ -87,8 +87,10 @@ final class Database {
else @$connection->set_charset('utf8');
// Set unicode
$connection->query('SET NAMES utf8;');
$query = 'SET NAMES utf8';
$result = self::execute($connection, $query, null, null);
if ($result===false) return false;
return true;
}
@ -103,8 +105,9 @@ final class Database {
// Create database
$query = self::prepare($connection, 'CREATE DATABASE IF NOT EXISTS ?', array($name));
$result = $connection->query($query);
$result = self::execute($connection, $query, null, null);
if ($result===false) return false;
if ($connection->select_db($name)===false) return false;
return true;
@ -116,12 +119,14 @@ final class Database {
Validator::required(isset($connection), __METHOD__);
// Check if tables exist
$query = self::prepare($connection, 'SELECT * FROM ?, ?, ?, ? LIMIT 0', array(LYCHEE_TABLE_PHOTOS, LYCHEE_TABLE_ALBUMS, LYCHEE_TABLE_SETTINGS, LYCHEE_TABLE_LOG));
if ($connection->query($query)) return true;
$query = self::prepare($connection, 'SELECT * FROM ?, ?, ?, ? LIMIT 0', array(LYCHEE_TABLE_PHOTOS, LYCHEE_TABLE_ALBUMS, LYCHEE_TABLE_SETTINGS, LYCHEE_TABLE_LOG));
$result = self::execute($connection, $query, null, null);
if ($result!==false) return true;
// Create log
// Check if log table exists
$exist = self::prepare($connection, 'SELECT * FROM ? LIMIT 0', array(LYCHEE_TABLE_LOG));
$result = $connection->query($exist);
$result = self::execute($connection, $exist, null, null);
if ($result===false) {
// Read file
@ -132,14 +137,16 @@ final class Database {
// Create table
$query = self::prepare($connection, $query, array(LYCHEE_TABLE_LOG));
$result = $connection->query($exist);
$result = self::execute($connection, $query, null, null);
if ($result===false) return false;
}
// Create settings
// Check if settings table exists
$exist = self::prepare($connection, 'SELECT * FROM ? LIMIT 0', array(LYCHEE_TABLE_SETTINGS));
$result = $connection->query($exist);
$result = self::execute($connection, $exist, __METHOD__, __LINE__);
if ($result===false) {
// Read file
@ -147,49 +154,44 @@ final class Database {
$query = @file_get_contents($file);
if ($query===false) {
Log::error(__METHOD__, __LINE__, 'Could not load query for lychee_settings');
Log::error($connection, __METHOD__, __LINE__, 'Could not load query for lychee_settings');
return false;
}
// Create table
$query = self::prepare($connection, $query, array(LYCHEE_TABLE_SETTINGS));
$result = $connection->query($exist);
if ($result===false) {
Log::error(__METHOD__, __LINE__, $connection->error);
return false;
}
$result = self::execute($connection, $query, __METHOD__, __LINE__);
if ($result===false) return false;
// Read file
$file = __DIR__ . '/../database/settings_content.sql';
$query = @file_get_contents($file);
if ($query===false) {
Log::error(__METHOD__, __LINE__, 'Could not load content-query for lychee_settings');
Log::error($connection, __METHOD__, __LINE__, 'Could not load content-query for lychee_settings');
return false;
}
// Add content
$query = self::prepare($connection, $query, array(LYCHEE_TABLE_SETTINGS));
$result = $connection->query($exist);
if ($result===false) {
Log::error(__METHOD__, __LINE__, $connection->error);
return false;
}
$result = self::execute($connection, $query, __METHOD__, __LINE__);
if ($result===false) return false;
// Generate identifier
$identifier = md5(microtime(true));
$query = self::prepare($connection, "UPDATE `?` SET `value` = '?' WHERE `key` = 'identifier' LIMIT 1", array(LYCHEE_TABLE_SETTINGS, $identifier));
$result = $connection->query($exist);
if ($result===false) {
Log::error(__METHOD__, __LINE__, $connection->error);
return false;
}
$result = self::execute($connection, $query, __METHOD__, __LINE__);
if ($result===false) return false;
}
// Create albums
// Check if albums table exists
$exist = self::prepare($connection, 'SELECT * FROM ? LIMIT 0', array(LYCHEE_TABLE_ALBUMS));
$result = $connection->query($exist);
$result = self::execute($connection, $exist, __METHOD__, __LINE__);
if ($result===false) {
// Read file
@ -197,23 +199,22 @@ final class Database {
$query = @file_get_contents($file);
if ($query===false) {
Log::error(__METHOD__, __LINE__, 'Could not load query for lychee_albums');
Log::error($connection, __METHOD__, __LINE__, 'Could not load query for lychee_albums');
return false;
}
// Create table
$query = self::prepare($connection, $query, array(LYCHEE_TABLE_ALBUMS));
$result = $connection->query($exist);
if ($result===false) {
Log::error(__METHOD__, __LINE__, $connection->error);
return false;
}
$result = self::execute($connection, $query, __METHOD__, __LINE__);
if ($result===false) return false;
}
// Create photos
// Check if photos table exists
$exist = self::prepare($connection, 'SELECT * FROM ? LIMIT 0', array(LYCHEE_TABLE_PHOTOS));
$result = $connection->query($exist);
$result = self::execute($connection, $exist, __METHOD__, __LINE__);
if ($result===false) {
// Read file
@ -221,17 +222,15 @@ final class Database {
$query = @file_get_contents($file);
if ($query===false) {
Log::error(__METHOD__, __LINE__, 'Could not load query for lychee_photos');
Log::error($connection, __METHOD__, __LINE__, 'Could not load query for lychee_photos');
return false;
}
// Create table
$query = self::prepare($connection, $query, array(LYCHEE_TABLE_PHOTOS));
$result = $connection->query($exist);
if ($result===false) {
Log::error(__METHOD__, __LINE__, $connection->error);
return false;
}
$result = self::execute($connection, $query, __METHOD__, __LINE__);
if ($result===false) return false;
}
@ -245,9 +244,13 @@ final class Database {
Validator::required(isset($connection, $dbName), __METHOD__);
// Get current version
$query = self::prepare($connection, "SELECT * FROM ? WHERE `key` = 'version'", array(LYCHEE_TABLE_SETTINGS));
$results = $connection->query($query);
$current = $results->fetch_object()->value;
$query = self::prepare($connection, "SELECT * FROM ? WHERE `key` = 'version'", array(LYCHEE_TABLE_SETTINGS));
$result = self::execute($connection, $query, __METHOD__, __LINE__);
if ($result===false) return false;
// Extract current version
$current = $result->fetch_object()->value;
// For each update
foreach (self::$versions as $version) {
@ -270,11 +273,9 @@ final class Database {
Validator::required(isset($connection), __METHOD__);
$query = self::prepare($connection, "UPDATE ? SET value = '?' WHERE `key` = 'version'", array(LYCHEE_TABLE_SETTINGS, $version));
$result = $connection->query($query);
if ($result===false) {
Log::error(__METHOD__, __LINE__, 'Could not update database (' . $connection->error . ')');
return false;
}
$result = self::execute($connection, $query, __METHOD__, __LINE__);
if ($result===false) return false;
}
@ -294,7 +295,7 @@ final class Database {
'data' => count($data)
);
if (($num['data']-$num['placeholder'])<0) Log::notice(__METHOD__, __LINE__, 'Could not completely prepare query. Query has more placeholders than values.');
if (($num['data']-$num['placeholder'])<0) Log::notice($connection, __METHOD__, __LINE__, 'Could not completely prepare query. Query has more placeholders than values.');
foreach ($data as $value) {
@ -344,6 +345,27 @@ final class Database {
}
public static function execute($connection, $query, $function, $line) {
// Check dependencies
Validator::required(isset($connection, $query), __METHOD__);
// Only activate logging when $function and $line is set
$logging = ($function===null||$line===null ? false : true);
// Execute query
$result = $connection->query($query);
// Check if execution failed
if ($result===false) {
if ($logging===true) Log::error($connection, $function, $line, $connection->error);
return false;
}
return $result;
}
}
?>

@ -46,7 +46,7 @@ final class Import {
$extension = getExtension($url);
if (!in_array(strtolower($extension), Photo::$validExtensions, true)) {
$error = true;
Log::error(__METHOD__, __LINE__, 'Photo format not supported (' . $url . ')');
Log::error(Database::get(), __METHOD__, __LINE__, 'Photo format not supported (' . $url . ')');
continue;
}
@ -54,7 +54,7 @@ final class Import {
$type = @exif_imagetype($url);
if (!in_array($type, Photo::$validTypes, true)) {
$error = true;
Log::error(__METHOD__, __LINE__, 'Photo type not supported (' . $url . ')');
Log::error(Database::get(), __METHOD__, __LINE__, 'Photo type not supported (' . $url . ')');
continue;
}
@ -64,14 +64,14 @@ final class Import {
if (@copy($url, $tmp_name)===false) {
$error = true;
Log::error(__METHOD__, __LINE__, 'Could not copy file (' . $tmp_name . ') to temp-folder (' . $tmp_name . ')');
Log::error(Database::get(), __METHOD__, __LINE__, 'Could not copy file (' . $tmp_name . ') to temp-folder (' . $tmp_name . ')');
continue;
}
// Import photo
if (!$this->photo($tmp_name, $albumID)) {
$error = true;
Log::error(__METHOD__, __LINE__, 'Could not import file: ' . $tmp_name);
Log::error(Database::get(), __METHOD__, __LINE__, 'Could not import file (' . $tmp_name . ')');
continue;
}
@ -92,7 +92,7 @@ final class Import {
if (substr($path, -1)==='/') $path = substr($path, 0, -1);
if (is_dir($path)===false) {
Log::error(__METHOD__, __LINE__, 'Given path is not a directory (' . $path . ')');
Log::error(Database::get(), __METHOD__, __LINE__, 'Given path is not a directory (' . $path . ')');
return 'Error: Given path is not a directory!';
}
@ -100,7 +100,7 @@ final class Import {
if ($path===LYCHEE_UPLOADS_BIG||($path . '/')===LYCHEE_UPLOADS_BIG||
$path===LYCHEE_UPLOADS_MEDIUM||($path . '/')===LYCHEE_UPLOADS_MEDIUM||
$path===LYCHEE_UPLOADS_THUMB||($path . '/')===LYCHEE_UPLOADS_THUMB) {
Log::error(__METHOD__, __LINE__, 'The given path is a reserved path of Lychee (' . $path . ')');
Log::error(Database::get(), __METHOD__, __LINE__, 'The given path is a reserved path of Lychee (' . $path . ')');
return 'Error: Given path is a reserved path of Lychee!';
}
@ -122,7 +122,7 @@ final class Import {
// the file may still be unreadable by the user
if (!is_readable($file)) {
$error = true;
Log::error(__METHOD__, __LINE__, 'Could not read file or directory: ' . $file);
Log::error(Database::get(), __METHOD__, __LINE__, 'Could not read file or directory (' . $file . ')');
continue;
}
@ -134,7 +134,7 @@ final class Import {
if (!$this->photo($file, $albumID)) {
$error = true;
Log::error(__METHOD__, __LINE__, 'Could not import file: ' . $file);
Log::error(Database::get(), __METHOD__, __LINE__, 'Could not import file (' . $file . ')');
continue;
}
@ -148,7 +148,7 @@ final class Import {
if ($newAlbumID===false) {
$error = true;
Log::error(__METHOD__, __LINE__, 'Could not create album in Lychee (' . $newAlbumID . ')');
Log::error(Database::get(), __METHOD__, __LINE__, 'Could not create album in Lychee (' . $newAlbumID . ')');
continue;
}
@ -156,7 +156,7 @@ final class Import {
if ($import!==true&&$import!=='Notice: Import only contains albums!') {
$error = true;
Log::error(__METHOD__, __LINE__, 'Could not import folder. Function returned warning.');
Log::error(Database::get(), __METHOD__, __LINE__, 'Could not import folder. Function returned warning.');
continue;
}

@ -4,35 +4,35 @@ namespace Lychee\Modules;
final class Log {
public static function notice($function, $line, $text = '') {
public static function notice($connection, $function, $line, $text = '') {
return Log::text('notice', $function, $line, $text);
return Log::text($connection, 'notice', $function, $line, $text);
}
public static function warning($function, $line, $text = '') {
public static function warning($connection, $function, $line, $text = '') {
return Log::text('warning', $function, $line, $text);
return Log::text($connection, 'warning', $function, $line, $text);
}
public static function error($function, $line, $text = '') {
public static function error($connection, $function, $line, $text = '') {
return Log::text('error', $function, $line, $text);
return Log::text($connection, 'error', $function, $line, $text);
}
private static function text($type, $function, $line, $text = '') {
private static function text($connection, $type, $function, $line, $text = '') {
// Check dependencies
Validator::required(isset($type, $function, $line, $text), __METHOD__);
Validator::required(isset($connection, $type, $function, $line, $text), __METHOD__);
// Get time
$sysstamp = time();
// Save in database
$query = Database::prepare(Database::get(), "INSERT INTO ? (time, type, function, line, text) VALUES ('?', '?', '?', '?', '?')", array(LYCHEE_TABLE_LOG, $sysstamp, $type, $function, $line, $text));
$result = Database::get()->query($query);
$query = Database::prepare($connection, "INSERT INTO ? (time, type, function, line, text) VALUES ('?', '?', '?', '?', '?')", array(LYCHEE_TABLE_LOG, $sysstamp, $type, $function, $line, $text));
$result = Database::execute($connection, $query, null, null);
if ($result===false) return false;
return true;

@ -39,7 +39,7 @@ final class Photo {
if (hasPermissions(LYCHEE_UPLOADS)===false||
hasPermissions(LYCHEE_UPLOADS_BIG)===false||
hasPermissions(LYCHEE_UPLOADS_THUMB)===false) {
Log::error(__METHOD__, __LINE__, 'An upload-folder is missing or not readable and writable');
Log::error(Database::get(), __METHOD__, __LINE__, 'An upload-folder is missing or not readable and writable');
exit('Error: An upload-folder is missing or not readable and writable!');
}
@ -80,35 +80,35 @@ final class Photo {
// Check if file exceeds the upload_max_filesize directive
if ($file['error']===UPLOAD_ERR_INI_SIZE) {
Log::error(__METHOD__, __LINE__, 'The uploaded file exceeds the upload_max_filesize directive in php.ini');
Log::error(Database::get(), __METHOD__, __LINE__, 'The uploaded file exceeds the upload_max_filesize directive in php.ini');
if ($returnOnError===true) return false;
exit('Error: The uploaded file exceeds the upload_max_filesize directive in php.ini!');
}
// Check if file was only partially uploaded
if ($file['error']===UPLOAD_ERR_PARTIAL) {
Log::error(__METHOD__, __LINE__, 'The uploaded file was only partially uploaded');
Log::error(Database::get(), __METHOD__, __LINE__, 'The uploaded file was only partially uploaded');
if ($returnOnError===true) return false;
exit('Error: The uploaded file was only partially uploaded!');
}
// Check if writing file to disk failed
if ($file['error']===UPLOAD_ERR_CANT_WRITE) {
Log::error(__METHOD__, __LINE__, 'Failed to write photo to disk');
Log::error(Database::get(), __METHOD__, __LINE__, 'Failed to write photo to disk');
if ($returnOnError===true) return false;
exit('Error: Failed to write photo to disk!');
}
// Check if a extension stopped the file upload
if ($file['error']===UPLOAD_ERR_EXTENSION) {
Log::error(__METHOD__, __LINE__, 'A PHP extension stopped the file upload');
Log::error(Database::get(), __METHOD__, __LINE__, 'A PHP extension stopped the file upload');
if ($returnOnError===true) return false;
exit('Error: A PHP extension stopped the file upload!');
}
// Check if the upload was successful
if ($file['error']!==UPLOAD_ERR_OK) {
Log::error(__METHOD__, __LINE__, 'Upload contains an error (' . $file['error'] . ')');
Log::error(Database::get(), __METHOD__, __LINE__, 'Upload contains an error (' . $file['error'] . ')');
if ($returnOnError===true) return false;
exit('Error: Upload failed!');
}
@ -116,7 +116,7 @@ final class Photo {
// Verify extension
$extension = getExtension($file['name']);
if (!in_array(strtolower($extension), self::$validExtensions, true)) {
Log::error(__METHOD__, __LINE__, 'Photo format not supported');
Log::error(Database::get(), __METHOD__, __LINE__, 'Photo format not supported');
if ($returnOnError===true) return false;
exit('Error: Photo format not supported!');
}
@ -124,7 +124,7 @@ final class Photo {
// Verify image
$type = @exif_imagetype($file['tmp_name']);
if (!in_array($type, self::$validTypes, true)) {
Log::error(__METHOD__, __LINE__, 'Photo type not supported');
Log::error(Database::get(), __METHOD__, __LINE__, 'Photo type not supported');
if ($returnOnError===true) return false;
exit('Error: Photo type not supported!');
}
@ -141,7 +141,7 @@ final class Photo {
// Calculate checksum
$checksum = sha1_file($tmp_name);
if ($checksum===false) {
Log::error(__METHOD__, __LINE__, 'Could not calculate checksum for photo');
Log::error(Database::get(), __METHOD__, __LINE__, 'Could not calculate checksum for photo');
if ($returnOnError===true) return false;
exit('Error: Could not calculate checksum for photo!');
}
@ -171,13 +171,13 @@ final class Photo {
// Import if not uploaded via web
if (!is_uploaded_file($tmp_name)) {
if (!@copy($tmp_name, $path)) {
Log::error(__METHOD__, __LINE__, 'Could not copy photo to uploads');
Log::error(Database::get(), __METHOD__, __LINE__, 'Could not copy photo to uploads');
if ($returnOnError===true) return false;
exit('Error: Could not copy photo to uploads!');
} else @unlink($tmp_name);
} else {
if (!@move_uploaded_file($tmp_name, $path)) {
Log::error(__METHOD__, __LINE__, 'Could not move photo to uploads');
Log::error(Database::get(), __METHOD__, __LINE__, 'Could not move photo to uploads');
if ($returnOnError===true) return false;
exit('Error: Could not move photo to uploads!');
}
@ -188,7 +188,7 @@ final class Photo {
// Photo already exists
// Check if the user wants to skip duplicates
if (Settings::get()['skipDuplicates']==='1') {
Log::notice(__METHOD__, __LINE__, 'Skipped upload of existing photo because skipDuplicates is activated');
Log::notice(Database::get(), __METHOD__, __LINE__, 'Skipped upload of existing photo because skipDuplicates is activated');
if ($returnOnError===true) return false;
exit('Warning: This photo has been skipped because it\'s already in your library.');
}
@ -210,7 +210,7 @@ final class Photo {
if ($file['type']==='image/jpeg'&&isset($info['orientation'])&&$info['orientation']!=='') {
$adjustFile = $this->adjustFile($path, $info);
if ($adjustFile!==false) $info = $adjustFile;
else Log::notice(__METHOD__, __LINE__, 'Skipped adjustment of photo (' . $info['title'] . ')');
else Log::notice(Database::get(), __METHOD__, __LINE__, 'Skipped adjustment of photo (' . $info['title'] . ')');
}
// Set original date
@ -218,7 +218,7 @@ final class Photo {
// Create Thumb
if (!$this->createThumb($path, $photo_name, $info['type'], $info['width'], $info['height'])) {
Log::error(__METHOD__, __LINE__, 'Could not create thumbnail for photo');
Log::error(Database::get(), __METHOD__, __LINE__, 'Could not create thumbnail for photo');
if ($returnOnError===true) return false;
exit('Error: Could not create thumbnail for photo!');
}
@ -235,10 +235,9 @@ final class Photo {
// Save to DB
$values = array(LYCHEE_TABLE_PHOTOS, $id, $info['title'], $photo_name, $description, $tags, $info['type'], $info['width'], $info['height'], $info['size'], $info['iso'], $info['aperture'], $info['make'], $info['model'], $info['shutter'], $info['focal'], $info['takestamp'], $path_thumb, $albumID, $public, $star, $checksum, $medium);
$query = Database::prepare(Database::get(), "INSERT INTO ? (id, title, url, description, tags, type, width, height, size, iso, aperture, make, model, shutter, focal, takestamp, thumbUrl, album, public, star, checksum, medium) VALUES ('?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?')", $values);
$result = Database::get()->query($query);
$result = Database::execute(Database::get(), $query, __METHOD__, __LINE__);
if ($result===false) {
Log::error(__METHOD__, __LINE__, Database::get()->error);
if ($returnOnError===true) return false;
exit('Error: Could not save photo in database!');
}
@ -258,12 +257,9 @@ final class Photo {
if (isset($photoID)) $query = Database::prepare(Database::get(), "SELECT id, url, thumbUrl, medium FROM ? WHERE checksum = '?' AND id <> '?' LIMIT 1", array(LYCHEE_TABLE_PHOTOS, $checksum, $photoID));
else $query = Database::prepare(Database::get(), "SELECT id, url, thumbUrl, medium FROM ? WHERE checksum = '?' LIMIT 1", array(LYCHEE_TABLE_PHOTOS, $checksum));
$result = Database::get()->query($query);
$result = Database::execute(Database::get(), $query, __METHOD__, __LINE__);
if ($result===false) {
Log::error(__METHOD__, __LINE__, 'Could not check for existing photos with the same checksum (' . Database::get()->error . ')');
return false;
}
if ($result===false) return false;
if ($result->num_rows===1) {
@ -343,7 +339,7 @@ final class Photo {
case 'image/jpeg': $sourceImg = imagecreatefromjpeg($url); break;
case 'image/png': $sourceImg = imagecreatefrompng($url); break;
case 'image/gif': $sourceImg = imagecreatefromgif($url); break;
default: Log::error(__METHOD__, __LINE__, 'Type of photo is not supported');
default: Log::error(Database::get(), __METHOD__, __LINE__, 'Type of photo is not supported');
return false;
break;
}
@ -398,7 +394,7 @@ final class Photo {
if (hasPermissions(LYCHEE_UPLOADS_MEDIUM)===false) {
// Permissions are missing
Log::notice(__METHOD__, __LINE__, 'Skipped creation of medium-photo, because uploads/medium/ is missing or not readable and writable.');
Log::notice(Database::get(), __METHOD__, __LINE__, 'Skipped creation of medium-photo, because uploads/medium/ is missing or not readable and writable.');
$error = true;
}
@ -423,7 +419,7 @@ final class Photo {
// Save image
try { $medium->writeImage($newUrl); }
catch (ImagickException $err) {
Log::notice(__METHOD__, __LINE__, 'Could not save medium-photo: ' . $err->getMessage());
Log::notice(Database::get(), __METHOD__, __LINE__, 'Could not save medium-photo: ' . $err->getMessage());
$error = true;
}
@ -636,8 +632,12 @@ final class Photo {
// Get photo
$query = Database::prepare(Database::get(), "SELECT * FROM ? WHERE id = '?' LIMIT 1", array(LYCHEE_TABLE_PHOTOS, $this->photoIDs));
$photos = Database::get()->query($query);
$photo = $photos->fetch_assoc();
$photos = Database::execute(Database::get(), $query, __METHOD__, __LINE__);
if ($photos===false) exit('Error: Could not get photo from database!');
// Get photo object
$photo = $photos->fetch_assoc();
// Parse photo
$photo['sysdate'] = date('d M. Y', substr($photo['id'], 0, -4));
@ -659,8 +659,12 @@ final class Photo {
// Get album
$query = Database::prepare(Database::get(), "SELECT public FROM ? WHERE id = '?' LIMIT 1", array(LYCHEE_TABLE_ALBUMS, $photo['album']));
$albums = Database::get()->query($query);
$album = $albums->fetch_assoc();
$albums = Database::execute(Database::get(), $query, __METHOD__, __LINE__);
if ($albums===false) exit('Error: Could not get album of photo from database!');
// Get album object
$album = $albums->fetch_assoc();
// Parse album
$photo['public'] = ($album['public']==='1' ? '2' : $photo['public']);
@ -799,26 +803,23 @@ final class Photo {
// Get photo
$query = Database::prepare(Database::get(), "SELECT title, url FROM ? WHERE id = '?' LIMIT 1", array(LYCHEE_TABLE_PHOTOS, $this->photoIDs));
$photos = Database::get()->query($query);
$photos = Database::execute(Database::get(), $query, __METHOD__, __LINE__);
if ($photos===false) {
Log::error(__METHOD__, __LINE__, Database::get()->error);
return false;
}
if ($photos===false) exit('Error: Could not get photo from database!');
// Get photo object
$photo = $photos->fetch_object();
// Photo not found
if ($photo===null) {
Log::error(__METHOD__, __LINE__, 'Album not found. Cannot start download.');
return false;
Log::error(Database::get(), __METHOD__, __LINE__, 'Could not find specified photo');
exit('Error: Could not find specified photo!');
}
// Get extension
$extension = getExtension($photo->url);
if ($extension===false) {
Log::error(__METHOD__, __LINE__, 'Invalid photo extension');
Log::error(Database::get(), __METHOD__, __LINE__, 'Invalid photo extension');
return false;
}
@ -866,15 +867,12 @@ final class Photo {
// Set title
$query = Database::prepare(Database::get(), "UPDATE ? SET title = '?' WHERE id IN (?)", array(LYCHEE_TABLE_PHOTOS, $title, $this->photoIDs));
$result = Database::get()->query($query);
$result = Database::execute(Database::get(), $query, __METHOD__, __LINE__);
// Call plugins
Plugins::get()->activate(__METHOD__, 1, func_get_args());
if ($result===false) {
Log::error(__METHOD__, __LINE__, Database::get()->error);
return false;
}
if ($result===false) return false;
return true;
}
@ -896,15 +894,12 @@ final class Photo {
// Set description
$query = Database::prepare(Database::get(), "UPDATE ? SET description = '?' WHERE id IN ('?')", array(LYCHEE_TABLE_PHOTOS, $description, $this->photoIDs));
$result = Database::get()->query($query);
$result = Database::execute(Database::get(), $query, __METHOD__, __LINE__);
// Call plugins
Plugins::get()->activate(__METHOD__, 1, func_get_args());
if ($result===false) {
Log::error(__METHOD__, __LINE__, Database::get()->error);
return false;
}
if ($result===false) return false;
return true;
}
@ -927,7 +922,9 @@ final class Photo {
// Get photos
$query = Database::prepare(Database::get(), "SELECT id, star FROM ? WHERE id IN (?)", array(LYCHEE_TABLE_PHOTOS, $this->photoIDs));
$photos = Database::get()->query($query);
$photos = Database::execute(Database::get(), $query, __METHOD__, __LINE__);
if ($photos===false) return false;
// For each photo
while ($photo = $photos->fetch_object()) {
@ -937,7 +934,7 @@ final class Photo {
// Set star
$query = Database::prepare(Database::get(), "UPDATE ? SET star = '?' WHERE id = '?'", array(LYCHEE_TABLE_PHOTOS, $star, $photo->id));
$result = Database::get()->query($query);
$result = Database::execute(Database::get(), $query, __METHOD__, __LINE__);
if ($result===false) $error = true;
@ -946,10 +943,7 @@ final class Photo {
// Call plugins
Plugins::get()->activate(__METHOD__, 1, func_get_args());
if ($error===true) {
Log::error(__METHOD__, __LINE__, Database::get()->error);
return false;
}
if ($error===true) return false;
return true;
}
@ -970,8 +964,12 @@ final class Photo {
// Get photo
$query = Database::prepare(Database::get(), "SELECT public, album FROM ? WHERE id = '?' LIMIT 1", array(LYCHEE_TABLE_PHOTOS, $this->photoIDs));
$photos = Database::get()->query($query);
$photo = $photos->fetch_object();
$photos = Database::execute(Database::get(), $query, __METHOD__, __LINE__);
if ($photos===false) return 0;
// Get photo object
$photo = $photos->fetch_object();
// Check if public
if ($photo->public==='1') {
@ -1017,23 +1015,24 @@ final class Photo {
// Get public
$query = Database::prepare(Database::get(), "SELECT public FROM ? WHERE id = '?' LIMIT 1", array(LYCHEE_TABLE_PHOTOS, $this->photoIDs));
$photos = Database::get()->query($query);
$photo = $photos->fetch_object();
$photos = Database::execute(Database::get(), $query, __METHOD__, __LINE__);
if ($photos===false) return false;
// Get photo object
$photo = $photos->fetch_object();
// Invert public
$public = ($photo->public==0 ? 1 : 0);
// Set public
$query = Database::prepare(Database::get(), "UPDATE ? SET public = '?' WHERE id = '?'", array(LYCHEE_TABLE_PHOTOS, $public, $this->photoIDs));
$result = Database::get()->query($query);
$result = Database::execute(Database::get(), $query, __METHOD__, __LINE__);
// Call plugins
Plugins::get()->activate(__METHOD__, 1, func_get_args());
if ($result===false) {
Log::error(__METHOD__, __LINE__, Database::get()->error);
return false;
}
if ($result===false) return false;
return true;
}
@ -1053,15 +1052,12 @@ final class Photo {
// Set album
$query = Database::prepare(Database::get(), "UPDATE ? SET album = '?' WHERE id IN (?)", array(LYCHEE_TABLE_PHOTOS, $albumID, $this->photoIDs));
$result = Database::get()->query($query);
$result = Database::execute(Database::get(), $query, __METHOD__, __LINE__);
// Call plugins
Plugins::get()->activate(__METHOD__, 1, func_get_args());
if ($result===false) {
Log::error(__METHOD__, __LINE__, Database::get()->error);
return false;
}
if ($result===false) return false;
return true;
}
@ -1087,15 +1083,12 @@ final class Photo {
// Set tags
$query = Database::prepare(Database::get(), "UPDATE ? SET tags = '?' WHERE id IN (?)", array(LYCHEE_TABLE_PHOTOS, $tags, $this->photoIDs));
$result = Database::get()->query($query);
$result = Database::execute(Database::get(), $query, __METHOD__, __LINE__);
// Call plugins
Plugins::get()->activate(__METHOD__, 1, func_get_args());
if ($result===false) {
Log::error(__METHOD__, __LINE__, Database::get()->error);
return false;
}
if ($result===false) return false;
return true;
}
@ -1113,14 +1106,14 @@ final class Photo {
// Call plugins
Plugins::get()->activate(__METHOD__, 0, func_get_args());
// Init vars
$error = false;
// Get photos
$query = Database::prepare(Database::get(), "SELECT id, checksum FROM ? WHERE id IN (?)", array(LYCHEE_TABLE_PHOTOS, $this->photoIDs));
$photos = Database::get()->query($query);
$photos = Database::execute(Database::get(), $query, __METHOD__, __LINE__);
if ($photos===false) {
Log::error(__METHOD__, __LINE__, Database::get()->error);
return false;
}
if ($photos===false) return false;
// For each photo
while ($photo = $photos->fetch_object()) {
@ -1132,15 +1125,13 @@ final class Photo {
// Duplicate entry
$values = array(LYCHEE_TABLE_PHOTOS, $id, LYCHEE_TABLE_PHOTOS, $photo->id);
$query = Database::prepare(Database::get(), "INSERT INTO ? (id, title, url, description, tags, type, width, height, size, iso, aperture, make, model, shutter, focal, takestamp, thumbUrl, album, public, star, checksum) SELECT '?' AS id, title, url, description, tags, type, width, height, size, iso, aperture, make, model, shutter, focal, takestamp, thumbUrl, album, public, star, checksum FROM ? WHERE id = '?'", $values);
$result = Database::get()->query($query);
$result = Database::execute(Database::get(), $query, __METHOD__, __LINE__);
if ($result===false) {
Log::error(__METHOD__, __LINE__, Database::get()->error);
return false;
}
if ($result===false) $error = true;
}
if ($error===true) return false;
return true;
}
@ -1158,14 +1149,14 @@ final class Photo {
// Call plugins
Plugins::get()->activate(__METHOD__, 0, func_get_args());
// Init vars
$error = false;
// Get photos
$query = Database::prepare(Database::get(), "SELECT id, url, thumbUrl, checksum FROM ? WHERE id IN (?)", array(LYCHEE_TABLE_PHOTOS, $this->photoIDs));
$photos = Database::get()->query($query);
$photos = Database::execute(Database::get(), $query, __METHOD__, __LINE__);
if ($photos===false) {
Log::error(__METHOD__, __LINE__, Database::get()->error);
return false;
}
if ($photos===false) return false;
// For each photo
while ($photo = $photos->fetch_object()) {
@ -1180,44 +1171,42 @@ final class Photo {
// Delete big
if (file_exists(LYCHEE_UPLOADS_BIG . $photo->url)&&!unlink(LYCHEE_UPLOADS_BIG . $photo->url)) {
Log::error(__METHOD__, __LINE__, 'Could not delete photo in uploads/big/');
return false;
Log::error(Database::get(), __METHOD__, __LINE__, 'Could not delete photo in uploads/big/');
$error = true;
}
// Delete medium
if (file_exists(LYCHEE_UPLOADS_MEDIUM . $photo->url)&&!unlink(LYCHEE_UPLOADS_MEDIUM . $photo->url)) {
Log::error(__METHOD__, __LINE__, 'Could not delete photo in uploads/medium/');
return false;
Log::error(Database::get(), __METHOD__, __LINE__, 'Could not delete photo in uploads/medium/');
$error = true;
}
// Delete thumb
if (file_exists(LYCHEE_UPLOADS_THUMB . $photo->thumbUrl)&&!unlink(LYCHEE_UPLOADS_THUMB . $photo->thumbUrl)) {
Log::error(__METHOD__, __LINE__, 'Could not delete photo in uploads/thumb/');
return false;
Log::error(Database::get(), __METHOD__, __LINE__, 'Could not delete photo in uploads/thumb/');
$error = true;
}
// Delete thumb@2x
if (file_exists(LYCHEE_UPLOADS_THUMB . $thumbUrl2x)&&!unlink(LYCHEE_UPLOADS_THUMB . $thumbUrl2x)) {
Log::error(__METHOD__, __LINE__, 'Could not delete high-res photo in uploads/thumb/');
return false;
Log::error(Database::get(), __METHOD__, __LINE__, 'Could not delete high-res photo in uploads/thumb/');
$error = true;
}
}
// Delete db entry
$query = Database::prepare(Database::get(), "DELETE FROM ? WHERE id = '?'", array(LYCHEE_TABLE_PHOTOS, $photo->id));
$result = Database::get()->query($query);
$result = Database::execute(Database::get(), $query, __METHOD__, __LINE__);
if ($result===false) {
Log::error(__METHOD__, __LINE__, Database::get()->error);
return false;
}
if ($result===false) $error = true;
}
// Call plugins
Plugins::get()->activate(__METHOD__, 1, func_get_args());
if ($error===true) return false;
return true;
}

@ -12,7 +12,7 @@ final class Settings {
// Execute query
$query = Database::prepare(Database::get(), "SELECT * FROM ?", array(LYCHEE_TABLE_SETTINGS));
$settings = Database::get()->query($query);
$settings = Database::execute(Database::get(), $query, __METHOD__, __LINE__);
// Add each to return
while ($setting = $settings->fetch_object()) $return[$setting->key] = $setting->value;
@ -43,7 +43,7 @@ final class Settings {
}
$result = Database::get()->query($query);
$result = Database::execute(Database::get(), $query, __METHOD__, __LINE__);
if ($result===false) return false;
return true;
@ -79,10 +79,7 @@ final class Settings {
// Execute query
// Do not prepare $username because it is hashed and save
// Preparing (escaping) the username would destroy the hash
if (self::set('username', $username, true)===false) {
Log::error(__METHOD__, __LINE__, Database::get()->error);
return false;
}
if (self::set('username', $username, true)===false) return false;
return true;
}
@ -97,10 +94,7 @@ final class Settings {
// Do not prepare $password because it is hashed and save
// Preparing (escaping) the password would destroy the hash
if (self::set('password', $password, true)===false) {
Log::error(__METHOD__, __LINE__, Database::get()->error);
return false;
}
if (self::set('password', $password, true)===false) return false;
return true;
}
@ -108,14 +102,11 @@ final class Settings {
public static function setDropboxKey($dropboxKey) {
if (strlen($dropboxKey)<1||strlen($dropboxKey)>50) {
Log::notice(__METHOD__, __LINE__, 'Dropbox key is either too short or too long');
Log::notice(Database::get(), __METHOD__, __LINE__, 'Dropbox key is either too short or too long');
return false;
}
if (self::set('dropboxKey', $dropboxKey)===false) {
Log::error(__METHOD__, __LINE__, Database::get()->error);
return false;
}
if (self::set('dropboxKey', $dropboxKey)===false) return false;
return true;
}
@ -152,10 +143,7 @@ final class Settings {
// Do not prepare $sorting because it is a true statement
// Preparing (escaping) the sorting would destroy it
// $sorting is save and can't contain user-input
if (self::set('sortingPhotos', $sorting, true)===false) {
Log::error(__METHOD__, __LINE__, Database::get()->error);
return false;
}
if (self::set('sortingPhotos', $sorting, true)===false) return false;
return true;
}
@ -189,10 +177,7 @@ final class Settings {
// Do not prepare $sorting because it is a true statement
// Preparing (escaping) the sorting would destroy it
// $sorting is save and can't contain user-input
if (self::set('sortingAlbums', $sorting, true)===false) {
Log::error(__METHOD__, __LINE__, Database::get()->error);
return false;
}
if (self::set('sortingAlbums', $sorting, true)===false) return false;
return true;
}

@ -10,34 +10,38 @@ if (!defined('LYCHEE')) exit('Error: Direct access is not allowed!');
// Add medium to photos
$query = Database::prepare($connection, "SELECT `medium` FROM `?` LIMIT 1", array(LYCHEE_TABLE_PHOTOS));
$result = $connection->query($query);
$result = Database::execute($connection, $query, 'update_020700', __LINE__);
if ($result===false) {
$query = Database::prepare($connection, "ALTER TABLE `?` ADD `medium` TINYINT(1) NOT NULL DEFAULT 0", array(LYCHEE_TABLE_PHOTOS));
$result = $connection->query($query);
if ($result===false) {
Log::error('update_020700', __LINE__, 'Could not update database (' . $connection->error . ')');
return false;
}
$result = Database::execute($connection, $query, 'update_020700', __LINE__);
if ($result===false) return false;
}
// Create medium folder
if (is_dir(LYCHEE_UPLOADS_MEDIUM)===false) {
// Only create the folder when it is missing
if (@mkdir(LYCHEE_UPLOADS_MEDIUM)===false) {
Log::error('update_020700', __LINE__, 'Could not create medium-folder');
Log::error($connection, 'update_020700', __LINE__, 'Could not create medium-folder');
}
}
// Add medium to settings
$query = Database::prepare($connection, "SELECT `key` FROM `?` WHERE `key` = 'medium' LIMIT 1", array(LYCHEE_TABLE_SETTINGS));
$result = $connection->query($query);
$result = Database::execute($connection, $query, 'update_020700', __LINE__);
if ($result->num_rows===0) {
$query = Database::prepare($connection, "INSERT INTO `?` (`key`, `value`) VALUES ('medium', '1')", array(LYCHEE_TABLE_SETTINGS));
$result = $connection->query($query);
if ($result===false) {
Log::error('update_020700', __LINE__, 'Could not update database (' . $connection->error . ')');
return false;
}
$result = Database::execute($connection, $query, 'update_020700', __LINE__);
if ($result===false) return false;
}
// Set version

@ -11,26 +11,21 @@ if (!defined('LYCHEE')) exit('Error: Direct access is not allowed!');
// Remove login
// Login now saved as crypt without md5. Legacy code has been removed.
$query = Database::prepare($connection, "UPDATE `?` SET `value` = '' WHERE `key` = 'username' LIMIT 1", array(LYCHEE_TABLE_SETTINGS));
$result = $connection->query($query);
if ($result===false) {
Log::error('update_030000', __LINE__, 'Could not reset username (' . $connection->error . ')');
return false;
}
$result = Database::execute($connection, $query, 'update_030000', __LINE__);
if ($result===false) return false;
$query = Database::prepare($connection, "UPDATE `?` SET `value` = '' WHERE `key` = 'password' LIMIT 1", array(LYCHEE_TABLE_SETTINGS));
$result = $connection->query($query);
if ($result===false) {
Log::error('update_030000', __LINE__, 'Could not reset password (' . $connection->error . ')');
return false;
}
$result = Database::execute($connection, $query, 'update_030000', __LINE__);
if ($result===false) return false;
// Make public albums private and reset password
// Password now saved as crypt without md5. Legacy code has been removed.
$query = Database::prepare($connection, "UPDATE `?` SET `public` = 0, `password` = NULL", array(LYCHEE_TABLE_ALBUMS));
$result = $connection->query($query);
if ($result===false) {
Log::error('update_030000', __LINE__, 'Could not reset public albums (' . $connection->error . ')');
return false;
}
$result = Database::execute($connection, $query, 'update_030000', __LINE__);
if ($result===false) return false;
// Set version
if (Database::setVersion($connection, '030000')===false) return false;

@ -10,51 +10,51 @@ if (!defined('LYCHEE')) exit('Error: Direct access is not allowed!');
// Change length of photo title
$query = Database::prepare($connection, "ALTER TABLE `?` CHANGE `title` `title` VARCHAR( 100 ) NOT NULL DEFAULT ''", array(LYCHEE_TABLE_PHOTOS));
$result = $connection->query($query);
if ($result===false) {
Log::error('update_030001', __LINE__, 'Could not update database (' . $connection->error . ')');
return false;
}
$result = Database::execute($connection, $query, 'update_030001', __LINE__);
if ($result===false) return false;
// Change length of album title
$query = Database::prepare($connection, "ALTER TABLE `?` CHANGE `title` `title` VARCHAR( 100 ) NOT NULL DEFAULT ''", array(LYCHEE_TABLE_ALBUMS));
$result = $connection->query($query);
if ($result===false) {
Log::error('update_030001', __LINE__, 'Could not update database (' . $connection->error . ')');
return false;
}
$result = Database::execute($connection, $query, 'update_030001', __LINE__);
if ($result===false) return false;
// Add album sorting to settings
$query = Database::prepare($connection, "SELECT `key` FROM `?` WHERE `key` = 'sortingAlbums' LIMIT 1", array(LYCHEE_TABLE_SETTINGS));
$result = $connection->query($query);
$result = Database::execute($connection, $query, 'update_030001', __LINE__);
if ($result===false) return false;
if ($result->num_rows===0) {
$query = Database::prepare($connection, "INSERT INTO `?` (`key`, `value`) VALUES ('sortingAlbums', 'ORDER BY id DESC')", array(LYCHEE_TABLE_SETTINGS));
$result = $connection->query($query);
if ($result===false) {
Log::error('update_030001', __LINE__, 'Could not update database (' . $connection->error . ')');
return false;
}
$result = Database::execute($connection, $query, 'update_030001', __LINE__);
if ($result===false) return false;
}
// Rename sorting to sortingPhotos
$query = Database::prepare($connection, "UPDATE ? SET `key` = 'sortingPhotos' WHERE `key` = 'sorting' LIMIT 1", array(LYCHEE_TABLE_SETTINGS));
$result = $connection->query($query);
if ($result===false) {
Log::error('update_030001', __LINE__, 'Could not update database (' . $connection->error . ')');
return false;
}
$result = Database::execute($connection, $query, 'update_030001', __LINE__);
if ($result===false) return false;
// Add identifier to settings
$query = Database::prepare($connection, "SELECT `key` FROM `?` WHERE `key` = 'identifier' LIMIT 1", array(LYCHEE_TABLE_SETTINGS));
$result = $connection->query($query);
$result = Database::execute($connection, $query, 'update_030001', __LINE__);
if ($result===false) return false;
if ($result->num_rows===0) {
$identifier = md5(microtime(true));
$query = Database::prepare($connection, "INSERT INTO `?` (`key`, `value`) VALUES ('identifier', '?')", array(LYCHEE_TABLE_SETTINGS, $identifier));
$result = $connection->query($query);
if ($result===false) {
Log::error('update_030001', __LINE__, 'Could not update database (' . $connection->error . ')');
return false;
}
$result = Database::execute($connection, $query, 'update_030001', __LINE__);
if ($result===false) return false;
}
// Set version

@ -10,14 +10,17 @@ if (!defined('LYCHEE')) exit('Error: Direct access is not allowed!');
// Add skipDuplicates to settings
$query = Database::prepare($connection, "SELECT `key` FROM `?` WHERE `key` = 'skipDuplicates' LIMIT 1", array(LYCHEE_TABLE_SETTINGS));
$result = $connection->query($query);
$result = Database::execute($connection, $query, 'update_030003', __LINE__);
if ($result===false) return false;
if ($result->num_rows===0) {
$query = Database::prepare($connection, "INSERT INTO `?` (`key`, `value`) VALUES ('skipDuplicates', '0')", array(LYCHEE_TABLE_SETTINGS));
$result = $connection->query($query);
if ($result===false) {
Log::error('update_030003', __LINE__, 'Could not update database (' . $connection->error . ')');
return false;
}
$result = Database::execute($connection, $query, 'update_030003', __LINE__);
if ($result===false) return false;
}
// Set version

@ -9,17 +9,14 @@ function getGraphHeader($photoID) {
if ($photo->getPublic('')===false) return false;
$query = Database::prepare(Database::get(), "SELECT title, description, url, medium FROM ? WHERE id = '?'", array(LYCHEE_TABLE_PHOTOS, $photoID));
$result = Database::get()->query($query);
$result = Database::execute(Database::get(), $query, __METHOD__, __LINE__);
if ($result===false) {
Log::error(__METHOD__, __LINE__, Database::get()->error);
return false;
}
if ($result===false) return false;
$row = $result->fetch_object();
if ($row===null) {
Log::error(__METHOD__, __LINE__, 'Could not find photo in database');
Log::error(Database::get(), __METHOD__, __LINE__, 'Could not find photo in database');
return false;
}

@ -18,7 +18,9 @@ function search($term) {
*/
$query = Database::prepare(Database::get(), "SELECT id, title, tags, public, star, album, thumbUrl, takestamp, url FROM ? WHERE title LIKE '%?%' OR description LIKE '%?%' OR tags LIKE '%?%'", array(LYCHEE_TABLE_PHOTOS, $term, $term, $term));
$result = Database::get()->query($query);
$result = Database::execute(Database::get(), $query, __METHOD__, __LINE__);
if ($result===false) return false;
while($photo = $result->fetch_assoc()) {
@ -32,7 +34,9 @@ function search($term) {
*/
$query = Database::prepare(Database::get(), "SELECT id, title, public, sysstamp, password FROM ? WHERE title LIKE '%?%' OR description LIKE '%?%'", array(LYCHEE_TABLE_ALBUMS, $term, $term));
$result = Database::get()->query($query);
$result = Database::execute(Database::get(), $query, __METHOD__, __LINE__);
if ($result===false) return false;
while($album = $result->fetch_assoc()) {
@ -41,7 +45,9 @@ function search($term) {
// Thumbs
$query = Database::prepare(Database::get(), "SELECT thumbUrl FROM ? WHERE album = '?' " . Settings::get()['sortingPhotos'] . " LIMIT 0, 3", array(LYCHEE_TABLE_PHOTOS, $album['id']));
$thumbs = Database::get()->query($query);
$thumbs = Database::execute(Database::get(), $query, __METHOD__, __LINE__);
if ($thumbs===false) return false;
// For each thumb
$k = 0;

Loading…
Cancel
Save