summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
Diffstat (limited to 'modules')
-rw-r--r--modules/gallery/helpers/gallery_rest.php93
-rw-r--r--modules/gallery/helpers/item.php8
-rw-r--r--modules/gallery/tests/Gallery_Rest_Helper_Test.php8
-rw-r--r--modules/image_block/helpers/image_block_rest.php12
-rw-r--r--modules/rest/controllers/rest.php27
-rw-r--r--modules/rest/helpers/rest.php2
-rw-r--r--modules/rest/tests/Rest_Controller_Test.php2
-rw-r--r--modules/tag/helpers/tag_rest.php62
-rw-r--r--modules/tag/models/tag.php4
-rw-r--r--modules/tag/tests/Tag_Rest_Helper_Test.php4
10 files changed, 129 insertions, 93 deletions
diff --git a/modules/gallery/helpers/gallery_rest.php b/modules/gallery/helpers/gallery_rest.php
index 227a6f02..1d790d8c 100644
--- a/modules/gallery/helpers/gallery_rest.php
+++ b/modules/gallery/helpers/gallery_rest.php
@@ -22,11 +22,11 @@ class gallery_rest_Core {
$path = implode("/", $request->arguments);
$item = ORM::factory("item")
- ->where("relative_url_cache", $path)
+ ->where("relative_url_cache", "=", $path)
->viewable()
->find();
- if (!$item->loaded) {
+ if (!$item->loaded()) {
return rest::not_found("Resource: {$path} missing.");
}
@@ -62,11 +62,11 @@ class gallery_rest_Core {
$path = implode("/", $request->arguments);
$item = ORM::factory("item")
- ->where("relative_url_cache", $path)
+ ->where("relative_url_cache", "=", $path)
->viewable()
->find();
- if (!$item->loaded) {
+ if (!$item->loaded()) {
return rest::not_found("Resource: {$path} missing.");
}
@@ -75,12 +75,13 @@ class gallery_rest_Core {
}
// Validate the request data
- $new_values = gallery_rest::_validate($request, $item);
+ $new_values = gallery_rest::_validate($request, $item->parent_id, $item->id);
$errors = $new_values->errors();
if (empty($errors)) {
item::update($item, $new_values->as_array());
- log::success("content", "Updated $item->type", "<a href=\"{$item->type}s/$item->id\">view</a>");
+ log::success("content", "Updated $item->type",
+ "<a href=\"{$item->type}s/$item->id\">view</a>");
return rest::success();
} else {
@@ -94,15 +95,15 @@ class gallery_rest_Core {
}
$path = implode("/", $request->arguments);
- $components = explode("/", $path);
+ $components = $request->arguments;
$name = urldecode(array_pop($components));
$parent = ORM::factory("item")
- ->where("relative_url_cache", implode("/", $components))
+ ->where("relative_url_cache", "=", implode("/", $components))
->viewable()
->find();
- if (!$parent->loaded) {
+ if (!$parent->loaded()) {
return rest::not_found("Resource: {$path} missing.");
}
@@ -111,7 +112,7 @@ class gallery_rest_Core {
}
// Validate the request data
- $new_values = gallery_rest::_validate($request);
+ $new_values = gallery_rest::_validate($request, $parent->id);
$errors = $new_values->errors();
if (!empty($errors)) {
return rest::validation_error($errors);
@@ -121,10 +122,10 @@ class gallery_rest_Core {
$new_item = album::create(
$parent,
$name,
- empty($request->title) ? $name : $request->title,
- empty($request->description) ? null : $request->description,
+ empty($new_values["title"]) ? $name : $new_values["title"],
+ empty($new_values["description"]) ? null : $new_values["description"],
identity::active_user()->id,
- empty($request->slug) ? $name : $request->slug);
+ empty($new_values["slug"]) ? $name : $new_values["slug"]);
$log_message = t("Added an album");
} else {
$temp_filename = upload::save("image");
@@ -153,11 +154,11 @@ class gallery_rest_Core {
$path = implode("/", $request->arguments);
$item = ORM::factory("item")
- ->where("relative_url_cache", $path)
+ ->where("relative_url_cache", "=", $path)
->viewable()
->find();
- if (!$item->loaded) {
+ if (!$item->loaded()) {
return rest::success();
}
@@ -193,7 +194,7 @@ class gallery_rest_Core {
"path" => $child->relative_url(),
"thumb_url" => $child->thumb_url(true),
"thumb_dimensions" => array("width" => $child->thumb_width,
- "height" => $child->thumb_height),
+ "height" => $child->thumb_height),
"has_thumb" => $child->has_thumb(),
"title" => $child->title);
}
@@ -201,38 +202,40 @@ class gallery_rest_Core {
return $children;
}
- private static function _validate($request, $item=null) {
+ private static function _validate($request, $parent_id, $item_id=0) {
$new_values = array();
- $fields = array("title", "description", "name", "slug", "image");
- if (empty($item)) {
- $item = ORM::factory("item");
- $item->id = 0;
- }
- if ($item->id == 1) {
+ $fields = array("name" => "length[0,255]",
+ "title" => "required|length[0,255]",
+ "description" => "length[0,65535]",
+ "slug" => "required|length[0,255]");
+ if ($item_id == 1) {
unset($request["name"]);
unset($request["slug"]);
}
- foreach ($fields as $field) {
+ foreach (array_keys($fields) as $field) {
if (isset($request->$field)) {
$new_values[$field] = $request->$field;
} else if (isset($item->$field)) {
$new_values[$field] = $item->$field;
}
}
-
- $new_values = new Validation($new_values);
- foreach ($item->rules as $field => $rules) {
- foreach (explode("|", $rules) as $rule) {
- $new_values->add_rules($field, $rule);
- }
+ if (!empty($request->image)) {
+ $new_values["image"] = $request->image;
}
+
+ $new_values = Validation::factory($new_values)
+ ->add_rules("name", "length[0,255]")
+ ->add_rules("title", "length[0,255]")
+ ->add_rules("description", "length[0,65535]")
+ ->add_rules("slug", "length[0,255]");
if (isset($new_values["image"])) {
$new_values->add_rules(
"image", "upload::valid", "upload::required", "upload::type[gif,jpg,jpeg,png,flv,mp4]");
}
- if ($new_values->validate() && $item->id != 1) {
- $errors = item::check_for_conflicts($item, $new_values["name"], $new_values["slug"]);
+ if ($new_values->validate() && $item_id != 1) {
+ $errors = gallery_rest::_check_for_conflicts($parent_id, $item_id,
+ $new_values["name"], $new_values["slug"]);
if (!empty($errors)) {
!empty($errors["name_conflict"]) OR $new_values->add_error("name", "Duplicate Name");
!empty($errors["slug_conflict"]) OR
@@ -242,4 +245,30 @@ class gallery_rest_Core {
return $new_values;
}
+
+ private static function _check_for_conflicts($parent_id, $item_id, $new_name, $new_slug) {
+ $errors = array();
+
+ if ($row = db::build()
+ ->select(array("name", "slug"))
+ ->from("items")
+ ->where("parent_id", "=", $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;
+ }
+
}
diff --git a/modules/gallery/helpers/item.php b/modules/gallery/helpers/item.php
index c620ba95..fc390e70 100644
--- a/modules/gallery/helpers/item.php
+++ b/modules/gallery/helpers/item.php
@@ -122,11 +122,11 @@ class item_Core {
if ($row = db::build()
->select(array("name", "slug"))
->from("items")
- ->where("parent_id", $item->parent_id)
- ->where("id <>", $item->id)
+ ->where("parent_id", "=", $item->parent_id)
+ ->where("id", "<>", $item->id)
->and_open()
- ->where("name", $new_name)
- ->orwhere("slug", $new_slug)
+ ->where("name", "=", $new_name)
+ ->or_where("slug", "=", $new_slug)
->close()
->execute()
->current()) {
diff --git a/modules/gallery/tests/Gallery_Rest_Helper_Test.php b/modules/gallery/tests/Gallery_Rest_Helper_Test.php
index 14c73248..f36f6aaf 100644
--- a/modules/gallery/tests/Gallery_Rest_Helper_Test.php
+++ b/modules/gallery/tests/Gallery_Rest_Helper_Test.php
@@ -208,7 +208,7 @@ class Gallery_Rest_Helper_Test extends Unit_Test_Case {
"parent_path" => $this->_album->relative_url()))),
gallery_rest::delete($request));
$this->_child->reload();
- $this->assert_false($this->_child->loaded);
+ $this->assert_false($this->_child->loaded());
}
public function gallery_rest_delete_photo_test() {
@@ -222,7 +222,7 @@ class Gallery_Rest_Helper_Test extends Unit_Test_Case {
"parent_path" => $this->_album->relative_url()))),
gallery_rest::delete($request));
$this->_sibling->reload();
- $this->assert_false($this->_sibling->loaded);
+ $this->assert_false($this->_sibling->loaded());
}
public function gallery_rest_post_album_test() {
@@ -235,9 +235,9 @@ class Gallery_Rest_Helper_Test extends Unit_Test_Case {
$this->assert_equal(json_encode(array("status" => "OK", "path" => $new_path)),
gallery_rest::post($request));
$album = ORM::factory("item")
- ->where("relative_url_cache", $new_path)
+ ->where("relative_url_cache", "=", $new_path)
->find();
- $this->assert_true($album->loaded);
+ $this->assert_true($album->loaded());
$this->assert_equal("new child", $album->slug);
}
}
diff --git a/modules/image_block/helpers/image_block_rest.php b/modules/image_block/helpers/image_block_rest.php
index 45f849b1..7afd974c 100644
--- a/modules/image_block/helpers/image_block_rest.php
+++ b/modules/image_block/helpers/image_block_rest.php
@@ -26,18 +26,18 @@ class image_block_rest_Core {
$items = ORM::factory("item")
->viewable()
- ->where("type !=", "album")
- ->where("rand_key < ", $random)
- ->orderby(array("rand_key" => "DESC"))
+ ->where("type", "!=", "album")
+ ->where("rand_key", "<", $random)
+ ->order_by(array("rand_key" => "DESC"))
->find_all(1);
if ($items->count() == 0) {
// Try once more. If this fails, just ditch the block altogether
$items = ORM::factory("item")
->viewable()
- ->where("type !=", "album")
- ->where("rand_key >= ", $random)
- ->orderby(array("rand_key" => "DESC"))
+ ->where("type", "!=", "album")
+ ->where("rand_key", ">= ", $random)
+ ->order_by(array("rand_key" => "DESC"))
->find_all(1);
}
break;
diff --git a/modules/rest/controllers/rest.php b/modules/rest/controllers/rest.php
index 1289d62b..6715bc15 100644
--- a/modules/rest/controllers/rest.php
+++ b/modules/rest/controllers/rest.php
@@ -18,7 +18,7 @@
*/
class Rest_Controller extends Controller {
public function access_key() {
- $request = (object)$this->input->get();
+ $request = (object)Input::instance()->get();
if (empty($request->user) || empty($request->password)) {
print rest::forbidden("No user or password supplied");
return;
@@ -36,13 +36,13 @@ class Rest_Controller extends Controller {
}
$key = ORM::factory("user_access_token")
- ->where("user_id", $user->id)
+ ->where("user_id", "=", $user->id)
->find();
- if (!$key->loaded) {
+ if (!$key->loaded()) {
$key->user_id = $user->id;
$key->access_key = md5($user->name . rand());
$key->save();
- Kohana::log("alert", Kohana::debug($key->as_array()));
+ Kohana_Log::add("alert", Kohana::debug($key->as_array()));
}
print rest::success(array("token" => $key->access_key));
}
@@ -67,22 +67,23 @@ class Rest_Controller extends Controller {
}
private function _normalize_request($args=array()) {
- $method = strtolower($this->input->server("REQUEST_METHOD"));
+ $input = Input::instance();
+ $method = strtolower($input->server("REQUEST_METHOD"));
$request = new stdClass();
- foreach (array_keys($this->input->get()) as $key) {
- $request->$key = $this->input->get($key);
+ foreach (array_keys($input->get()) as $key) {
+ $request->$key = $input->get($key);
}
if ($method != "get") {
- foreach (array_keys($this->input->post()) as $key) {
- $request->$key = $this->input->post($key);
+ foreach (array_keys($input->post()) as $key) {
+ $request->$key = $input->post($key);
}
foreach (array_keys($_FILES) as $key) {
$request->$key = $_FILES[$key];
}
}
- $request->method = strtolower($this->input->server("HTTP_X_GALLERY_REQUEST_METHOD", $method));
- $request->access_token = $this->input->server("HTTP_X_GALLERY_REQUEST_KEY");
+ $request->method = strtolower($input->server("HTTP_X_GALLERY_REQUEST_METHOD", $method));
+ $request->access_token = $input->server("HTTP_X_GALLERY_REQUEST_KEY");
$request->arguments = $args; // Let the rest handler figure out what the arguments mean
return $request;
@@ -93,10 +94,10 @@ class Rest_Controller extends Controller {
$user = identity::guest();
} else {
$key = ORM::factory("user_access_token")
- ->where("access_key", $access_token)
+ ->where("access_key", "=", $access_token)
->find();
- if ($key->loaded) {
+ if ($key->loaded()) {
$user = identity::lookup_user($key->user_id);
if (empty($user)) {
print rest::forbidden("User not found: {$key->user_id}");
diff --git a/modules/rest/helpers/rest.php b/modules/rest/helpers/rest.php
index ad6ca7c7..276ff0c2 100644
--- a/modules/rest/helpers/rest.php
+++ b/modules/rest/helpers/rest.php
@@ -88,7 +88,7 @@ class rest_Core {
private static function _format_failure_response($message, $log_message) {
if (!empty($log_message)) {
- Kohana::log("info", $log_message);
+ Kohana_Log::add("info", $log_message);
}
// We don't need to save the session for this request
Session::abort_save();
diff --git a/modules/rest/tests/Rest_Controller_Test.php b/modules/rest/tests/Rest_Controller_Test.php
index b7fbd5a3..6bebc47d 100644
--- a/modules/rest/tests/Rest_Controller_Test.php
+++ b/modules/rest/tests/Rest_Controller_Test.php
@@ -173,7 +173,7 @@ class rest_rest {
static function get($request) {
self::$request = $request;
$item = ORM::factory("item")
- ->where("relative_url_cache", implode("/", $request->arguments))
+ ->where("relative_url_cache", "=", implode("/", $request->arguments))
->find();
$response["path"] = $item->relative_url();
$response["title"] = $item->title;
diff --git a/modules/tag/helpers/tag_rest.php b/modules/tag/helpers/tag_rest.php
index d62c0231..cca9a88b 100644
--- a/modules/tag/helpers/tag_rest.php
+++ b/modules/tag/helpers/tag_rest.php
@@ -18,40 +18,44 @@
* Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
*/
class tag_rest_Core {
+ // If no arguments just return all the tags. If 2 or more then it is a path then
+ // return the tags for that item. But if its only 1, then is it a path or a tag?
+ // Assume a tag first, if nothing is found then try finding the item.
static function get($request) {
- if (empty($request->arguments)) {
+ $resources = array();
+ switch (count($request->arguments)) {
+ case 0:
$tags = ORM::factory("tag")
->select("name", "count")
- ->orderby("count", "DESC");
+ ->order_by("count", "DESC");
if (!empty($request->limit)) {
$tags->limit($request->limit);
}
if (!empty($request->offset)) {
$tags->offset($request->offset);
}
- $response = array("tags" => array());
+ $resources = array("tags" => array());
foreach ($tags->find_all() as $row) {
- $response["tags"][] = array("name" => $row->name, "count" => $row->count);
+ $resources["tags"][] = array("name" => $row->name, "count" => $row->count);
}
- } else {
- $path = implode("/", $request->arguments);
- if (strpos($path, ",") === false) {
- $item = ORM::factory("item")
- ->where("relative_url_cache", $path)
- ->viewable()
- ->find();
- // If we didn't find it and there was only one argument, retry as a tag not a path
- if ($item->loaded || count($request->arguments) != 1) {
- $response = array("tags" => $item->loaded ? tag::item_tags($item) : array());
- } else {
- $response = array("resources" => tag_rest::_get_items($request));
- }
- } else {
- $response = array("resources" => tag_rest::_get_items($request));
+ break;
+ case 1:
+ $resources = tag_rest::_get_items($request);
+ if (!empty($resources)) {
+ $resources = array("resources" =>$resources);
+ break;
+ }
+ default:
+ $item = ORM::factory("item")
+ ->where("relative_url_cache", "=", implode("/", $request->arguments))
+ ->viewable()
+ ->find();
+ if ($item->loaded()) {
+ $resources = array("tags" => tag::item_tags($item));
}
}
- return rest::success($response);
+ return rest::success($resources);
}
static function post($request) {
@@ -62,10 +66,10 @@ class tag_rest_Core {
$tags = explode(",", $request->arguments[0]);
$item = ORM::factory("item")
- ->where("relative_url_cache", $path)
+ ->where("relative_url_cache", "=", $path)
->viewable()
->find();
- if (!$item->loaded) {
+ if (!$item->loaded()) {
return rest::not_found("Resource: {$path} missing.");
}
@@ -87,9 +91,9 @@ class tag_rest_Core {
$name = $request->arguments[0];
$tag = ORM::factory("tag")
- ->where("name", $name)
+ ->where("name", "=", $name)
->find();
- if (!$tag->loaded) {
+ if (!$tag->loaded()) {
return rest::not_found("Tag: {$name} not found.");
}
@@ -108,13 +112,13 @@ class tag_rest_Core {
$tag_list = ORM::factory("tag")
->join("items_tags", "tags.id", "items_tags.tag_id")
->join("items", "items.id", "items_tags.item_id")
- ->in("tags.name", $tags)
- ->where("relative_url_cache", $request->path)
+ ->where("tags.name", "IN", $tags)
+ ->where("relative_url_cache", "=", $request->path)
->viewable()
->find_all();
} else {
$tag_list = ORM::factory("tag")
- ->in("name", $tags)
+ ->where("name", "IN", $tags)
->find_all();
}
@@ -129,10 +133,10 @@ class tag_rest_Core {
private static function _get_items($request) {
$tags = explode(",", $request->arguments[0]);
$items = ORM::factory("item")
- ->select("distinct *")
+ ->select_distinct("*")
->join("items_tags", "items.id", "items_tags.item_id")
->join("tags", "tags.id", "items_tags.tag_id")
- ->in("tags.name", $tags);
+ ->where("tags.name", "IN", $tags);
if (!empty($request->limit)) {
$items->limit($request->limit);
}
diff --git a/modules/tag/models/tag.php b/modules/tag/models/tag.php
index b2ce9eda..d0d2117c 100644
--- a/modules/tag/models/tag.php
+++ b/modules/tag/models/tag.php
@@ -108,7 +108,9 @@ class Tag_Model extends ORM {
$result = parent::delete();
if ($related_item_ids) {
- foreach (ORM::factory("item")->in("id", array_keys($related_item_ids))->find_all() as $item) {
+ foreach (ORM::factory("item")
+ ->where("id", "IN", array_keys($related_item_ids))
+ ->find_all() as $item) {
module::event("item_related_update", $item);
}
}
diff --git a/modules/tag/tests/Tag_Rest_Helper_Test.php b/modules/tag/tests/Tag_Rest_Helper_Test.php
index 1c550366..6b1c9a33 100644
--- a/modules/tag/tests/Tag_Rest_Helper_Test.php
+++ b/modules/tag/tests/Tag_Rest_Helper_Test.php
@@ -210,11 +210,11 @@ class Tag_Rest_Helper_Test extends Unit_Test_Case {
$this->assert_equal(json_encode(array("status" => "OK")), tag_rest::delete($request));
$request = (object)array("arguments" => array("T1,P1"));
- $this->assert_equal(json_encode(array("status" => "OK", "resources" => array())),
+ $this->assert_equal(json_encode(array("status" => "OK")),
tag_rest::get($request));
}
- public function tag_rest_delete_tag_from_item_test() {
+ public function tag_rest_delete_tagc_from_item_test() {
$request = (object)array("arguments" => array("T1,P1"),
$this->_photo->relative_url());