summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
authorBharat Mediratta <bharat@menalto.com>2009-05-29 22:28:48 -0700
committerBharat Mediratta <bharat@menalto.com>2009-05-29 22:28:48 -0700
commitf660eb55aa9535c10f91ad2812fa073589fcae2b (patch)
tree11d8727061378408bbc16ede888a058ba20542fb /modules
parent0097803efc1c71711bf9ccf5015fe43e75f8f28d (diff)
parentce285b8feba2f9c495fb153517c2a582421f50e0 (diff)
Merge branch 'master' of git://github.com/gallery/gallery3
Diffstat (limited to 'modules')
-rw-r--r--modules/gallery/controllers/file_proxy.php69
-rw-r--r--modules/gallery/controllers/simple_uploader.php2
-rw-r--r--modules/gallery/helpers/MY_url.php20
-rw-r--r--modules/gallery/helpers/gallery_installer.php3
-rw-r--r--modules/gallery/helpers/gallery_menu.php25
-rw-r--r--modules/gallery/helpers/gallery_theme.php4
-rw-r--r--modules/gallery/views/kohana_error_page.php5
-rw-r--r--modules/unit_test/libraries/Unit_Test.php4
8 files changed, 74 insertions, 58 deletions
diff --git a/modules/gallery/controllers/file_proxy.php b/modules/gallery/controllers/file_proxy.php
index f3c5f109..2037ad98 100644
--- a/modules/gallery/controllers/file_proxy.php
+++ b/modules/gallery/controllers/file_proxy.php
@@ -41,56 +41,55 @@ class File_Proxy_Controller extends Controller {
kohana::show_404();
}
- $file = substr($request_uri, strlen($var_uri));
+ $file_uri = substr($request_uri, strlen($var_uri));
// Make sure that we don't leave the var dir
- if (strpos($file, "..") !== false) {
+ if (strpos($file_uri, "..") !== false) {
kohana::show_404();
}
- // We only handle var/resizes and var/albums
- $paths = explode("/", $file);
- $type = $paths[0];
+ list ($type, $path) = explode("/", $file_uri, 2);
if ($type != "resizes" && $type != "albums" && $type != "thumbs") {
kohana::show_404();
}
// If the last element is .album.jpg, pop that off since it's not a real item
- if ($paths[count($paths)-1] == ".album.jpg") {
- array_pop($paths);
- }
- if ($paths[count($paths)-1] == "") {
- array_pop($paths);
- }
+ $path = preg_replace("|/.album.jpg$|", "", $path);
- // Find all items that match the level and name, then iterate over those to find a match.
- // In most cases we'll get it in one. Note that for the level calculation, we just count the
- // size of $paths. $paths includes the type ("thumbs", etc) but it doesn't include the root,
- // so it's a wash.
- $count = count($paths);
- $compare_file = VARPATH . $file;
- $item = null;
- foreach (ORM::factory("item")
- ->where("name", $paths[$count - 1])
- ->where("level", $count)
- ->find_all() as $match) {
- if ($type == "albums") {
- $match_file = $match->file_path();
- } else if ($type == "resizes") {
- $match_file = $match->resize_path();
- } else {
- $match_file = $match->thumb_path();
- }
- if ($match_file == $compare_file) {
- $item = $match;
- break;
+ // We now have the relative path to the item. Search for it in the path cache
+ $item = ORM::factory("item")->where("relative_path_cache", $path)->find();
+ if (!$item->loaded) {
+ // We didn't turn it up. This may mean that the path cache is out of date, so look it up
+ // the hard way.
+ //
+ // Find all items that match the level and name, then iterate over those to find a match.
+ // In most cases we'll get it in one. Note that for the level calculation, we just count the
+ // size of $paths.
+ $paths = explode("/", $path);
+ $count = count($paths);
+ foreach (ORM::factory("item")
+ ->where("name", $paths[$count - 1])
+ ->where("level", $count + 1)
+ ->find_all() as $match) {
+ if ($match->relative_path() == $path) {
+ $item = $match;
+ break;
+ }
}
}
- if (!$item) {
+ if (!$item->loaded) {
kohana::show_404();
}
+ if ($type == "albums") {
+ $file = $item->file_path();
+ } else if ($type == "resizes") {
+ $file = $item->resize_path();
+ } else {
+ $file = $item->thumb_path();
+ }
+
// Make sure we have access to the item
if (!access::can("view", $item)) {
kohana::show_404();
@@ -106,14 +105,14 @@ class File_Proxy_Controller extends Controller {
kohana::show_404();
}
- if (!file_exists($match_file)) {
+ if (!file_exists($file)) {
kohana::show_404();
}
// Dump out the image
header("Content-Type: $item->mime_type");
Kohana::close_buffers(false);
- $fd = fopen($match_file, "rb");
+ $fd = fopen($file, "rb");
fpassthru($fd);
fclose($fd);
}
diff --git a/modules/gallery/controllers/simple_uploader.php b/modules/gallery/controllers/simple_uploader.php
index bdf9582f..ec2a5ab9 100644
--- a/modules/gallery/controllers/simple_uploader.php
+++ b/modules/gallery/controllers/simple_uploader.php
@@ -20,7 +20,7 @@
class Simple_Uploader_Controller extends Controller {
public function app($id) {
$item = ORM::factory("item", $id);
- access::required("edit", $item);
+ access::required("add", $item);
$v = new View("simple_uploader.html");
$v->item = $item;
diff --git a/modules/gallery/helpers/MY_url.php b/modules/gallery/helpers/MY_url.php
index 5e8bfc9e..019e416f 100644
--- a/modules/gallery/helpers/MY_url.php
+++ b/modules/gallery/helpers/MY_url.php
@@ -38,13 +38,19 @@ class url extends url_Core {
return;
}
- $count = count(Router::$segments);
- foreach (ORM::factory("item")
- ->where("name", html_entity_decode(Router::$segments[$count - 1], ENT_QUOTES))
- ->where("level", $count + 1)
- ->find_all() as $match) {
- if ($match->relative_path() == html_entity_decode(Router::$current_uri, ENT_QUOTES)) {
- $item = $match;
+ $current_uri = html_entity_decode(Router::$current_uri, ENT_QUOTES);
+ $item = ORM::factory("item")->where("relative_path_cache", $current_uri)->find();
+ if (!$item->loaded) {
+ // It's possible that the relative path cache for the item we're looking for is out of date,
+ // so find it the hard way.
+ $count = count(Router::$segments);
+ foreach (ORM::factory("item")
+ ->where("name", html_entity_decode(Router::$segments[$count - 1], ENT_QUOTES))
+ ->where("level", $count + 1)
+ ->find_all() as $match) {
+ if ($match->relative_path() == $current_uri) {
+ $item = $match;
+ }
}
}
diff --git a/modules/gallery/helpers/gallery_installer.php b/modules/gallery/helpers/gallery_installer.php
index fbbee194..b97adcd0 100644
--- a/modules/gallery/helpers/gallery_installer.php
+++ b/modules/gallery/helpers/gallery_installer.php
@@ -251,6 +251,9 @@ class gallery_installer {
module::set_version("gallery", 1);
module::set_var("gallery", "version", "3.0 pre-beta git");
module::set_var("gallery", "choose_default_tookit", 1);
+
+ // @todo this string needs to be picked up by l10n_scanner
+ module::set_var("gallery", "credits", "Powered by <a href=\"%url\">Gallery %version</a>");
}
}
diff --git a/modules/gallery/helpers/gallery_menu.php b/modules/gallery/helpers/gallery_menu.php
index 1dc9cb41..1f5151a3 100644
--- a/modules/gallery/helpers/gallery_menu.php
+++ b/modules/gallery/helpers/gallery_menu.php
@@ -19,7 +19,8 @@
*/
class gallery_menu_Core {
static function site($menu, $theme) {
- if (file_exists(MODPATH . "gallery/controllers/scaffold.php") && user::active()->admin) {
+ $is_admin = user::active()->admin;
+ if (file_exists(MODPATH . "gallery/controllers/scaffold.php") && $is_admin) {
$menu->append($scaffold_menu = Menu::factory("submenu")
->id("scaffold")
->label("Scaffold"));
@@ -36,21 +37,25 @@ class gallery_menu_Core {
$item = $theme->item();
- if (user::active()->admin || ($item && access::can("edit", $item))) {
+ $can_edit = access::can("edit", $item) || $is_admin;
+ $can_add = access::can("add", $item) || $is_admin;
+
+ if ($item && $can_edit || $can_add) {
$menu->append($options_menu = Menu::factory("submenu")
->id("options_menu")
->label(t("Options")));
- if ($item && access::can("edit", $item)) {
+ if ($can_edit) {
$options_menu
->append(Menu::factory("dialog")
->id("edit_item")
->label($item->is_album() ? t("Edit album") : t("Edit photo"))
->url(url::site("form/edit/{$item->type}s/$item->id")));
+ }
- // @todo Move album options menu to the album quick edit pane
- // @todo Create resized item quick edit pane menu
- if ($item->is_album()) {
+ // @todo Move album options menu to the album quick edit pane
+ if ($item->is_album()) {
+ if ($can_add) {
$options_menu
->append(Menu::factory("dialog")
->id("add_item")
@@ -59,7 +64,11 @@ class gallery_menu_Core {
->append(Menu::factory("dialog")
->id("add_album")
->label(t("Add an album"))
- ->url(url::site("form/add/albums/$item->id?type=album")))
+ ->url(url::site("form/add/albums/$item->id?type=album")));
+ }
+
+ if ($can_edit) {
+ $options_menu
->append(Menu::factory("dialog")
->id("edit_permissions")
->label(t("Edit permissions"))
@@ -68,7 +77,7 @@ class gallery_menu_Core {
}
}
- if (user::active()->admin) {
+ if ($is_admin) {
$menu->append($admin_menu = Menu::factory("submenu")
->id("admin_menu")
->label(t("Admin")));
diff --git a/modules/gallery/helpers/gallery_theme.php b/modules/gallery/helpers/gallery_theme.php
index d45e1b98..f955e8f7 100644
--- a/modules/gallery/helpers/gallery_theme.php
+++ b/modules/gallery/helpers/gallery_theme.php
@@ -124,8 +124,8 @@ class gallery_theme_Core {
}
static function credits() {
- return "<li class=\"first\">" .
- t("Powered by <a href=\"%url\">Gallery %version</a>",
+ return "<li class=\"first\">" .
+ t(module::get_var("gallery", "credits"),
array("url" => "http://gallery.menalto.com",
"version" => module::get_var("gallery", "version"))) .
"</li>";
diff --git a/modules/gallery/views/kohana_error_page.php b/modules/gallery/views/kohana_error_page.php
index a091bca3..d9bf9698 100644
--- a/modules/gallery/views/kohana_error_page.php
+++ b/modules/gallery/views/kohana_error_page.php
@@ -58,9 +58,8 @@
<title><?= t("Something went wrong!") ?></title>
</head>
<body>
-<? // try { $user = user::active(); } catch (Exception $e) { } ?>
-<? // $admin = isset($user) && $user->admin ?>
-<? $admin = 1; ?>
+ <? try { $user = user::active(); } catch (Exception $e) { } ?>
+ <? $admin = isset($user) && $user->admin ?>
<div class="big_box" id="framework_error">
<h1>
<?= t("Dang... Something went wrong!") ?>
diff --git a/modules/unit_test/libraries/Unit_Test.php b/modules/unit_test/libraries/Unit_Test.php
index 7e3d2a4b..7558759c 100644
--- a/modules/unit_test/libraries/Unit_Test.php
+++ b/modules/unit_test/libraries/Unit_Test.php
@@ -2,7 +2,7 @@
/**
* Unit_Test library.
*
- * $Id: Unit_Test.php 4158 2009-04-07 20:40:44Z zombor $
+ * $Id: Unit_Test.php 4367 2009-05-27 21:23:57Z samsoir $
*
* @package Unit_Test
* @author Kohana Team
@@ -66,7 +66,7 @@ class Unit_Test_Core {
$class = substr($path, strrpos($path, '/') + 1, -(strlen(EXT)));
// Skip hidden files
- if (substr($class, 0, 1) === '.')
+ if ($class[0] === '.')
continue;
// Check for duplicate test class name