summaryrefslogtreecommitdiff
path: root/core
diff options
context:
space:
mode:
authorBharat Mediratta <bharat@menalto.com>2008-11-05 07:13:46 +0000
committerBharat Mediratta <bharat@menalto.com>2008-11-05 07:13:46 +0000
commit581e931c439a726fbd6a0b0068debd2cd76e349d (patch)
tree904e121e5ebe6c4b53587bdc91723747fe6e3561 /core
parent00513a71d2091eba3110164e506c2231972a1584 (diff)
Change the default theme to actually render what's in the Gallery.
Currently only the album view works, albums have no thumbnails, and there's only 1 image in use. Improved Item_Model to have the following API methods file_path() -- returns the path to the source image or album dir thumbnail_path(), thumbnail_url() -- returns path/url to the thumbnail resize_path(), resize_url() -- returns path/url to the resize All tests updated.
Diffstat (limited to 'core')
-rw-r--r--core/helpers/album.php7
-rw-r--r--core/helpers/core_installer.php4
-rw-r--r--core/helpers/photo.php2
-rw-r--r--core/models/item.php67
-rw-r--r--core/tests/Album_Test.php22
-rw-r--r--core/tests/Core_Installer_Test.php7
-rw-r--r--core/tests/Photo_Test.php20
7 files changed, 100 insertions, 29 deletions
diff --git a/core/helpers/album.php b/core/helpers/album.php
index 415e654c..021c09f3 100644
--- a/core/helpers/album.php
+++ b/core/helpers/album.php
@@ -47,8 +47,11 @@ class Album_Core {
}
$album = $album->add_to_parent($parent_id);
- mkdir($album->path());
- mkdir($album->thumbnail_path());
+ mkdir($album->file_path());
+ $thumbnail_dir = dirname($album->thumbnail_path());
+ if (!file_exists($thumbnail_dir)) {
+ mkdir($thumbnail_dir);
+ }
return $album;
}
}
diff --git a/core/helpers/core_installer.php b/core/helpers/core_installer.php
index 8511b840..7d83236a 100644
--- a/core/helpers/core_installer.php
+++ b/core/helpers/core_installer.php
@@ -54,7 +54,7 @@ class core_installer {
KEY `type` (`type`))
ENGINE=InnoDB DEFAULT CHARSET=utf8;");
- foreach (array("albums", "thumbnails") as $dir) {
+ foreach (array("albums", "resizes") as $dir) {
@mkdir(VARPATH . $dir);
}
@@ -80,6 +80,6 @@ class core_installer {
$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");
+ system("/bin/rm -rf " . VARPATH . "resizes");
}
}
diff --git a/core/helpers/photo.php b/core/helpers/photo.php
index e796ef03..dfa67e2b 100644
--- a/core/helpers/photo.php
+++ b/core/helpers/photo.php
@@ -54,7 +54,7 @@ class Photo_Core {
$photo->add_to_parent($parent_id);
- copy($filename, $photo->path());
+ copy($filename, $photo->file_path());
/** @todo: parameterize these values */
$image = Image::factory($filename);
diff --git a/core/models/item.php b/core/models/item.php
index 3d5f08a2..265a9219 100644
--- a/core/models/item.php
+++ b/core/models/item.php
@@ -28,8 +28,8 @@ class Item_Model extends ORM_MPTT {
return $this->type == 'photo';
}
- private function _get_path() {
- $paths = array();
+ private function _relative_path($prefix, $tag, $suffix) {
+ $paths = array($prefix);
foreach ($this->parents() as $parent) {
if ($parent->id > 1) {
$paths[] = $parent->name;
@@ -39,28 +39,75 @@ class Item_Model extends ORM_MPTT {
if (!$this->saved) {
$path .= $this->name;
}
+
+ if ($tag) {
+ $pi = pathinfo($path);
+ $path = "{$pi['dirname']}/{$pi['filename']}{$tag}.{$pi['extension']}";
+ }
+
+ if ($suffix) {
+ $path .= $suffix;
+ }
return $path;
}
- public function path() {
- return VARPATH . "albums/{$this->_get_path()}";
+ /**
+ * album: /var/albums/album1/album2
+ * photo: /var/albums/album1/album2/photo.jpg
+ */
+ public function file_path() {
+ if ($this->is_album()) {
+ return $this->_relative_path(VARPATH . "albums", "", "");
+ } else {
+ return $this->_relative_path(VARPATH . "albums", "", "");
+ }
}
+ /**
+ * album: /var/resizes/album1/.thumb.jpg
+ * photo: /var/albums/album1/photo.thumb.jpg
+ */
public function thumbnail_path() {
if ($this->is_album()) {
- return VARPATH . "thumbnails/{$this->_get_path()}";
+ return $this->_relative_path(VARPATH . "resizes", "", "/.thumb.jpg");
} else {
- $pi = pathinfo(VARPATH . "thumbnails/{$this->_get_path()}");
- return "{$pi['dirname']}/{$pi['filename']}_thumb.{$pi['extension']}";
+ return $this->_relative_path(VARPATH . "resizes", ".thumb", "");
}
}
+ /**
+ * album: http://example.com/gallery3/var/resizes/album1/.thumb.jpg
+ * photo: http://example.com/gallery3/var/albums/album1/photo.thumb.jpg
+ */
+ public function thumbnail_url() {
+ if ($this->is_album()) {
+ return $this->_relative_path(url::base() . "var/resizes", "", "/.thumb.jpg");
+ } else {
+ return $this->_relative_path(url::base() . "var/resizes", ".thumb", "");
+ }
+ }
+
+ /**
+ * album: /var/resizes/album1/.resize.jpg
+ * photo: /var/albums/album1/photo.resize.jpg
+ */
public function resize_path() {
if ($this->is_album()) {
- return VARPATH . "thumbnails/{$this->_get_path()}";
+ return $this->_relative_path(VARPATH . "resizes", "", "/.resize.jpg");
+ } else {
+ return $this->_relative_path(VARPATH . "resizes", ".resize", "");
+ }
+ }
+
+ /**
+ * album: http://example.com/gallery3/var/resizes/album1/.resize.jpg
+ * photo: http://example.com/gallery3/var/albums/album1/photo.resize.jpg
+ */
+ public function resize_url() {
+ if ($this->is_album()) {
+ return $this->_relative_path(url::base() . "var/resizes", "", "/.resize.jpg");
} else {
- $pi = pathinfo(VARPATH . "thumbnails/{$this->_get_path()}");
- return "{$pi['dirname']}/{$pi['filename']}_resize.{$pi['extension']}";
+ return $this->_relative_path(url::base() . "var/resizes", ".resize", "");
}
}
}
diff --git a/core/tests/Album_Test.php b/core/tests/Album_Test.php
index 5a41a08a..a2ab1c48 100644
--- a/core/tests/Album_Test.php
+++ b/core/tests/Album_Test.php
@@ -22,12 +22,12 @@ class Album_Test extends Unit_Test_Case {
$rand = rand();
$album = album::create(1, $rand, $rand, $rand);
- $this->assert_equal(VARPATH . "albums/$rand", $album->path());
- $this->assert_equal(VARPATH . "thumbnails/$rand", $album->thumbnail_path());
- $this->assert_equal(VARPATH . "thumbnails/$rand", $album->resize_path());
+ $this->assert_equal(VARPATH . "albums/$rand", $album->file_path());
+ $this->assert_equal(VARPATH . "resizes/$rand/.thumb.jpg", $album->thumbnail_path());
+ $this->assert_true(is_dir(VARPATH . "resizes/$rand"), "missing thumbnail dir");
- $this->assert_true(is_dir($album->path()), "missing path: {$album->path()}");
- $this->assert_true(is_dir($album->resize_path()), "missing path: {$album->resize_path()}");
+ // It's unclear that a resize makes sense for an album. But we have one.
+ $this->assert_equal(VARPATH . "resizes/$rand/.resize.jpg", $album->resize_path());
$this->assert_equal(1, $album->parent_id); // MPTT tests will cover other hierarchy checks
$this->assert_equal($rand, $album->name);
@@ -41,4 +41,16 @@ class Album_Test extends Unit_Test_Case {
$album2 = album::create(1, $rand, $rand, $rand);
$this->assert_true($album1->name != $album2->name);
}
+
+ public function thumbnail_url_test() {
+ $rand = rand();
+ $album = album::create(1, $rand, $rand, $rand);
+ $this->assert_equal("http://./var/resizes/$rand/.thumb.jpg", $album->thumbnail_url());
+ }
+
+ public function resize_url_test() {
+ $rand = rand();
+ $album = album::create(1, $rand, $rand, $rand);
+ $this->assert_equal("http://./var/resizes/$rand/.resize.jpg", $album->resize_url());
+ }
}
diff --git a/core/tests/Core_Installer_Test.php b/core/tests/Core_Installer_Test.php
index 4903805b..1cfd09cb 100644
--- a/core/tests/Core_Installer_Test.php
+++ b/core/tests/Core_Installer_Test.php
@@ -23,12 +23,9 @@
* test controller before it starts.
*/
class Core_Installer_Test extends Unit_Test_Case {
- public function install_creates_albums_dir_test() {
+ public function install_creates_dirs_test() {
$this->assert_true(file_exists(VARPATH . "albums"));
- }
-
- public function install_creates_thumbnails_dir_test() {
- $this->assert_true(file_exists(VARPATH . "thumbnails"));
+ $this->assert_true(file_exists(VARPATH . "resizes"));
}
public function install_registers_core_module_test() {
diff --git a/core/tests/Photo_Test.php b/core/tests/Photo_Test.php
index 8b0a48cc..0980a187 100644
--- a/core/tests/Photo_Test.php
+++ b/core/tests/Photo_Test.php
@@ -22,11 +22,11 @@ class Photo_Test extends Unit_Test_Case {
$rand = rand();
$photo = photo::create(1, DOCROOT . "core/tests/test.jpg", "$rand.jpg", $rand, $rand);
- $this->assert_equal(VARPATH . "albums/$rand.jpg", $photo->path());
- $this->assert_equal(VARPATH . "thumbnails/{$rand}_thumb.jpg", $photo->thumbnail_path());
- $this->assert_equal(VARPATH . "thumbnails/{$rand}_resize.jpg", $photo->resize_path());
+ $this->assert_equal(VARPATH . "albums/$rand.jpg", $photo->file_path());
+ $this->assert_equal(VARPATH . "resizes/{$rand}.thumb.jpg", $photo->thumbnail_path());
+ $this->assert_equal(VARPATH . "resizes/{$rand}.resize.jpg", $photo->resize_path());
- $this->assert_true(is_file($photo->path()), "missing: {$photo->path()}");
+ $this->assert_true(is_file($photo->file_path()), "missing: {$photo->file_path()}");
$this->assert_true(is_file($photo->resize_path()), "missing: {$photo->resize_path()}");
$this->assert_true(is_file($photo->thumbnail_path()), "missing: {$photo->thumbnail_path()}");
@@ -54,4 +54,16 @@ class Photo_Test extends Unit_Test_Case {
// pass
}
}
+
+ public function thumbnail_url_test() {
+ $rand = rand();
+ $photo = photo::create(1, DOCROOT . "core/tests/test.jpg", "$rand.jpg", $rand, $rand);
+ $this->assert_equal("http://./var/resizes/{$rand}.thumb.jpg", $photo->thumbnail_url());
+ }
+
+ public function resize_url_test() {
+ $rand = rand();
+ $photo = photo::create(1, DOCROOT . "core/tests/test.jpg", "$rand.jpg", $rand, $rand);
+ $this->assert_equal("http://./var/resizes/{$rand}.resize.jpg", $photo->resize_url());
+ }
}