From ccee9854c29f9fedfeb5647d058e76154f9a8295 Mon Sep 17 00:00:00 2001 From: Bharat Mediratta Date: Wed, 3 Dec 2008 23:31:10 +0000 Subject: Rename file::unlink() to dir::unlink(). This creates an API that is clearer about its actions, otherwise we may accidentally blow away an entire hierarchy when we think we're deleting a single file (there's a reason why rm won't let you delete dirs that aren't empty!) Name it "dir" instead of "directory" because apparently "directory" is already reserved. Move the delete call out of Items_Controller and into the model. The model is responsible for keeping state integrity, not the controller. --- core/controllers/items.php | 1 - core/helpers/MY_file.php | 42 ----------------------------------------- core/helpers/dir.php | 40 +++++++++++++++++++++++++++++++++++++++ core/models/item.php | 9 +++++++++ core/tests/Dir_Helper_Test.php | 32 +++++++++++++++++++++++++++++++ core/tests/File_Helper_Test.php | 40 --------------------------------------- 6 files changed, 81 insertions(+), 83 deletions(-) delete mode 100644 core/helpers/MY_file.php create mode 100644 core/helpers/dir.php create mode 100644 core/tests/Dir_Helper_Test.php delete mode 100644 core/tests/File_Helper_Test.php (limited to 'core') diff --git a/core/controllers/items.php b/core/controllers/items.php index 6ba7db65..f10a30c3 100644 --- a/core/controllers/items.php +++ b/core/controllers/items.php @@ -102,7 +102,6 @@ class Items_Controller extends REST_Controller { module::event("{$item->type}_before_delete", $item); $item->delete(); - file::unlink($item->file_path()); } url::redirect("{$parent->type}s/{$parent->id}"); diff --git a/core/helpers/MY_file.php b/core/helpers/MY_file.php deleted file mode 100644 index c460a81a..00000000 --- a/core/helpers/MY_file.php +++ /dev/null @@ -1,42 +0,0 @@ -isDot()) { - unset($resource); - continue; - } else if ($resource->isFile()) { - self::unlink($resource->getPathName()); - } else if ($resource->isDir()) { - self::unlink($resource->getRealPath()); - } - unset($resource); - } - return @rmdir($path); - } - return false; - } - - -} diff --git a/core/helpers/dir.php b/core/helpers/dir.php new file mode 100644 index 00000000..02599467 --- /dev/null +++ b/core/helpers/dir.php @@ -0,0 +1,40 @@ +isDot()) { + unset($resource); + continue; + } else if ($resource->isFile()) { + unlink($resource->getPathName()); + } else if ($resource->isDir()) { + directory::unlink($resource->getRealPath()); + } + unset($resource); + } + return @rmdir($path); + } + return false; + } + + +} diff --git a/core/models/item.php b/core/models/item.php index 9d23170f..211459b9 100644 --- a/core/models/item.php +++ b/core/models/item.php @@ -39,6 +39,15 @@ class Item_Model extends ORM_MPTT { return $this->type == 'photo'; } + public function delete() { + parent::delete(); + if ($this->is_album()) { + directory::unlink($this->file_path()); + } else { + unlink($this->file_path()); + } + } + /** * album: /var/albums/album1/album2 * photo: /var/albums/album1/album2/photo.jpg diff --git a/core/tests/Dir_Helper_Test.php b/core/tests/Dir_Helper_Test.php new file mode 100644 index 00000000..69d891db --- /dev/null +++ b/core/tests/Dir_Helper_Test.php @@ -0,0 +1,32 @@ +assert_boolean(!file_exists($filename), "File not deleted"); + $this->assert_boolean(!file_exists($dirname), "Directory not deleted"); + } +} diff --git a/core/tests/File_Helper_Test.php b/core/tests/File_Helper_Test.php deleted file mode 100644 index dd71aabb..00000000 --- a/core/tests/File_Helper_Test.php +++ /dev/null @@ -1,40 +0,0 @@ -assert_boolean(!file_exists($filename), "File not deleted"); - } - - public function remove_album_test() { - $dirname = (VARPATH . "albums/testdir"); - mkdir($dirname, 0777, true); - - $filename = tempnam($dirname, "file"); - touch($filename); - - file::unlink($dirname); - $this->assert_boolean(!file_exists($filename), "File not deleted"); - $this->assert_boolean(!file_exists($dirname), "Directory not deleted"); - } -} -- cgit v1.2.3