Added Validator, removed Module, changed Access classes

pull/462/head
Tobias Reich 8 years ago
parent ad4fbf3ffd
commit b13283e4d4

@ -2,9 +2,13 @@
namespace Lychee\Access;
interface Access {
abstract class Access {
public function check($fn);
final private static function fnNotFound() {
exit('Error: Function not found! Please check the spelling of the called function.');
}
}

@ -4,63 +4,62 @@ namespace Lychee\Access;
use Lychee\Modules\Album;
use Lychee\Modules\Import;
use Lychee\Modules\Module;
use Lychee\Modules\Photo;
use Lychee\Modules\Session;
use Lychee\Modules\Settings;
use Lychee\Modules\Validator;
final class Admin implements Access {
final class Admin extends Access {
public function check($fn) {
public static function init($fn) {
switch ($fn) {
# Album functions
case 'Album::getAll': $this->getAlbums(); break;
case 'Album::get': $this->getAlbum(); break;
case 'Album::add': $this->addAlbum(); break;
case 'Album::setTitle': $this->setAlbumTitle(); break;
case 'Album::setDescription': $this->setAlbumDescription(); break;
case 'Album::setPublic': $this->setAlbumPublic(); break;
case 'Album::delete': $this->deleteAlbum(); break;
case 'Album::merge': $this->mergeAlbums(); break;
case 'Album::getAll': self::getAlbumsAction(); break;
case 'Album::get': self::getAlbumAction(); break;
case 'Album::add': self::addAlbumAction(); break;
case 'Album::setTitle': self::setAlbumTitleAction(); break;
case 'Album::setDescription': self::setAlbumDescriptionAction(); break;
case 'Album::setPublic': self::setAlbumPublicAction(); break;
case 'Album::delete': self::deleteAlbumAction(); break;
case 'Album::merge': self::mergeAlbumsAction(); break;
# Photo functions
case 'Photo::get': $this->getPhoto(); break;
case 'Photo::setTitle': $this->setPhotoTitle(); break;
case 'Photo::setDescription': $this->setPhotoDescription(); break;
case 'Photo::setStar': $this->setPhotoStar(); break;
case 'Photo::setPublic': $this->setPhotoPublic(); break;
case 'Photo::setAlbum': $this->setPhotoAlbum(); break;
case 'Photo::setTags': $this->setPhotoTags(); break;
case 'Photo::duplicate': $this->duplicatePhoto(); break;
case 'Photo::delete': $this->deletePhoto(); break;
case 'Photo::get': self::getPhotoAction(); break;
case 'Photo::setTitle': self::setPhotoTitleAction(); break;
case 'Photo::setDescription': self::setPhotoDescriptionAction(); break;
case 'Photo::setStar': self::setPhotoStarAction(); break;
case 'Photo::setPublic': self::setPhotoPublicAction(); break;
case 'Photo::setAlbum': self::setPhotoAlbumAction(); break;
case 'Photo::setTags': self::setPhotoTagsAction(); break;
case 'Photo::duplicate': self::duplicatePhotoAction(); break;
case 'Photo::delete': self::deletePhotoAction(); break;
# Add functions
case 'Photo::add': $this->upload(); break;
case 'Import::url': $this->importUrl(); break;
case 'Import::server': $this->importServer(); break;
case 'Photo::add': self::uploadAction(); break;
case 'Import::url': self::importUrlAction(); break;
case 'Import::server': self::importServerAction(); break;
# Search functions
case 'search': $this->search(); break;
case 'search': self::searchAction(); break;
# Session functions
case 'Session::init': $this->init(); break;
case 'Session::login': $this->login(); break;
case 'Session::logout': $this->logout(); break;
case 'Session::init': self::initAction(); break;
case 'Session::login': self::loginAction(); break;
case 'Session::logout': self::logoutAction(); break;
# Settings functions
case 'Settings::setLogin': $this->setLogin(); break;
case 'Settings::setSorting': $this->setSorting(); break;
case 'Settings::setDropboxKey': $this->setDropboxKey(); break;
case 'Settings::setLogin': self::setLoginAction(); break;
case 'Settings::setSorting': self::setSortingAction(); break;
case 'Settings::setDropboxKey': self::setDropboxKeyAction(); break;
# $_GET functions
case 'Album::getArchive': $this->getAlbumArchive(); break;
case 'Photo::getArchive': $this->getPhotoArchive(); break;
case 'Album::getArchive': self::getAlbumArchiveAction(); break;
case 'Photo::getArchive': self::getPhotoArchiveAction(); break;
# Error
default: exit('Error: Function not found! Please check the spelling of the called function.');
return false; break;
default: self::fnNotFound(); break;
}
@ -70,64 +69,70 @@ final class Admin implements Access {
# Album functions
private function getAlbums() {
private static function getAlbumsAction() {
$album = new Album(null);
echo json_encode($album->getAll(false));
}
private function getAlbum() {
private static function getAlbumAction() {
Validator::required(isset($_POST['albumID']), __METHOD__);
Module::dependencies(isset($_POST['albumID']));
$album = new Album($_POST['albumID']);
echo json_encode($album->get());
}
private function addAlbum() {
private static function addAlbumAction() {
Validator::required(isset($_POST['title']), __METHOD__);
Module::dependencies(isset($_POST['title']));
$album = new Album(null);
echo $album->add($_POST['title']);
}
private function setAlbumTitle() {
private static function setAlbumTitleAction() {
Validator::required(isset($_POST['albumIDs'], $_POST['title']), __METHOD__);
Module::dependencies(isset($_POST['albumIDs'], $_POST['title']));
$album = new Album($_POST['albumIDs']);
echo $album->setTitle($_POST['title']);
}
private function setAlbumDescription() {
private static function setAlbumDescriptionAction() {
Validator::required(isset($_POST['albumID'], $_POST['description']), __METHOD__);
Module::dependencies(isset($_POST['albumID'], $_POST['description']));
$album = new Album($_POST['albumID']);
echo $album->setDescription($_POST['description']);
}
private function setAlbumPublic() {
private static function setAlbumPublicAction() {
Validator::required(isset($_POST['albumID'], $_POST['password'], $_POST['visible'], $_POST['downloadable']), __METHOD__);
Module::dependencies(isset($_POST['albumID'], $_POST['password'], $_POST['visible'], $_POST['downloadable']));
$album = new Album($_POST['albumID']);
echo $album->setPublic($_POST['public'], $_POST['password'], $_POST['visible'], $_POST['downloadable']);
}
private function deleteAlbum() {
private static function deleteAlbumAction() {
Validator::required(isset($_POST['albumIDs']), __METHOD__);
Module::dependencies(isset($_POST['albumIDs']));
$album = new Album($_POST['albumIDs']);
echo $album->delete();
}
private function mergeAlbums() {
private static function mergeAlbumsAction() {
Module::dependencies(isset($_POST['albumIDs']));
Validator::required(isset($_POST['albumIDs']));
$album = new Album($_POST['albumIDs']);
echo $album->merge();
@ -135,73 +140,82 @@ final class Admin implements Access {
# Photo functions
private function getPhoto() {
private static function getPhotoAction() {
Validator::required(isset($_POST['photoID'], $_POST['albumID']), __METHOD__);
Module::dependencies(isset($_POST['photoID'], $_POST['albumID']));
$photo = new Photo($_POST['photoID']);
echo json_encode($photo->get($_POST['albumID']));
}
private function setPhotoTitle() {
private static function setPhotoTitleAction() {
Validator::required(isset($_POST['photoIDs'], $_POST['title']), __METHOD__);
Module::dependencies(isset($_POST['photoIDs'], $_POST['title']));
$photo = new Photo($_POST['photoIDs']);
echo $photo->setTitle($_POST['title']);
}
private function setPhotoDescription() {
private static function setPhotoDescriptionAction() {
Validator::required(isset($_POST['photoID'], $_POST['description']), __METHOD__);
Module::dependencies(isset($_POST['photoID'], $_POST['description']));
$photo = new Photo($_POST['photoID']);
echo $photo->setDescription($_POST['description']);
}
private function setPhotoStar() {
private static function setPhotoStarAction() {
Validator::required(isset($_POST['photoIDs']), __METHOD__);
Module::dependencies(isset($_POST['photoIDs']));
$photo = new Photo($_POST['photoIDs']);
echo $photo->setStar();
}
private function setPhotoPublic() {
private static function setPhotoPublicAction() {
Validator::required(isset($_POST['photoID']), __METHOD__);
Module::dependencies(isset($_POST['photoID']));
$photo = new Photo($_POST['photoID']);
echo $photo->setPublic();
}
private function setPhotoAlbum() {
private static function setPhotoAlbumAction() {
Validator::required(isset($_POST['photoIDs'], $_POST['albumID']), __METHOD__);
Module::dependencies(isset($_POST['photoIDs'], $_POST['albumID']));
$photo = new Photo($_POST['photoIDs']);
echo $photo->setAlbum($_POST['albumID']);
}
private function setPhotoTags() {
private static function setPhotoTagsAction() {
Validator::required(isset($_POST['photoIDs'], $_POST['tags']), __METHOD__);
Module::dependencies(isset($_POST['photoIDs'], $_POST['tags']));
$photo = new Photo($_POST['photoIDs']);
echo $photo->setTags($_POST['tags']);
}
private function duplicatePhoto() {
private static function duplicatePhotoAction() {
Validator::required(isset($_POST['photoIDs']), __METHOD__);
Module::dependencies(isset($_POST['photoIDs']));
$photo = new Photo($_POST['photoIDs']);
echo $photo->duplicate();
}
private function deletePhoto() {
private static function deletePhotoAction() {
Validator::required(isset($_POST['photoIDs']), __METHOD__);
Module::dependencies(isset($_POST['photoIDs']));
$photo = new Photo($_POST['photoIDs']);
echo $photo->delete();
@ -209,59 +223,62 @@ final class Admin implements Access {
# Add functions
private function upload() {
private static function uploadAction() {
Validator::required(isset($_FILES, $_POST['albumID'], $_POST['tags']), __METHOD__);
Module::dependencies(isset($_FILES, $_POST['albumID'], $_POST['tags']));
$photo = new Photo(null);
echo $photo->add($_FILES, $_POST['albumID'], '', $_POST['tags']);
}
private function importUrl() {
private static function importUrlAction() {
Validator::required(isset($_POST['url'], $_POST['albumID']), __METHOD__);
Module::dependencies(isset($_POST['url'], $_POST['albumID']));
$import = new Import();
echo $import->url($_POST['url'], $_POST['albumID']);
}
private function importServer() {
private static function importServerAction() {
Validator::required(isset($_POST['albumID'], $_POST['path']), __METHOD__);
Module::dependencies(isset($_POST['albumID'], $_POST['path']));
$import = new Import();
echo $import->server($_POST['path'], $_POST['albumID']);
}
# Search function
# Search functions
private static function searchAction() {
private function search() {
Validator::required(isset($_POST['term']), __METHOD__);
Module::dependencies(isset($_POST['term']));
echo json_encode(search($_POST['term']));
}
# Session functions
private function init() {
global $dbName;
private static function initAction() {
$session = new Session();
echo json_encode($session->init(false));
}
private function login() {
private static function loginAction() {
Validator::required(isset($_POST['user'], $_POST['password']), __METHOD__);
Module::dependencies(isset($_POST['user'], $_POST['password']));
$session = new Session();
echo $session->login($_POST['user'], $_POST['password']);
}
private function logout() {
private static function logoutAction() {
$session = new Session();
echo $session->logout();
@ -270,17 +287,17 @@ final class Admin implements Access {
# Settings functions
private function setLogin() {
private static function setLoginAction() {
Validator::required(isset($_POST['username'], $_POST['password']), __METHOD__);
Module::dependencies(isset($_POST['username'], $_POST['password']));
if (!isset($_POST['oldPassword'])) $_POST['oldPassword'] = '';
echo Settings::setLogin($_POST['oldPassword'], $_POST['username'], $_POST['password']);
echo Settings::setLogin(@$_POST['oldPassword'], $_POST['username'], $_POST['password']);
}
private function setSorting() {
private static function setSortingAction() {
Module::dependencies(isset($_POST['typeAlbums'], $_POST['orderAlbums'], $_POST['typePhotos'], $_POST['orderPhotos']));
Validator::required(isset($_POST['typeAlbums'], $_POST['orderAlbums'], $_POST['typePhotos'], $_POST['orderPhotos']), __METHOD__);
$sA = Settings::setSortingAlbums($_POST['typeAlbums'], $_POST['orderAlbums']);
$sP = Settings::setSortingPhotos($_POST['typePhotos'], $_POST['orderPhotos']);
@ -290,26 +307,29 @@ final class Admin implements Access {
}
private function setDropboxKey() {
private static function setDropboxKeyAction() {
Validator::required(isset($_POST['key']), __METHOD__);
Module::dependencies(isset($_POST['key']));
echo Settings::setDropboxKey($_POST['key']);
}
# Get functions
private function getAlbumArchive() {
private static function getAlbumArchiveAction() {
Validator::required(isset($_GET['albumID']), __METHOD__);
Module::dependencies(isset($_GET['albumID']));
$album = new Album($_GET['albumID']);
$album->getArchive();
}
private function getPhotoArchive() {
private static function getPhotoArchiveAction() {
Validator::required(isset($_GET['photoID']), __METHOD__);
Module::dependencies(isset($_GET['photoID']));
$photo = new Photo($_GET['photoID']);
$photo->getArchive();

@ -3,36 +3,35 @@
namespace Lychee\Access;
use Lychee\Modules\Album;
use Lychee\Modules\Module;
use Lychee\Modules\Photo;
use Lychee\Modules\Session;
use Lychee\Modules\Validator;
final class Guest implements Access {
final class Guest extends Access {
public function check($fn) {
public static function init($fn) {
switch ($fn) {
# Album functions
case 'Album::getAll': $this->getAlbums(); break;
case 'Album::get': $this->getAlbum(); break;
case 'Album::getPublic': $this->checkAlbumAccess(); break;
case 'Album::getAll': self::getAlbumsAction(); break;
case 'Album::get': self::getAlbumAction(); break;
case 'Album::getPublic': self::checkAlbumAccessAction(); break;
# Photo functions
case 'Photo::get': $this->getPhoto(); break;
case 'Photo::get': self::getPhotoAction(); break;
# Session functions
case 'Session::init': $this->init(); break;
case 'Session::login': $this->login(); break;
case 'Session::logout': $this->logout(); break;
case 'Session::init': self::initAction(); break;
case 'Session::login': self::loginAction(); break;
case 'Session::logout': self::logoutAction(); break;
# $_GET functions
case 'Album::getArchive': $this->getAlbumArchive(); break;
case 'Photo::getArchive': $this->getPhotoArchive(); break;
case 'Album::getArchive': self::getAlbumArchiveAction(); break;
case 'Photo::getArchive': self::getPhotoArchiveAction(); break;
# Error
default: exit('Error: Function not found! Please check the spelling of the called function.');
break;
default: self::fnNotFound(); break;
}
@ -42,16 +41,17 @@ final class Guest implements Access {
# Album functions
private function getAlbums() {
private static function getAlbumsAction() {
$album = new Album(null);
echo json_encode($album->getAll(true));
}
private function getAlbum() {
private static function getAlbumAction() {
Validator::required(isset($_POST['albumID'], $_POST['password']), __METHOD__);
Module::dependencies(isset($_POST['albumID'], $_POST['password']));
$album = new Album($_POST['albumID']);
if ($album->getPublic()) {
@ -69,9 +69,10 @@ final class Guest implements Access {
}
private function checkAlbumAccess() {
private static function checkAlbumAccessAction() {
Validator::required(isset($_POST['albumID'], $_POST['password']), __METHOD__);
Module::dependencies(isset($_POST['albumID'], $_POST['password']));
$album = new Album($_POST['albumID']);
if ($album->getPublic()) {
@ -91,9 +92,10 @@ final class Guest implements Access {
# Photo functions
private function getPhoto() {
private static function getPhotoAction() {
Validator::required(isset($_POST['photoID'], $_POST['albumID'], $_POST['password']), __METHOD__);
Module::dependencies(isset($_POST['photoID'], $_POST['albumID'], $_POST['password']));
$photo = new Photo($_POST['photoID']);
$pgP = $photo->getPublic($_POST['password']);
@ -106,24 +108,23 @@ final class Guest implements Access {
# Session functions
private function init() {
global $dbName;
private static function initAction() {
$session = new Session();
echo json_encode($session->init(true));
}
private function login() {
private static function loginAction() {
Validator::required(isset($_POST['user'], $_POST['password']), __METHOD__);
Module::dependencies(isset($_POST['user'], $_POST['password']));
$session = new Session();
echo $session->login($_POST['user'], $_POST['password']);
}
private function logout() {
private static function logoutAction() {
$session = new Session();
echo $session->logout();
@ -132,9 +133,10 @@ final class Guest implements Access {
# $_GET functions
private function getAlbumArchive() {
private static function getAlbumArchiveAction() {
Validator::required(isset($_GET['albumID'], $_GET['password']), __METHOD__);
Module::dependencies(isset($_GET['albumID'], $_GET['password']));
$album = new Album($_GET['albumID']);
if ($album->getPublic()&&$album->getDownloadable()) {
@ -152,9 +154,10 @@ final class Guest implements Access {
}
private function getPhotoArchive() {
private static function getPhotoArchiveAction() {
Validator::required(isset($_GET['photoID'], $_GET['password']), __METHOD__);
Module::dependencies(isset($_GET['photoID'], $_GET['password']));
$photo = new Photo($_GET['photoID']);
$pgP = $photo->getPublic($_GET['password']);

@ -3,18 +3,18 @@
namespace Lychee\Access;
use Lychee\Modules\Config;
use Lychee\Modules\Module;
use Lychee\Modules\Validator;
final class Installation implements Access {
final class Installation extends Access {
public function check($fn) {
public static function init($fn) {
switch ($fn) {
case 'Config::create': $this->configCreate(); break;
case 'Config::create': self::configCreateAction(); break;
# Error
default: $this->init(); break;
default: self::initAction(); break;
}
@ -22,14 +22,15 @@ final class Installation implements Access {
}
private function configCreate() {
private static function configCreateAction() {
Validator::required(isset($_POST['dbHost'], $_POST['dbUser'], $_POST['dbPassword'], $_POST['dbName'], $_POST['dbTablePrefix']));
Module::dependencies(isset($_POST['dbHost'], $_POST['dbUser'], $_POST['dbPassword'], $_POST['dbName'], $_POST['dbTablePrefix']));
echo Config::create($_POST['dbHost'], $_POST['dbUser'], $_POST['dbPassword'], $_POST['dbName'], $_POST['dbTablePrefix']);
}
private function init() {
private static function initAction() {
$return = array(
'status' => LYCHEE_STATUS_NOCONFIG

@ -2,7 +2,7 @@
namespace Lychee\Modules;
final class Album extends Module {
final class Album {
private $albumIDs = null;
@ -79,7 +79,7 @@ final class Album extends Module {
public function get() {
# Check dependencies
self::dependencies(isset($this->albumIDs));
Validator::required(isset($this->albumIDs), __METHOD__);
# Call plugins
Plugins::get()->activate(__METHOD__, 0, func_get_args());
@ -163,10 +163,7 @@ final class Album extends Module {
}
public function getAll($public) {
# Check dependencies
self::dependencies(isset($public));
public function getAll($public = true) {
# Call plugins
Plugins::get()->activate(__METHOD__, 0, func_get_args());
@ -328,7 +325,7 @@ final class Album extends Module {
public function getArchive() {
# Check dependencies
self::dependencies(isset($this->albumIDs));
Validator::required(isset($this->albumIDs), __METHOD__);
# Call plugins
Plugins::get()->activate(__METHOD__, 0, func_get_args());
@ -468,7 +465,7 @@ final class Album extends Module {
public function setTitle($title = 'Untitled') {
# Check dependencies
self::dependencies(isset($this->albumIDs));
Validator::required(isset($this->albumIDs), __METHOD__);
# Call plugins
Plugins::get()->activate(__METHOD__, 0, func_get_args());
@ -491,7 +488,7 @@ final class Album extends Module {
public function setDescription($description = '') {
# Check dependencies
self::dependencies(isset($this->albumIDs));
Validator::required(isset($this->albumIDs), __METHOD__);
# Call plugins
Plugins::get()->activate(__METHOD__, 0, func_get_args());
@ -514,7 +511,7 @@ final class Album extends Module {
public function getPublic() {
# Check dependencies
self::dependencies(isset($this->albumIDs));
Validator::required(isset($this->albumIDs), __METHOD__);
# Call plugins
Plugins::get()->activate(__METHOD__, 0, func_get_args());
@ -537,7 +534,7 @@ final class Album extends Module {
public function getDownloadable() {
# Check dependencies
self::dependencies(isset($this->albumIDs));
Validator::required(isset($this->albumIDs), __METHOD__);
# Call plugins
Plugins::get()->activate(__METHOD__, 0, func_get_args());
@ -560,7 +557,7 @@ final class Album extends Module {
public function setPublic($public, $password, $visible, $downloadable) {
# Check dependencies
self::dependencies(isset($this->albumIDs));
Validator::required(isset($this->albumIDs), __METHOD__);
# Call plugins
Plugins::get()->activate(__METHOD__, 0, func_get_args());
@ -601,7 +598,7 @@ final class Album extends Module {
private function setPassword($password) {
# Check dependencies
self::dependencies(isset($this->albumIDs));
Validator::required(isset($this->albumIDs), __METHOD__);
# Call plugins
Plugins::get()->activate(__METHOD__, 0, func_get_args());
@ -640,7 +637,7 @@ final class Album extends Module {
public function checkPassword($password) {
# Check dependencies
self::dependencies(isset($this->albumIDs));
Validator::required(isset($this->albumIDs), __METHOD__);
# Call plugins
Plugins::get()->activate(__METHOD__, 0, func_get_args());
@ -662,7 +659,7 @@ final class Album extends Module {
public function merge() {
# Check dependencies
self::dependencies(isset($this->albumIDs));
Validator::required(isset($this->albumIDs), __METHOD__);
# Call plugins
Plugins::get()->activate(__METHOD__, 0, func_get_args());
@ -703,7 +700,7 @@ final class Album extends Module {
public function delete() {
# Check dependencies
self::dependencies(isset($this->albumIDs));
Validator::required(isset($this->albumIDs), __METHOD__);
# Call plugins
Plugins::get()->activate(__METHOD__, 0, func_get_args());

@ -2,7 +2,7 @@
namespace Lychee\Modules;
final class Config extends Module {
final class Config {
public static function create($host, $user, $password, $name = 'lychee', $prefix = '') {

@ -4,7 +4,7 @@ namespace Lychee\Modules;
use Mysqli;
final class Database extends Module {
final class Database {
private $connection = null;
private static $instance = null;
@ -39,7 +39,7 @@ final class Database extends Module {
private function __construct($host, $user, $password, $name = 'lychee', $dbTablePrefix) {
# Check dependencies
Module::dependencies(isset($host, $user, $password, $name));
Validator::required(isset($host, $user, $password, $name), __METHOD__);
# Define the table prefix
defineTablePrefix($dbTablePrefix);
@ -79,6 +79,9 @@ final class Database extends Module {
private static function setCharset($connection) {
# Check dependencies
Validator::required(isset($connection), __METHOD__);
# Avoid sql injection on older MySQL versions by using GBK
if ($connection->server_version<50500) @$connection->set_charset('GBK');
else @$connection->set_charset('utf8');
@ -93,7 +96,7 @@ final class Database extends Module {
public static function createDatabase($connection, $name = 'lychee') {
# Check dependencies
Module::dependencies(isset($connection, $name));
Validator::required(isset($connection), __METHOD__);
# Check if database exists
if ($connection->select_db($name)) return true;
@ -110,7 +113,7 @@ final class Database extends Module {
private static function createTables($connection) {
# Check dependencies
Module::dependencies(isset($connection));
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));
@ -229,7 +232,7 @@ final class Database extends Module {
private static function update($connection, $dbName) {
# Check dependencies
Module::dependencies(isset($connection));
Validator::required(isset($connection, $dbName), __METHOD__);
# Get current version
$query = self::prepare($connection, "SELECT * FROM ? WHERE `key` = 'version'", array(LYCHEE_TABLE_SETTINGS));
@ -253,6 +256,9 @@ final class Database extends Module {
public static function setVersion($connection, $version) {
# Check dependencies
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) {
@ -262,10 +268,10 @@ final class Database extends Module {
}
public static function prepare($connection, $query, $data) {
public static function prepare($connection, $query, array $data) {
# Check dependencies
Module::dependencies(isset($connection, $query, $data));
Validator::required(isset($connection, $query), __METHOD__);
# Count the number of placeholders and compare it with the number of arguments
# If it doesn't match, calculate the difference and skip this number of placeholders before starting the replacement

@ -2,13 +2,10 @@
namespace Lychee\Modules;
final class Import extends Module {
final class Import {
private function photo($path, $albumID = 0, $description = '', $tags = '') {
# Check dependencies
self::dependencies(isset($path));
# No need to validate photo type and extension in this function.
# $photo->add will take care of it.
@ -31,9 +28,6 @@ final class Import extends Module {
public function url($urls, $albumID = 0) {
# Check dependencies
self::dependencies(isset($urls));
# Call plugins
Plugins::get()->activate(__METHOD__, 0, func_get_args());

@ -2,7 +2,7 @@
namespace Lychee\Modules;
final class Log extends Module {
final class Log {
public static function notice($function, $line, $text = '') {
@ -25,7 +25,7 @@ final class Log extends Module {
private static function text($type, $function, $line, $text = '') {
# Check dependencies
Module::dependencies(isset($type, $function, $line, $text));
Validator::required(isset($type, $function, $line, $text), __METHOD__);
# Get time
$sysstamp = time();

@ -1,15 +0,0 @@
<?php
namespace Lychee\Modules;
abstract class Module {
final public static function dependencies($available = false) {
if ($available===false) exit('Error: Can not execute function. Missing parameters or variables.');
}
}
?>

@ -2,7 +2,7 @@
namespace Lychee\Modules;
final class Photo extends Module {
final class Photo {
private $photoIDs = null;
@ -627,7 +627,7 @@ final class Photo extends Module {
# (array) $photo
# Check dependencies
self::dependencies(isset($this->photoIDs));
Validator::required(isset($this->photoIDs), __METHOD__);
# Call plugins
Plugins::get()->activate(__METHOD__, 0, func_get_args());
@ -790,7 +790,7 @@ final class Photo extends Module {
# (boolean) false = Failure
# Check dependencies
self::dependencies(isset($this->photoIDs));
Validator::required(isset($this->photoIDs), __METHOD__);
# Call plugins
Plugins::get()->activate(__METHOD__, 0, func_get_args());
@ -856,7 +856,7 @@ final class Photo extends Module {
# (boolean) false = Failure
# Check dependencies
self::dependencies(isset($this->photoIDs));
Validator::required(isset($this->photoIDs), __METHOD__);
# Call plugins
Plugins::get()->activate(__METHOD__, 0, func_get_args());
@ -886,7 +886,7 @@ final class Photo extends Module {
# (boolean) false = Failure
# Check dependencies
self::dependencies(isset($this->photoIDs));
Validator::required(isset($this->photoIDs), __METHOD__);
# Call plugins
Plugins::get()->activate(__METHOD__, 0, func_get_args());
@ -914,7 +914,7 @@ final class Photo extends Module {
# (boolean) false = Failure
# Check dependencies
self::dependencies(isset($this->photoIDs));
Validator::required(isset($this->photoIDs), __METHOD__);
# Call plugins
Plugins::get()->activate(__METHOD__, 0, func_get_args());
@ -959,7 +959,7 @@ final class Photo extends Module {
# (int) 2 = Photo public or album public and password correct
# Check dependencies
self::dependencies(isset($this->photoIDs));
Validator::required(isset($this->photoIDs), __METHOD__);
# Call plugins
Plugins::get()->activate(__METHOD__, 0, func_get_args());
@ -1006,7 +1006,7 @@ final class Photo extends Module {
# (boolean) false = Failure
# Check dependencies
self::dependencies(isset($this->photoIDs));
Validator::required(isset($this->photoIDs), __METHOD__);
# Call plugins
Plugins::get()->activate(__METHOD__, 0, func_get_args());
@ -1042,7 +1042,7 @@ final class Photo extends Module {
# (boolean) false = Failure
# Check dependencies
self::dependencies(isset($this->photoIDs));
Validator::required(isset($this->photoIDs), __METHOD__);
# Call plugins
Plugins::get()->activate(__METHOD__, 0, func_get_args());
@ -1072,7 +1072,7 @@ final class Photo extends Module {
# (boolean) false = Failure
# Check dependencies
self::dependencies(isset($this->photoIDs));
Validator::required(isset($this->photoIDs), __METHOD__);
# Call plugins
Plugins::get()->activate(__METHOD__, 0, func_get_args());
@ -1104,7 +1104,7 @@ final class Photo extends Module {
# (boolean) false = Failure
# Check dependencies
self::dependencies(isset($this->photoIDs));
Validator::required(isset($this->photoIDs), __METHOD__);
# Call plugins
Plugins::get()->activate(__METHOD__, 0, func_get_args());
@ -1147,7 +1147,7 @@ final class Photo extends Module {
# (boolean) false = Failure
# Check dependencies
self::dependencies(isset($this->photoIDs));
Validator::required(isset($this->photoIDs), __METHOD__);
# Call plugins
Plugins::get()->activate(__METHOD__, 0, func_get_args());

@ -2,7 +2,7 @@
namespace Lychee\Modules;
final class Session extends Module {
final class Session {
public function init($public = true) {

@ -2,7 +2,7 @@
namespace Lychee\Modules;
final class Settings extends Module {
final class Settings {
private static $cache = null;
@ -52,9 +52,6 @@ final class Settings extends Module {
public static function setLogin($oldPassword = '', $username, $password) {
# Check dependencies
self::dependencies(isset($oldPassword, $username, $password));
if ($oldPassword===self::get()['password']||self::get()['password']===crypt($oldPassword, self::get()['password'])) {
# Save username
@ -74,7 +71,7 @@ final class Settings extends Module {
private static function setUsername($username) {
# Check dependencies
self::dependencies(isset($username));
Validator::required(isset($username), __METHOD__);
# Hash username
$username = getHashedString($username);
@ -93,7 +90,7 @@ final class Settings extends Module {
private static function setPassword($password) {
# Check dependencies
self::dependencies(isset($password));
Validator::required(isset($password), __METHOD__);
# Hash password
$password = getHashedString($password);
@ -110,9 +107,6 @@ final class Settings extends Module {
public static function setDropboxKey($dropboxKey) {
# Check dependencies
self::dependencies(isset($dropboxKey));
if (strlen($dropboxKey)<1||strlen($dropboxKey)>50) {
Log::notice(__METHOD__, __LINE__, 'Dropbox key is either too short or too long');
return false;
@ -128,9 +122,6 @@ final class Settings extends Module {
public static function setSortingPhotos($type, $order) {
# Check dependencies
self::dependencies(isset($type, $order));
$sorting = 'ORDER BY ';
# Set row
@ -189,9 +180,6 @@ final class Settings extends Module {
public static function setSortingAlbums($type, $order) {
# Check dependencies
self::dependencies(isset($type, $order));
$sorting = 'ORDER BY ';
# Set row

@ -0,0 +1,55 @@
<?php
namespace Lychee\Modules;
final class Validator {
public static function required($available = false, $function) {
if ($available===false) exit("Error: Missing parameters. Can not execute function $function.");
return true;
}
public static function isNull() {
$args = func_get_args();
for ($i = 0; $i < count($args); $i++) {
if (is_null($args[$i])===true) return true;
}
return false;
}
public static function isAlbumIDs($albumIDs) {
return (preg_match('/^[0-9\,]{1,}$/', $albumIDs)===1 ? true : false);
}
public static function isAlbumID($albumID) {
return (preg_match('/^[0-9sfr]{1,}$/', $albumID)===1 ? true : false);
}
public static function isPhotoIDs($photoIDs) {
return (preg_match('/^[0-9\,]{1,}$/', $photoIDs)===1 ? true : false);
}
public static function isPhotoID($photoID) {
return (preg_match('/^[0-9]{14}$/', $photoID)===1 ? true : false);
}
}
?>

@ -10,6 +10,7 @@ namespace Lychee;
use Lychee\Modules\Config;
use Lychee\Modules\Settings;
use Lychee\Modules\Validator;
use Lychee\Access\Installation;
use Lychee\Access\Admin;
@ -38,10 +39,10 @@ if (!empty($fn)) {
date_default_timezone_set('UTC');
# Validate parameters
if (isset($_POST['albumIDs'])&&preg_match('/^[0-9\,]{1,}$/', $_POST['albumIDs'])!==1) exit('Error: Wrong parameter type for albumIDs!');
if (isset($_POST['photoIDs'])&&preg_match('/^[0-9\,]{1,}$/', $_POST['photoIDs'])!==1) exit('Error: Wrong parameter type for photoIDs!');
if (isset($_POST['albumID'])&&preg_match('/^[0-9sfr]{1,}$/', $_POST['albumID'])!==1) exit('Error: Wrong parameter type for albumID!');
if (isset($_POST['photoID'])&&preg_match('/^[0-9]{14}$/', $_POST['photoID'])!==1) exit('Error: Wrong parameter type for photoID!');
if (isset($_POST['albumIDs'])&&Validator::isAlbumIDs($_POST['albumIDs'])===false) exit('Error: Wrong parameter type for albumIDs!');
if (isset($_POST['photoIDs'])&&Validator::isPhotoIDs($_POST['photoIDs'])===false) exit('Error: Wrong parameter type for photoIDs!');
if (isset($_POST['albumID'])&&Validator::isAlbumID($_POST['albumID'])==false) exit('Error: Wrong parameter type for albumID!');
if (isset($_POST['photoID'])&&Validator::isPhotoID($_POST['photoID'])==false) exit('Error: Wrong parameter type for photoID!');
# Check if a configuration exists
if (Config::exists()===false) {
@ -51,9 +52,7 @@ if (!empty($fn)) {
# Limited access to configure Lychee. Only available when the config.php file is missing.
###
$installation = new Installation();
$installation->check($fn);
Installation::init($fn);
exit();
}
@ -67,20 +66,20 @@ if (!empty($fn)) {
# Full access to Lychee. Only with correct password/session.
###
$admin = new Admin();
$admin->check($fn);
Admin::init($fn);
exit();
}
} else {
###
# Guest Access
# Access to view all public folders and photos in Lychee.
###
###
# Guest Access
# Access to view all public folders and photos in Lychee.
###
Guest::init($fn);
exit();
$guest = new Guest();
$guest->check($fn);
}
} else {

Loading…
Cancel
Save