Admin.php 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318
  1. <?php
  2. namespace Lychee\Access;
  3. use Lychee\Modules\Album;
  4. use Lychee\Modules\Import;
  5. use Lychee\Modules\Module;
  6. use Lychee\Modules\Photo;
  7. use Lychee\Modules\Session;
  8. use Lychee\Modules\Settings;
  9. final class Admin implements Access {
  10. public function check($fn) {
  11. switch ($fn) {
  12. # Album functions
  13. case 'Album::getAll': $this->getAlbums(); break;
  14. case 'Album::get': $this->getAlbum(); break;
  15. case 'Album::add': $this->addAlbum(); break;
  16. case 'Album::setTitle': $this->setAlbumTitle(); break;
  17. case 'Album::setDescription': $this->setAlbumDescription(); break;
  18. case 'Album::setPublic': $this->setAlbumPublic(); break;
  19. case 'Album::delete': $this->deleteAlbum(); break;
  20. case 'Album::merge': $this->mergeAlbums(); break;
  21. # Photo functions
  22. case 'Photo::get': $this->getPhoto(); break;
  23. case 'Photo::setTitle': $this->setPhotoTitle(); break;
  24. case 'Photo::setDescription': $this->setPhotoDescription(); break;
  25. case 'Photo::setStar': $this->setPhotoStar(); break;
  26. case 'Photo::setPublic': $this->setPhotoPublic(); break;
  27. case 'Photo::setAlbum': $this->setPhotoAlbum(); break;
  28. case 'Photo::setTags': $this->setPhotoTags(); break;
  29. case 'Photo::duplicate': $this->duplicatePhoto(); break;
  30. case 'Photo::delete': $this->deletePhoto(); break;
  31. # Add functions
  32. case 'Photo::add': $this->upload(); break;
  33. case 'Import::url': $this->importUrl(); break;
  34. case 'Import::server': $this->importServer(); break;
  35. # Search functions
  36. case 'search': $this->search(); break;
  37. # Session functions
  38. case 'Session::init': $this->init(); break;
  39. case 'Session::login': $this->login(); break;
  40. case 'Session::logout': $this->logout(); break;
  41. # Settings functions
  42. case 'Settings::setLogin': $this->setLogin(); break;
  43. case 'Settings::setSorting': $this->setSorting(); break;
  44. case 'Settings::setDropboxKey': $this->setDropboxKey(); break;
  45. # $_GET functions
  46. case 'Album::getArchive': $this->getAlbumArchive(); break;
  47. case 'Photo::getArchive': $this->getPhotoArchive(); break;
  48. # Error
  49. default: exit('Error: Function not found! Please check the spelling of the called function.');
  50. return false; break;
  51. }
  52. return true;
  53. }
  54. # Album functions
  55. private function getAlbums() {
  56. $album = new Album(null);
  57. echo json_encode($album->getAll(false));
  58. }
  59. private function getAlbum() {
  60. Module::dependencies(isset($_POST['albumID']));
  61. $album = new Album($_POST['albumID']);
  62. echo json_encode($album->get());
  63. }
  64. private function addAlbum() {
  65. Module::dependencies(isset($_POST['title']));
  66. $album = new Album(null);
  67. echo $album->add($_POST['title']);
  68. }
  69. private function setAlbumTitle() {
  70. Module::dependencies(isset($_POST['albumIDs'], $_POST['title']));
  71. $album = new Album($_POST['albumIDs']);
  72. echo $album->setTitle($_POST['title']);
  73. }
  74. private function setAlbumDescription() {
  75. Module::dependencies(isset($_POST['albumID'], $_POST['description']));
  76. $album = new Album($_POST['albumID']);
  77. echo $album->setDescription($_POST['description']);
  78. }
  79. private function setAlbumPublic() {
  80. Module::dependencies(isset($_POST['albumID'], $_POST['password'], $_POST['visible'], $_POST['downloadable']));
  81. $album = new Album($_POST['albumID']);
  82. echo $album->setPublic($_POST['public'], $_POST['password'], $_POST['visible'], $_POST['downloadable']);
  83. }
  84. private function deleteAlbum() {
  85. Module::dependencies(isset($_POST['albumIDs']));
  86. $album = new Album($_POST['albumIDs']);
  87. echo $album->delete();
  88. }
  89. private function mergeAlbums() {
  90. Module::dependencies(isset($_POST['albumIDs']));
  91. $album = new Album($_POST['albumIDs']);
  92. echo $album->merge();
  93. }
  94. # Photo functions
  95. private function getPhoto() {
  96. Module::dependencies(isset($_POST['photoID'], $_POST['albumID']));
  97. $photo = new Photo($_POST['photoID']);
  98. echo json_encode($photo->get($_POST['albumID']));
  99. }
  100. private function setPhotoTitle() {
  101. Module::dependencies(isset($_POST['photoIDs'], $_POST['title']));
  102. $photo = new Photo($_POST['photoIDs']);
  103. echo $photo->setTitle($_POST['title']);
  104. }
  105. private function setPhotoDescription() {
  106. Module::dependencies(isset($_POST['photoID'], $_POST['description']));
  107. $photo = new Photo($_POST['photoID']);
  108. echo $photo->setDescription($_POST['description']);
  109. }
  110. private function setPhotoStar() {
  111. Module::dependencies(isset($_POST['photoIDs']));
  112. $photo = new Photo($_POST['photoIDs']);
  113. echo $photo->setStar();
  114. }
  115. private function setPhotoPublic() {
  116. Module::dependencies(isset($_POST['photoID']));
  117. $photo = new Photo($_POST['photoID']);
  118. echo $photo->setPublic();
  119. }
  120. private function setPhotoAlbum() {
  121. Module::dependencies(isset($_POST['photoIDs'], $_POST['albumID']));
  122. $photo = new Photo($_POST['photoIDs']);
  123. echo $photo->setAlbum($_POST['albumID']);
  124. }
  125. private function setPhotoTags() {
  126. Module::dependencies(isset($_POST['photoIDs'], $_POST['tags']));
  127. $photo = new Photo($_POST['photoIDs']);
  128. echo $photo->setTags($_POST['tags']);
  129. }
  130. private function duplicatePhoto() {
  131. Module::dependencies(isset($_POST['photoIDs']));
  132. $photo = new Photo($_POST['photoIDs']);
  133. echo $photo->duplicate();
  134. }
  135. private function deletePhoto() {
  136. Module::dependencies(isset($_POST['photoIDs']));
  137. $photo = new Photo($_POST['photoIDs']);
  138. echo $photo->delete();
  139. }
  140. # Add functions
  141. private function upload() {
  142. Module::dependencies(isset($_FILES, $_POST['albumID'], $_POST['tags']));
  143. $photo = new Photo(null);
  144. echo $photo->add($_FILES, $_POST['albumID'], '', $_POST['tags']);
  145. }
  146. private function importUrl() {
  147. Module::dependencies(isset($_POST['url'], $_POST['albumID']));
  148. $import = new Import();
  149. echo $import->url($_POST['url'], $_POST['albumID']);
  150. }
  151. private function importServer() {
  152. Module::dependencies(isset($_POST['albumID'], $_POST['path']));
  153. $import = new Import();
  154. echo $import->server($_POST['path'], $_POST['albumID']);
  155. }
  156. # Search function
  157. private function search() {
  158. Module::dependencies(isset($_POST['term']));
  159. echo json_encode(search($_POST['term']));
  160. }
  161. # Session functions
  162. private function init() {
  163. global $dbName;
  164. $session = new Session();
  165. echo json_encode($session->init(false));
  166. }
  167. private function login() {
  168. Module::dependencies(isset($_POST['user'], $_POST['password']));
  169. $session = new Session();
  170. echo $session->login($_POST['user'], $_POST['password']);
  171. }
  172. private function logout() {
  173. $session = new Session();
  174. echo $session->logout();
  175. }
  176. # Settings functions
  177. private function setLogin() {
  178. Module::dependencies(isset($_POST['username'], $_POST['password']));
  179. if (!isset($_POST['oldPassword'])) $_POST['oldPassword'] = '';
  180. echo Settings::setLogin($_POST['oldPassword'], $_POST['username'], $_POST['password']);
  181. }
  182. private function setSorting() {
  183. Module::dependencies(isset($_POST['typeAlbums'], $_POST['orderAlbums'], $_POST['typePhotos'], $_POST['orderPhotos']));
  184. $sA = Settings::setSortingAlbums($_POST['typeAlbums'], $_POST['orderAlbums']);
  185. $sP = Settings::setSortingPhotos($_POST['typePhotos'], $_POST['orderPhotos']);
  186. if ($sA===true&&$sP===true) echo true;
  187. else echo false;
  188. }
  189. private function setDropboxKey() {
  190. Module::dependencies(isset($_POST['key']));
  191. echo Settings::setDropboxKey($_POST['key']);
  192. }
  193. # Get functions
  194. private function getAlbumArchive() {
  195. Module::dependencies(isset($_GET['albumID']));
  196. $album = new Album($_GET['albumID']);
  197. $album->getArchive();
  198. }
  199. private function getPhotoArchive() {
  200. Module::dependencies(isset($_GET['photoID']));
  201. $photo = new Photo($_GET['photoID']);
  202. $photo->getArchive();
  203. }
  204. }