diff options
Diffstat (limited to 'core/helpers')
-rw-r--r-- | core/helpers/album.php | 54 | ||||
-rw-r--r-- | core/helpers/core_installer.php | 21 | ||||
-rw-r--r-- | core/helpers/photo.php | 65 |
3 files changed, 133 insertions, 7 deletions
diff --git a/core/helpers/album.php b/core/helpers/album.php new file mode 100644 index 00000000..415e654c --- /dev/null +++ b/core/helpers/album.php @@ -0,0 +1,54 @@ +<?php defined("SYSPATH") or die("No direct script access."); +/** + * Gallery - a web based photo album viewer and editor + * Copyright (C) 2000-2008 Bharat Mediratta + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/** + * This is the API for handling albums. + * + * Note: by design, this class does not do any permission checking. + */ +class Album_Core { + /** + * Create a new album. + * @param integer $parent_id id of parent album + * @param string $name the name of this new album (it will become the directory name on disk) + * @param integer $title the title of the new album + * @param string $description (optional) the longer description of this album + * @return Item_Model + */ + static function create($parent_id, $name, $title, $description=null) { + $album = ORM::factory("item"); + $album->type = "album"; + $album->title = $title; + $album->description = $description; + $album->name = $name; + + while (ORM::Factory("item") + ->where("parent_id", $parent_id) + ->where("name", $album->name) + ->find()->id) { + $album->name = "{$name}-" . rand(); + } + + $album = $album->add_to_parent($parent_id); + mkdir($album->path()); + mkdir($album->thumbnail_path()); + return $album; + } +} diff --git a/core/helpers/core_installer.php b/core/helpers/core_installer.php index 5720976b..d100e0d1 100644 --- a/core/helpers/core_installer.php +++ b/core/helpers/core_installer.php @@ -41,14 +41,14 @@ class core_installer { $db->query("CREATE TABLE `items` ( `id` int(9) NOT NULL auto_increment, - `type` char(32) default NULL, + `type` char(32) NOT NULL, `title` char(255) default NULL, `description` char(255) default NULL, - `path` char(255) default NULL, - `left` int(9) default NULL, - `right` int(9) default NULL, - `parent_id` int(9) default NULL, - `scope` int(9) default NULL, + `name` char(255) default NULL, + `left` int(9) NOT NULL, + `right` int(9) NOT NULL, + `parent_id` int(9) NOT NULL, + `level` int(9) NOT NULL, PRIMARY KEY (`id`), KEY `parent_id` (`parent_id`), KEY `type` (`type`)) @@ -64,9 +64,14 @@ class core_installer { $core->save(); $root = ORM::factory("item"); + $root->type = 'album'; $root->title = "Gallery"; $root->description = "Welcome to your Gallery3"; - $root->make_root(); + $root->left = 1; + $root->right = 2; + $root->parent_id = 0; + $root->level = 1; + $root->save(); } } @@ -74,5 +79,7 @@ class core_installer { $db = Database::instance(); $db->query("DROP TABLE IF EXISTS `items`;"); $db->query("DROP TABLE IF EXISTS `modules`;"); + system("/bin/rm -rf " . VARPATH . "albums"); + system("/bin/rm -rf " . VARPATH . "thumbnails"); } } diff --git a/core/helpers/photo.php b/core/helpers/photo.php new file mode 100644 index 00000000..e796ef03 --- /dev/null +++ b/core/helpers/photo.php @@ -0,0 +1,65 @@ +<?php defined("SYSPATH") or die("No direct script access."); +/** + * Gallery - a web based photo album viewer and editor + * Copyright (C) 2000-2008 Bharat Mediratta + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/** + * This is the API for handling photos. + * + * Note: by design, this class does not do any permission checking. + */ +class Photo_Core { + /** + * Create a new photo. + * @param integer $parent_id id of parent album + * @param string $filename path to the photo file on disk + * @param string $name the filename to use for this photo in the album + * @param integer $title the title of the new photo + * @param string $description (optional) the longer description of this photo + * @return Item_Model + */ + static function create($parent_id, $filename, $name, $title, $description=null) { + $photo = ORM::factory("item"); + $photo->type = "photo"; + $photo->title = $title; + $photo->description = $description; + $photo->name = $name; + + $pi = pathinfo(basename($filename)); + if (empty($pi["extension"])) { + throw new Exception("@todo UNKNOWN_FILE_TYPE"); + } + + while (ORM::Factory("item") + ->where("parent_id", $parent_id) + ->where("name", $photo->name) + ->find()->id) { + $photo->name = rand() . "." . $pi["extension"]; + } + + $photo->add_to_parent($parent_id); + + copy($filename, $photo->path()); + + /** @todo: parameterize these values */ + $image = Image::factory($filename); + $image->resize(200, 140, Image::WIDTH)->save($photo->thumbnail_path()); + $image->resize(800, 600, Image::WIDTH)->save($photo->resize_path()); + return $photo; + } +} |