summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
Diffstat (limited to 'modules')
-rw-r--r--modules/gallery/controllers/albums.php42
-rw-r--r--modules/gallery/controllers/file_proxy.php8
-rw-r--r--modules/gallery/controllers/movies.php38
-rw-r--r--modules/gallery/controllers/photos.php41
-rw-r--r--modules/gallery/helpers/gallery_event.php3
-rw-r--r--modules/gallery/helpers/item.php45
-rw-r--r--modules/gallery/views/form_uploadify.html.php16
-rw-r--r--modules/server_add/controllers/server_add.php4
8 files changed, 95 insertions, 102 deletions
diff --git a/modules/gallery/controllers/albums.php b/modules/gallery/controllers/albums.php
index fde5c02d..2134a419 100644
--- a/modules/gallery/controllers/albums.php
+++ b/modules/gallery/controllers/albums.php
@@ -134,32 +134,40 @@ class Albums_Controller extends Items_Controller {
$form->edit_item->dirname->value != $album->name ||
$form->edit_item->slug->value != $album->slug) {
// Make sure that there's not a conflict
- $errors = item::check_for_conflicts(
- $album, $form->edit_item->dirname->value, $form->edit_item->slug->value);
-
- if (!empty($errors["name_conflict"])) {
- $form->edit_item->dirname->add_error("name_conflict", 1);
- }
- if (!empty($errors["slug_conflict"])) {
- $form->edit_item->slug->add_error("slug_conflict", 1);
+ if ($row = db::build()
+ ->select(array("name", "slug"))
+ ->from("items")
+ ->where("parent_id", "=", $album->parent_id)
+ ->where("id", "<>", $album->id)
+ ->and_open()
+ ->where("name", "=", $form->edit_item->dirname->value)
+ ->or_where("slug", "=", $form->edit_item->slug->value)
+ ->close()
+ ->execute()
+ ->current()) {
+ if ($row->name == $form->edit_item->dirname->value) {
+ $form->edit_item->dirname->add_error("name_conflict", 1);
+ }
+ if ($row->slug == $form->edit_item->slug->value) {
+ $form->edit_item->slug->add_error("slug_conflict", 1);
+ }
+ $valid = false;
}
- $valid = empty($errors);
}
}
if ($valid) {
$watching_album = $album->url() != ($location = parse_url(request::referrer(), PHP_URL_PATH));
- $new_values = array("title" => $form->edit_item->title->value,
- "description" => $form->edit_item->description->value,
- "sort_column" => $form->edit_item->sort_order->column->value,
- "sort_order" => $form->edit_item->sort_order->direction->value,
- "slug" => $form->edit_item->slug->value);
+ $album->title = $form->edit_item->title->value;
+ $album->description = $form->edit_item->description->value;
+ $album->sort_column = $form->edit_item->sort_order->column->value;
+ $album->sort_order = $form->edit_item->sort_order->direction->value;
if ($album->id != 1) {
- $new_values["name"] = $form->edit_item->dirname->value;
+ $album->rename($form->edit_item->dirname->value);
}
- item::update($album, $new_values);
-
+ $album->slug = $form->edit_item->slug->value;
+ $album->save();
module::event("item_edit_form_completed", $album, $form);
log::success("content", "Updated album", "<a href=\"albums/$album->id\">view</a>");
diff --git a/modules/gallery/controllers/file_proxy.php b/modules/gallery/controllers/file_proxy.php
index 65c0cb50..72c4e104 100644
--- a/modules/gallery/controllers/file_proxy.php
+++ b/modules/gallery/controllers/file_proxy.php
@@ -99,6 +99,12 @@ class File_Proxy_Controller extends Controller {
throw new Kohana_404_Exception();
}
+ // Check that the content hasn't expired or it wasn't changed since cached
+ if (($last_modified = expires::get()) !== false &&
+ $item->updated < $last_modified) {
+ expires::check(2592000);
+ }
+
// Don't try to load a directory
if ($type == "albums" && $item->is_album()) {
throw new Kohana_404_Exception();
@@ -111,6 +117,8 @@ class File_Proxy_Controller extends Controller {
// We don't need to save the session for this request
Session::abort_save();
+ expires::set(2592000); // 30 days
+
// Dump out the image. If the item is a movie, then its thumbnail will be a JPG.
if ($item->is_movie() && $type != "albums") {
header("Content-type: image/jpeg");
diff --git a/modules/gallery/controllers/movies.php b/modules/gallery/controllers/movies.php
index 2d429910..b5785ecf 100644
--- a/modules/gallery/controllers/movies.php
+++ b/modules/gallery/controllers/movies.php
@@ -76,26 +76,34 @@ class Movies_Controller extends Items_Controller {
if ($form->edit_item->filename->value != $movie->name ||
$form->edit_item->slug->value != $movie->slug) {
// Make sure that there's not a name or slug conflict
- $errors = item::check_for_conflicts(
- $movie, $form->edit_item->filename->value, $form->edit_item->slug->value);
-
- if (!empty($errors["name_conflict"])) {
- $form->edit_item->filename->add_error("name_conflict", 1);
- }
- if (!empty($errors["slug_conflict"])) {
- $form->edit_item->slug->add_error("slug_conflict", 1);
+ if ($row = db::build()
+ ->select(array("name", "slug"))
+ ->from("items")
+ ->where("parent_id", "=", $movie->parent_id)
+ ->where("id", "<>", $movie->id)
+ ->and_open()
+ ->where("name", "=", $form->edit_item->filename->value)
+ ->or_where("slug", "=", $form->edit_item->slug->value)
+ ->close()
+ ->execute()
+ ->current()) {
+ if ($row->name == $form->edit_item->filename->value) {
+ $form->edit_item->filename->add_error("name_conflict", 1);
+ }
+ if ($row->slug == $form->edit_item->slug->value) {
+ $form->edit_item->slug->add_error("slug_conflict", 1);
+ }
+ $valid = false;
}
- $valid = empty($errors);
}
}
if ($valid) {
- $new_values = array("title" => $form->edit_item->title->value,
- "description" => $form->edit_item->description->value,
- "name" => $form->edit_item->filename->value,
- "slug" => $form->edit_item->slug->value);
- item::update($movie, $new_values);
-
+ $movie->title = $form->edit_item->title->value;
+ $movie->description = $form->edit_item->description->value;
+ $movie->slug = $form->edit_item->slug->value;
+ $movie->rename($form->edit_item->filename->value);
+ $movie->save();
module::event("item_edit_form_completed", $movie, $form);
log::success("content", "Updated movie", "<a href=\"{$movie->url()}\">view</a>");
diff --git a/modules/gallery/controllers/photos.php b/modules/gallery/controllers/photos.php
index 7c2c266c..ced9da2f 100644
--- a/modules/gallery/controllers/photos.php
+++ b/modules/gallery/controllers/photos.php
@@ -76,33 +76,42 @@ class Photos_Controller extends Items_Controller {
if ($form->edit_item->filename->value != $photo->name ||
$form->edit_item->slug->value != $photo->slug) {
// Make sure that there's not a name or slug conflict
- $errors = item::check_for_conflicts(
- $photo, $form->edit_item->filename->value, $form->edit_item->slug->value);
-
- if (!empty($errors["name_conflict"])) {
- $form->edit_item->filename->add_error("name_conflict", 1);
- }
- if (!empty($errors["slug_conflict"])) {
- $form->edit_item->slug->add_error("slug_conflict", 1);
+ if ($row = db::build()
+ ->select(array("name", "slug"))
+ ->from("items")
+ ->where("parent_id", "=", $photo->parent_id)
+ ->where("id", "<>", $photo->id)
+ ->and_open()
+ ->where("name", "=", $form->edit_item->filename->value)
+ ->or_where("slug", "=", $form->edit_item->slug->value)
+ ->close()
+ ->execute()
+ ->current()) {
+ if ($row->name == $form->edit_item->filename->value) {
+ $form->edit_item->filename->add_error("name_conflict", 1);
+ }
+ if ($row->slug == $form->edit_item->slug->value) {
+ $form->edit_item->slug->add_error("slug_conflict", 1);
+ }
+ $valid = false;
}
- $valid = empty($errors);
}
}
if ($valid) {
$watching_album = $photo->url() != ($location = parse_url(request::referrer(), PHP_URL_PATH));
- $new_values = array("title" => $form->edit_item->title->value,
- "description" => $form->edit_item->description->value,
- "name" => $form->edit_item->filename->value,
- "slug" => $form->edit_item->slug->value);
- item::update($photo, $new_values);
-
+ $photo->title = $form->edit_item->title->value;
+ $photo->description = $form->edit_item->description->value;
+ $photo->slug = $form->edit_item->slug->value;
+ $photo->rename($form->edit_item->filename->value);
+ $photo->save();
module::event("item_edit_form_completed", $photo, $form);
log::success("content", "Updated photo", "<a href=\"{$photo->url()}\">view</a>");
message::success(
- t("Saved photo %photo_title", array("photo_title" => html::purify($photo->title))));
+ t("Saved photo %photo_title",
+ array("photo_title" => html::purify($photo->title))));
print json_encode(
array("result" => "success",
diff --git a/modules/gallery/helpers/gallery_event.php b/modules/gallery/helpers/gallery_event.php
index 301432d4..0303c9cb 100644
--- a/modules/gallery/helpers/gallery_event.php
+++ b/modules/gallery/helpers/gallery_event.php
@@ -109,6 +109,7 @@ class gallery_event_Core {
->label(t("Login")));
} else {
$csrf = access::csrf_token();
+ $item = $theme->item();
$menu->append(Menu::factory("dialog")
->id("user_menu_edit_profile")
->css_id("g-user-profile-link")
@@ -119,7 +120,7 @@ class gallery_event_Core {
->id("user_menu_logout")
->css_id("g-logout-link")
->url(url::site("logout?csrf=$csrf&amp;continue=" .
- urlencode(url::current(true))))
+ urlencode($item->url())))
->label(t("Logout")));
}
}
diff --git a/modules/gallery/helpers/item.php b/modules/gallery/helpers/item.php
index fc390e70..f6181f8a 100644
--- a/modules/gallery/helpers/item.php
+++ b/modules/gallery/helpers/item.php
@@ -96,51 +96,6 @@ class item_Core {
}
}
-
- static function update($item, $fields) {
- $dirty = false;
- if ($item->id != 1 && !empty($fields["name"]) && $fields["name"] != $item->name) {
- $item->rename($fields["name"]);
- unset($fields["name"]);
- $dirty = true;
- }
- foreach ($fields as $field => $value) {
- if ($value !== $item->$field) {
- $item->$field = $value;
- $dirty = true;
- }
- }
-
- if ($dirty) {
- $item->save();
- }
- }
-
- static function check_for_conflicts($item, $new_name, $new_slug) {
- $errors = array();
-
- if ($row = db::build()
- ->select(array("name", "slug"))
- ->from("items")
- ->where("parent_id", "=", $item->parent_id)
- ->where("id", "<>", $item->id)
- ->and_open()
- ->where("name", "=", $new_name)
- ->or_where("slug", "=", $new_slug)
- ->close()
- ->execute()
- ->current()) {
- if ($row->name == $new_name) {
- $errors["name_conflict"] = 1;
- }
- if ($row->slug == $new_slug) {
- $errors["slug_conflict"] = 1;
- }
- }
-
- return $errors;
- }
-
/**
* Sanitize a filename into something presentable as an item title
* @param string $filename
diff --git a/modules/gallery/views/form_uploadify.html.php b/modules/gallery/views/form_uploadify.html.php
index d856c464..43b73033 100644
--- a/modules/gallery/views/form_uploadify.html.php
+++ b/modules/gallery/views/form_uploadify.html.php
@@ -1,15 +1,19 @@
<?php defined("SYSPATH") or die("No direct script access.") ?>
<style>
#g-add-photos-canvas object {
- left: -50px;
+ height: 33px;
+ left: -60px;
position: relative;
z-index: 100;
}
#g-add-photos-button {
- left: 55px;
+ float: left;
+ left: 175px;
+ padding-bottom: .5em;
+ padding-top: .5em;
position: relative;
- top: -15px;
- z-index: -1;
+ width: 110px;
+ z-index: 1;
}
</style>
<script type="text/javascript" src="<?= url::file("lib/swfobject.js") ?>"></script>
@@ -23,7 +27,6 @@
fileExt: "*.gif;*.jpg;*.jpeg;*.png;*.flv;*.mp4;*.GIF;*.JPG;*.JPEG;*.PNG;*.FLV;*.MP4",
fileDesc: <?= t("Photos and movies")->for_js() ?>,
cancelImg: "<?= url::file("lib/uploadify/cancel.png") ?>",
- buttonText: <?= t("Select photos...")->for_js() ?>,
simUploadLimit: <?= $simultaneous_upload_limit ?>,
wmode: "transparent",
hideButton: true, /* should be true */
@@ -77,7 +80,6 @@
$("#g-add-photos-status ul").append(
"<li class=\"g-error\">" + fileObj.name + msg + "</li>");
$("#g-uploadify" + queueID).remove();
- //return false;
},
onSelect: function(event) {
if ($("#g-upload-cancel-all").hasClass("ui-state-disabled")) {
@@ -114,7 +116,7 @@
</div>
<div id="g-add-photos-canvas" style="text-align: center;">
- <a id="g-add-photos-button" class="ui-corner-all" style="padding-bottom: 1em;" href="#"><?= t("Select photos...") ?></a>
+ <a id="g-add-photos-button" class="ui-corner-all" href="#"><?= t("Select photos...") ?></a>
<span id="g-uploadify"></span>
</div>
<div id="g-add-photos-status" style="text-align: center;">
diff --git a/modules/server_add/controllers/server_add.php b/modules/server_add/controllers/server_add.php
index 6ff00812..f6e3a4dd 100644
--- a/modules/server_add/controllers/server_add.php
+++ b/modules/server_add/controllers/server_add.php
@@ -42,13 +42,15 @@ class Server_Add_Controller extends Admin_Controller {
// Make a tree with the parents back up to the authorized path, and all the children under the
// current path.
+ Kohana_Log::add("error", $path);
if (server_add::is_valid_path($path)) {
$tree->parents[] = $path;
while (server_add::is_valid_path(dirname($tree->parents[0]))) {
array_unshift($tree->parents, dirname($tree->parents[0]));
}
- foreach (glob("$path/*") as $file) {
+ $glob_path = str_replace(array("{", "}", "[", "]"), array("\{", "\}", "\[", "\]"), $path);
+ foreach (glob("$glob_path/*") as $file) {
if (!is_readable($file)) {
continue;
}