summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
authorTim Almdal <tnalmdal@shaw.ca>2009-12-26 11:24:50 -0800
committerTim Almdal <tnalmdal@shaw.ca>2009-12-26 11:24:50 -0800
commit3060a6f662da66008d57a461bf1c9b5b4aa2b002 (patch)
tree442fd290505817efc0324f2af6e01805cb7396aa /modules
parent1cd6a615bb47a33794e4a4f690c87a348ab752d7 (diff)
parent32d25dafd5b033338b6a9bb8c7c53edab462543a (diff)
Merge branch 'master' into talmdal_dev
Conflicts: modules/gallery/controllers/albums.php modules/gallery/controllers/movies.php modules/gallery/controllers/photos.php
Diffstat (limited to 'modules')
-rw-r--r--modules/akismet/helpers/akismet.php4
-rw-r--r--modules/akismet/tests/Akismet_Helper_Test.php2
-rw-r--r--modules/comment/controllers/admin_comments.php26
-rw-r--r--modules/comment/helpers/comment_block.php2
-rw-r--r--modules/comment/helpers/comment_event.php41
-rw-r--r--modules/comment/helpers/comment_rss.php6
-rw-r--r--modules/comment/helpers/comment_theme.php6
-rw-r--r--modules/comment/models/comment.php2
-rw-r--r--modules/comment/tests/Comment_Event_Test.php2
-rw-r--r--modules/comment/tests/Comment_Helper_Test.php7
-rw-r--r--modules/comment/tests/Comment_Model_Test.php4
-rw-r--r--modules/digibug/controllers/digibug.php25
-rw-r--r--modules/digibug/models/digibug_proxy.php2
-rw-r--r--modules/digibug/tests/Digibug_Controller_Test.php4
-rw-r--r--modules/exif/helpers/exif.php28
-rw-r--r--modules/exif/helpers/exif_event.php5
-rw-r--r--modules/exif/helpers/exif_task.php19
-rw-r--r--modules/exif/helpers/exif_theme.php6
-rw-r--r--modules/forge/libraries/Forge.php5
-rw-r--r--modules/forge/libraries/Form_Input.php14
-rw-r--r--modules/g2_import/helpers/g2_import.php23
-rw-r--r--modules/g2_import/helpers/g2_import_event.php5
-rw-r--r--modules/g2_import/helpers/g2_import_task.php4
-rw-r--r--modules/gallery/config/cache.php3
-rw-r--r--modules/gallery/config/log_file.php29
-rw-r--r--modules/gallery/controllers/admin.php2
-rw-r--r--modules/gallery/controllers/admin_advanced_settings.php3
-rw-r--r--modules/gallery/controllers/admin_dashboard.php2
-rw-r--r--modules/gallery/controllers/admin_identity.php4
-rw-r--r--modules/gallery/controllers/admin_languages.php7
-rw-r--r--modules/gallery/controllers/admin_maintenance.php36
-rw-r--r--modules/gallery/controllers/admin_modules.php2
-rw-r--r--modules/gallery/controllers/admin_sidebar.php2
-rw-r--r--modules/gallery/controllers/albums.php17
-rw-r--r--modules/gallery/controllers/combined.php6
-rw-r--r--modules/gallery/controllers/file_proxy.php28
-rw-r--r--modules/gallery/controllers/items.php4
-rw-r--r--modules/gallery/controllers/l10n_client.php35
-rw-r--r--modules/gallery/controllers/logout.php2
-rw-r--r--modules/gallery/controllers/move.php6
-rw-r--r--modules/gallery/controllers/movies.php2
-rw-r--r--modules/gallery/controllers/packager.php25
-rw-r--r--modules/gallery/controllers/permissions.php2
-rw-r--r--modules/gallery/controllers/photos.php2
-rw-r--r--modules/gallery/controllers/simple_uploader.php2
-rw-r--r--modules/gallery/helpers/MY_url.php10
-rw-r--r--modules/gallery/helpers/access.php153
-rw-r--r--modules/gallery/helpers/album.php12
-rw-r--r--modules/gallery/helpers/auth.php2
-rw-r--r--modules/gallery/helpers/gallery_block.php15
-rw-r--r--modules/gallery/helpers/gallery_event.php53
-rw-r--r--modules/gallery/helpers/gallery_graphics.php2
-rw-r--r--modules/gallery/helpers/gallery_rss.php12
-rw-r--r--modules/gallery/helpers/gallery_task.php6
-rw-r--r--modules/gallery/helpers/graphics.php76
-rw-r--r--modules/gallery/helpers/identity.php6
-rw-r--r--modules/gallery/helpers/item.php31
-rw-r--r--modules/gallery/helpers/l10n_client.php17
-rw-r--r--modules/gallery/helpers/l10n_scanner.php12
-rw-r--r--modules/gallery/helpers/locales.php6
-rw-r--r--modules/gallery/helpers/model_cache.php4
-rw-r--r--modules/gallery/helpers/module.php92
-rw-r--r--modules/gallery/helpers/movie.php12
-rw-r--r--modules/gallery/helpers/photo.php12
-rw-r--r--modules/gallery/helpers/site_status.php8
-rw-r--r--modules/gallery/helpers/task.php8
-rw-r--r--modules/gallery/helpers/theme.php7
-rw-r--r--modules/gallery/hooks/init_gallery.php4
-rw-r--r--modules/gallery/libraries/Gallery_I18n.php (renamed from modules/gallery/libraries/I18n.php)22
-rw-r--r--modules/gallery/libraries/Gallery_View.php6
-rw-r--r--modules/gallery/libraries/IdentityProvider.php4
-rw-r--r--modules/gallery/libraries/MY_Database.php57
-rw-r--r--modules/gallery/libraries/MY_Forge.php7
-rw-r--r--modules/gallery/libraries/MY_Kohana_Exception.php31
-rw-r--r--modules/gallery/libraries/MY_ORM.php10
-rw-r--r--modules/gallery/libraries/MY_View.php36
-rw-r--r--modules/gallery/libraries/ORM_MPTT.php146
-rw-r--r--modules/gallery/libraries/SafeString.php2
-rw-r--r--modules/gallery/libraries/Sendmail.php4
-rw-r--r--modules/gallery/libraries/drivers/Cache/Database.php122
-rw-r--r--modules/gallery/models/item.php116
-rw-r--r--modules/gallery/models/log.php2
-rw-r--r--modules/gallery/tests/Access_Helper_Test.php22
-rw-r--r--modules/gallery/tests/Cache_Test.php79
-rw-r--r--modules/gallery/tests/Database_Test.php153
-rw-r--r--modules/gallery/tests/DrawForm_Test.php27
-rw-r--r--modules/gallery/tests/File_Structure_Test.php16
-rw-r--r--modules/gallery/tests/Gallery_I18n_Test.php (renamed from modules/gallery/tests/I18n_Test.php)10
-rw-r--r--modules/gallery/tests/Gallery_Installer_Test.php4
-rw-r--r--modules/gallery/tests/Item_Helper_Test.php4
-rw-r--r--modules/gallery/tests/Item_Model_Test.php15
-rw-r--r--modules/gallery/tests/ORM_MPTT_Test.php8
-rw-r--r--modules/gallery/tests/Sendmail_Test.php4
-rw-r--r--modules/gallery/tests/controller_auth_data.txt3
-rw-r--r--modules/gallery/tests/xss_data.txt11
-rw-r--r--modules/gallery/views/kohana/error.php279
-rw-r--r--modules/gallery/views/kohana_error_page.php2
-rw-r--r--modules/gallery_unit_test/controllers/gallery_unit_test.php39
-rw-r--r--modules/gallery_unit_test/helpers/MY_request.php25
-rw-r--r--modules/gallery_unit_test/helpers/diff.php26
-rw-r--r--modules/gallery_unit_test/views/kohana_unit_test_cli.php2
-rw-r--r--modules/image_block/helpers/image_block_block.php12
-rw-r--r--modules/kohana23_compat/config/pagination.php27
-rw-r--r--modules/kohana23_compat/libraries/MY_Database_Builder.php46
-rw-r--r--modules/kohana23_compat/libraries/Pagination.php252
-rw-r--r--modules/notification/helpers/notification.php26
-rw-r--r--modules/notification/helpers/notification_event.php42
-rw-r--r--modules/organize/controllers/organize.php27
-rw-r--r--modules/organize/js/organize.js2
-rw-r--r--modules/organize/views/organize_tree.html.php2
-rw-r--r--modules/rss/controllers/rss.php6
-rw-r--r--modules/search/controllers/search.php4
-rw-r--r--modules/search/helpers/search.php20
-rw-r--r--modules/search/helpers/search_event.php2
-rw-r--r--modules/search/helpers/search_task.php12
-rw-r--r--modules/server_add/controllers/admin_server_add.php4
-rw-r--r--modules/server_add/controllers/server_add.php27
-rw-r--r--modules/slideshow/helpers/slideshow_event.php2
-rw-r--r--modules/tag/controllers/admin_tags.php20
-rw-r--r--modules/tag/controllers/tags.php10
-rw-r--r--modules/tag/helpers/tag.php28
-rw-r--r--modules/tag/helpers/tag_event.php2
-rw-r--r--modules/tag/helpers/tag_rss.php4
-rw-r--r--modules/tag/models/tag.php32
-rw-r--r--modules/tag/tests/Tag_Test.php6
-rw-r--r--modules/unit_test/libraries/Unit_Test.php96
-rw-r--r--modules/user/controllers/admin_users.php22
-rw-r--r--modules/user/controllers/password.php2
-rw-r--r--modules/user/helpers/group.php6
-rw-r--r--modules/user/helpers/user.php8
-rw-r--r--modules/user/libraries/drivers/IdentityProvider/Gallery.php2
-rw-r--r--modules/user/models/group.php8
-rw-r--r--modules/user/models/user.php8
-rw-r--r--modules/user/tests/User_Groups_Test.php8
-rw-r--r--modules/user/views/admin_users_group.html.php4
135 files changed, 2034 insertions, 1062 deletions
diff --git a/modules/akismet/helpers/akismet.php b/modules/akismet/helpers/akismet.php
index 43549ffa..46a305b2 100644
--- a/modules/akismet/helpers/akismet.php
+++ b/modules/akismet/helpers/akismet.php
@@ -166,7 +166,7 @@ class akismet_Core {
}
$response = "";
- Kohana::log("debug", "Send request\n" . print_r($http_request, 1));
+ Kohana_Log::add("debug", "Send request\n" . print_r($http_request, 1));
if (false !== ($fs = @fsockopen($host, 80, $errno, $errstr, 5))) {
fwrite($fs, $http_request);
while ( !feof($fs) ) {
@@ -181,7 +181,7 @@ class akismet_Core {
} else {
throw new Exception("@todo CONNECTION TO SPAM SERVICE FAILED");
}
- Kohana::log("debug", "Received response\n" . print_r($response, 1));
+ Kohana_Log::add("debug", "Received response\n" . print_r($response, 1));
return $response;
}
diff --git a/modules/akismet/tests/Akismet_Helper_Test.php b/modules/akismet/tests/Akismet_Helper_Test.php
index 745b455c..d8605d5c 100644
--- a/modules/akismet/tests/Akismet_Helper_Test.php
+++ b/modules/akismet/tests/Akismet_Helper_Test.php
@@ -22,7 +22,7 @@ class Akismet_Helper_Test extends Unit_Test_Case {
public function setup() {
Input::instance()->ip_address = "1.1.1.1";
- Kohana::$user_agent = "Akismet_Helper_Test";
+ request::set_user_agent("Akismet_Helper_Test");
$root = ORM::factory("item", 1);
$this->_comment = comment::create(
diff --git a/modules/comment/controllers/admin_comments.php b/modules/comment/controllers/admin_comments.php
index 13532c4e..880c33a7 100644
--- a/modules/comment/controllers/admin_comments.php
+++ b/modules/comment/controllers/admin_comments.php
@@ -22,10 +22,11 @@ class Admin_Comments_Controller extends Admin_Controller {
public function index() {
// Get rid of old deleted/spam comments once in a while
- Database::instance()->query(
- "DELETE FROM {comments} " .
- "WHERE state IN ('deleted', 'spam') " .
- "AND unix_timestamp(now()) - updated > 86400 * 7");
+ db::build()
+ ->delete("comments")
+ ->where("state", "IN", array("deleted", "spam"))
+ ->where("updated", "<", "UNIX_TIMESTAMP() - 86400 * 7")
+ ->execute();
// Redirect to the appropriate queue
url::redirect("admin/comments/queue/unpublished");
@@ -48,8 +49,8 @@ class Admin_Comments_Controller extends Admin_Controller {
$view->content->menu = $this->_menu($view->content->counts);
$view->content->state = $state;
$view->content->comments = ORM::factory("comment")
- ->orderby("created", "DESC")
- ->where("state", $state)
+ ->order_by("created", "DESC")
+ ->where("state", "=", $state)
->limit(self::$items_per_page, ($page - 1) * self::$items_per_page)
->find_all();
$view->content->pager = new Pagination();
@@ -95,11 +96,12 @@ class Admin_Comments_Controller extends Admin_Controller {
$counts->published = 0;
$counts->spam = 0;
$counts->deleted = 0;
- foreach (Database::instance()
- ->select("state", "count(*) as c")
+ foreach (db::build()
+ ->select("state")
+ ->select(array("c" => 'COUNT("*")'))
->from("comments")
- ->groupby("state")
- ->get() as $row) {
+ ->group_by("state")
+ ->execute() as $row) {
$counts->{$row->state} = $row->c;
}
return $counts;
@@ -110,7 +112,7 @@ class Admin_Comments_Controller extends Admin_Controller {
$comment = ORM::factory("comment", $id);
$orig = clone $comment;
- if ($comment->loaded) {
+ if ($comment->loaded()) {
$comment->state = $state;
$comment->save();
}
@@ -120,7 +122,7 @@ class Admin_Comments_Controller extends Admin_Controller {
access::verify_csrf();
ORM::factory("comment")
- ->where("state", "spam")
+ ->where("state", "=", "spam")
->delete_all();
url::redirect("admin/comments/queue/spam");
}
diff --git a/modules/comment/helpers/comment_block.php b/modules/comment/helpers/comment_block.php
index 7cd5d429..ab86b90a 100644
--- a/modules/comment/helpers/comment_block.php
+++ b/modules/comment/helpers/comment_block.php
@@ -30,7 +30,7 @@ class comment_block_Core {
$block->title = t("Recent comments");
$block->content = new View("admin_block_recent_comments.html");
$block->content->comments =
- ORM::factory("comment")->orderby("created", "DESC")->limit(5)->find_all();
+ ORM::factory("comment")->order_by("created", "DESC")->limit(5)->find_all();
break;
}
diff --git a/modules/comment/helpers/comment_event.php b/modules/comment/helpers/comment_event.php
index a72102b9..43a30d70 100644
--- a/modules/comment/helpers/comment_event.php
+++ b/modules/comment/helpers/comment_event.php
@@ -19,29 +19,33 @@
*/
class comment_event_Core {
static function item_deleted($item) {
- Database::instance()->delete("comments", array("item_id" => $item->id));
+ db::build()
+ ->delete("comments")
+ ->where("item_id", "=", $item->id)
+ ->execute();
}
static function user_deleted($user) {
$guest = identity::guest();
- Database::instance()->from("comments")
- ->set(array("author_id" => $guest->id,
- "guest_email" => null,
- "guest_name" => "guest",
- "guest_url" => null))
- ->where(array("author_id" => $user->id))
- ->update();
+ db::build()
+ ->update("comments")
+ ->set("author_id", $guest->id)
+ ->set("guest_email", null)
+ ->set("guest_name", "guest")
+ ->set("guest_url", null)
+ ->where("author_id", "=", $user->id)
+ ->execute();
}
static function identity_provider_changed($old_provider, $new_provider) {
$guest = identity::guest();
- Database::instance()->from("comments")
- ->set(array("author_id" => $guest->id,
- "guest_email" => null,
- "guest_name" => "guest",
- "guest_url" => null))
- ->where("1 = 1")
- ->update();
+ db::build()
+ ->update("comments")
+ ->set("author_id", $guest->id)
+ ->set("guest_email", null)
+ ->set("guest_name", "guest")
+ ->set("guest_url", null)
+ ->execute();
}
static function admin_menu($menu, $theme) {
@@ -62,12 +66,11 @@ class comment_event_Core {
}
static function item_index_data($item, $data) {
- foreach (Database::instance()
+ foreach (db::build()
->select("text")
->from("comments")
- ->where("item_id", $item->id)
- ->get()
- ->as_array() as $row) {
+ ->where("item_id", "=", $item->id)
+ ->execute() as $row) {
$data[] = $row->text;
}
}
diff --git a/modules/comment/helpers/comment_rss.php b/modules/comment/helpers/comment_rss.php
index 3692a30d..77044884 100644
--- a/modules/comment/helpers/comment_rss.php
+++ b/modules/comment/helpers/comment_rss.php
@@ -35,11 +35,11 @@ class comment_rss_Core {
$comments = ORM::factory("comment")
->viewable()
- ->where("state", "published")
- ->orderby("created", "DESC");
+ ->where("state", "=", "published")
+ ->order_by("created", "DESC");
if ($feed_id == "item") {
- $comments->where("item_id", $id);
+ $comments->where("item_id", "=", $id);
}
$feed->view = "comment.mrss";
diff --git a/modules/comment/helpers/comment_theme.php b/modules/comment/helpers/comment_theme.php
index af0e1ca4..ebcc1c42 100644
--- a/modules/comment/helpers/comment_theme.php
+++ b/modules/comment/helpers/comment_theme.php
@@ -37,9 +37,9 @@ class comment_theme_Core {
$view = new View("comments.html");
$view->comments = ORM::factory("comment")
- ->where("item_id", $theme->item()->id)
- ->where("state", "published")
- ->orderby("created", "ASC")
+ ->where("item_id", "=", $theme->item()->id)
+ ->where("state", "=", "published")
+ ->order_by("created", "ASC")
->find_all();
$block->content = $view;
diff --git a/modules/comment/models/comment.php b/modules/comment/models/comment.php
index bb9b8833..59b85233 100644
--- a/modules/comment/models/comment.php
+++ b/modules/comment/models/comment.php
@@ -59,7 +59,7 @@ class Comment_Model extends ORM {
public function save() {
if (!empty($this->changed)) {
$this->updated = time();
- if (!$this->loaded && empty($this->created)) {
+ if (!$this->loaded() && empty($this->created)) {
$this->created = $this->updated;
$created = true;
}
diff --git a/modules/comment/tests/Comment_Event_Test.php b/modules/comment/tests/Comment_Event_Test.php
index f650cabf..ff7f1c26 100644
--- a/modules/comment/tests/Comment_Event_Test.php
+++ b/modules/comment/tests/Comment_Event_Test.php
@@ -27,6 +27,6 @@ class Comment_Event_Test extends Unit_Test_Case {
$album->delete();
$deleted_comment = ORM::factory("comment", $comment->id);
- $this->assert_false($deleted_comment->loaded);
+ $this->assert_false($deleted_comment->loaded());
}
}
diff --git a/modules/comment/tests/Comment_Helper_Test.php b/modules/comment/tests/Comment_Helper_Test.php
index 82b7ebd2..8e726869 100644
--- a/modules/comment/tests/Comment_Helper_Test.php
+++ b/modules/comment/tests/Comment_Helper_Test.php
@@ -23,7 +23,7 @@ class Comment_Helper_Test extends Unit_Test_Case {
public function setup() {
$this->_ip_address = Input::instance()->ip_address;
- $this->_user_agent = Kohana::$user_agent;
+ $this->_user_agent = request::user_agent();
$this->_save = $_SERVER;
$_SERVER["HTTP_ACCEPT"] = "HTTP_ACCEPT";
@@ -33,16 +33,17 @@ class Comment_Helper_Test extends Unit_Test_Case {
$_SERVER["HTTP_CONNECTION"] = "HTTP_CONNECTION";
$_SERVER["HTTP_HOST"] = "HTTP_HOST";
$_SERVER["HTTP_REFERER"] = "HTTP_REFERER";
- $_SERVER["HTTP_USER_AGENT"] = "HTTP_USER_AGENT";
$_SERVER["QUERY_STRING"] = "QUERY_STRING";
$_SERVER["REMOTE_ADDR"] = "REMOTE_ADDR";
$_SERVER["REMOTE_HOST"] = "REMOTE_HOST";
$_SERVER["REMOTE_PORT"] = "REMOTE_PORT";
+
+ request::set_user_agent("HTTP_USER_AGENT");
}
public function teardown() {
Input::instance()->ip_address = $this->_ip_address;
- Kohana::$user_agent = $this->_user_agent;
+ request::set_user_agent($this->_user_agent);
$_SERVER = $this->_save;
}
diff --git a/modules/comment/tests/Comment_Model_Test.php b/modules/comment/tests/Comment_Model_Test.php
index de19648d..aa91d6f2 100644
--- a/modules/comment/tests/Comment_Model_Test.php
+++ b/modules/comment/tests/Comment_Model_Test.php
@@ -29,12 +29,12 @@ class Comment_Model_Test extends Unit_Test_Case {
access::allow(identity::everybody(), "view", $album);
$this->assert_equal(
1,
- ORM::factory("comment")->viewable()->where("comments.id", $comment->id)->count_all());
+ ORM::factory("comment")->viewable()->where("comments.id", "=", $comment->id)->count_all());
// We can't see the comment when permissions are denied on the album
access::deny(identity::everybody(), "view", $album);
$this->assert_equal(
0,
- ORM::factory("comment")->viewable()->where("comments.id", $comment->id)->count_all());
+ ORM::factory("comment")->viewable()->where("comments.id", "=", $comment->id)->count_all());
}
}
diff --git a/modules/digibug/controllers/digibug.php b/modules/digibug/controllers/digibug.php
index 1bb2691b..6e6009db 100644
--- a/modules/digibug/controllers/digibug.php
+++ b/modules/digibug/controllers/digibug.php
@@ -55,13 +55,13 @@ class Digibug_Controller extends Controller {
print $v;
}
- public function print_proxy($type, $id) {
+ public function print_proxy($type, $uuid) {
// If its a request for the full size then make sure we are coming from an
// authorized address
if ($type == "full") {
- $remote_addr = ip2long($this->input->server("REMOTE_ADDR"));
+ $remote_addr = ip2long(Input::instance()->server("REMOTE_ADDR"));
if ($remote_addr === false) {
- Kohana::show_404();
+ throw new Kohana_404_Exception();
}
$config = Kohana::config("digibug");
@@ -76,18 +76,18 @@ class Digibug_Controller extends Controller {
}
}
if (!$authorized) {
- Kohana::show_404();
+ throw new Kohana_404_Exception();
}
}
- $proxy = ORM::factory("digibug_proxy", array("uuid" => $id));
- if (!$proxy->loaded || !$proxy->item->loaded) {
- Kohana::show_404();
+ $proxy = ORM::factory("digibug_proxy")->where("uuid", "=", $uuid)->find();
+ if (!$proxy->loaded() || !$proxy->item->loaded()) {
+ throw new Kohana_404_Exception();
}
$file = $type == "full" ? $proxy->item->file_path() : $proxy->item->thumb_path();
if (!file_exists($file)) {
- kohana::show_404();
+ throw new Kohana_404_Exception();
}
// We don't need to save the session for this request
@@ -115,9 +115,10 @@ class Digibug_Controller extends Controller {
}
private function _clean_expired() {
- Database::instance()->query(
- "DELETE FROM {digibug_proxies} " .
- "WHERE request_date <= (CURDATE() - INTERVAL 10 DAY) " .
- "LIMIT 20");
+ db::build()
+ ->delete("digibug_proxies")
+ ->where("request_date", "<=", new Database_Expression("(CURDATE() - INTERVAL 10 DAY)"))
+ ->limit(20)
+ ->execute();
}
} \ No newline at end of file
diff --git a/modules/digibug/models/digibug_proxy.php b/modules/digibug/models/digibug_proxy.php
index c76afdae..10949ed7 100644
--- a/modules/digibug/models/digibug_proxy.php
+++ b/modules/digibug/models/digibug_proxy.php
@@ -18,5 +18,5 @@
* Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
*/
class Digibug_Proxy_Model extends ORM {
- protected $has_one = array("item");
+ protected $belongs_to = array("item");
}
diff --git a/modules/digibug/tests/Digibug_Controller_Test.php b/modules/digibug/tests/Digibug_Controller_Test.php
index a56d58bb..015a270a 100644
--- a/modules/digibug/tests/Digibug_Controller_Test.php
+++ b/modules/digibug/tests/Digibug_Controller_Test.php
@@ -24,10 +24,6 @@ class Digibug_Controller_Test extends Unit_Test_Case {
public function teardown() {
$_SERVER = $this->_server;
-
- if ($this->_proxy) {
- $this->_proxy->delete();
- }
}
public function setup() {
diff --git a/modules/exif/helpers/exif.php b/modules/exif/helpers/exif.php
index 5ddd09d4..3baed177 100644
--- a/modules/exif/helpers/exif.php
+++ b/modules/exif/helpers/exif.php
@@ -39,7 +39,7 @@ class exif_Core {
if (function_exists("mb_detect_encoding") && mb_detect_encoding($value) != "UTF-8") {
$value = utf8_encode($value);
}
- $keys[$field] = utf8::clean($value);
+ $keys[$field] = Input::clean($value);
if ($field == "DateTime") {
$time = strtotime($value);
@@ -62,7 +62,7 @@ class exif_Core {
if (function_exists("mb_detect_encoding") && mb_detect_encoding($value) != "UTF-8") {
$value = utf8_encode($value);
}
- $keys[$keyword] = utf8::clean($value);
+ $keys[$keyword] = Input::clean($value);
if ($keyword == "Caption" && !$item->description) {
$item->description = $value;
@@ -73,8 +73,8 @@ class exif_Core {
}
$item->save();
- $record = ORM::factory("exif_record")->where("item_id", $item->id)->find();
- if (!$record->loaded) {
+ $record = ORM::factory("exif_record")->where("item_id", "=", $item->id)->find();
+ if (!$record->loaded()) {
$record->item_id = $item->id;
}
$record->data = serialize($keys);
@@ -86,9 +86,9 @@ class exif_Core {
static function get($item) {
$exif = array();
$record = ORM::factory("exif_record")
- ->where("item_id", $item->id)
+ ->where("item_id", "=", $item->id)
->find();
- if (!$record->loaded) {
+ if (!$record->loaded()) {
return array();
}
@@ -139,19 +139,19 @@ class exif_Core {
}
static function stats() {
- $missing_exif = Database::instance()
+ $missing_exif = db::build()
->select("items.id")
->from("items")
->join("exif_records", "items.id", "exif_records.item_id", "left")
- ->where("type", "photo")
- ->open_paren()
- ->where("exif_records.item_id", null)
- ->orwhere("exif_records.dirty", 1)
- ->close_paren()
- ->get()
+ ->where("type", "=", "photo")
+ ->and_open()
+ ->where("exif_records.item_id", "IS", null)
+ ->or_where("exif_records.dirty", "=", 1)
+ ->close()
+ ->execute()
->count();
- $total_items = ORM::factory("item")->where("type", "photo")->count_all();
+ $total_items = ORM::factory("item")->where("type", "=", "photo")->count_all();
if (!$total_items) {
return array(0, 0, 0);
}
diff --git a/modules/exif/helpers/exif_event.php b/modules/exif/helpers/exif_event.php
index 826ec959..6490d11f 100644
--- a/modules/exif/helpers/exif_event.php
+++ b/modules/exif/helpers/exif_event.php
@@ -25,6 +25,9 @@ class exif_event_Core {
}
static function item_deleted($item) {
- Database::instance()->delete("exif_records", array("item_id" => $item->id));
+ db::build()
+ ->delete("exif_records")
+ ->where("item_id", "=", $item->id)
+ ->execute();
}
}
diff --git a/modules/exif/helpers/exif_task.php b/modules/exif/helpers/exif_task.php
index 7c4c97c4..27352643 100644
--- a/modules/exif/helpers/exif_task.php
+++ b/modules/exif/helpers/exif_task.php
@@ -20,10 +20,11 @@
class exif_task_Core {
static function available_tasks() {
// Delete extra exif_records
- Database::instance()->query(
- "DELETE FROM {exif_records} " .
- "WHERE {exif_records}.`item_id` NOT IN " .
- "(SELECT `id` FROM {items} WHERE {items}.`type` = 'photo')");
+ db::build()
+ ->delete("exif_records")
+ ->where("item_id", "NOT IN",
+ db::build()->select("id")->from("items")->where("type", "=", "photo"))
+ ->execute();
list ($remaining, $total, $percent) = exif::stats();
return array(Task_Definition::factory()
@@ -44,11 +45,11 @@ class exif_task_Core {
$start = microtime(true);
foreach (ORM::factory("item")
->join("exif_records", "items.id", "exif_records.item_id", "left")
- ->where("type", "photo")
- ->open_paren()
- ->where("exif_records.item_id", null)
- ->orwhere("exif_records.dirty", 1)
- ->close_paren()
+ ->where("type", "=", "photo")
+ ->and_open()
+ ->where("exif_records.item_id", "IS", null)
+ ->or_where("exif_records.dirty", "=", 1)
+ ->close()
->find_all() as $item) {
// The query above can take a long time, so start the timer after its done
// to give ourselves a little time to actually process rows.
diff --git a/modules/exif/helpers/exif_theme.php b/modules/exif/helpers/exif_theme.php
index bb6926d3..23dc95c2 100644
--- a/modules/exif/helpers/exif_theme.php
+++ b/modules/exif/helpers/exif_theme.php
@@ -21,11 +21,11 @@ class exif_theme_Core {
static function sidebar_bottom($theme) {
$item = $theme->item();
if ($item && $item->is_photo()) {
- $record = Database::instance()
+ $record = db::build()
->select("key_count")
->from("exif_records")
- ->where("item_id", $item->id)
- ->get()
+ ->where("item_id", "=", $item->id)
+ ->execute()
->current();
if ($record && $record->key_count) {
$view = new View("exif_sidebar.html");
diff --git a/modules/forge/libraries/Forge.php b/modules/forge/libraries/Forge.php
index d9da4c7d..5807c849 100644
--- a/modules/forge/libraries/Forge.php
+++ b/modules/forge/libraries/Forge.php
@@ -277,7 +277,8 @@ class Forge_Core {
{
foreach ($this->hidden as $input)
{
- $hidden[$input->name] = $input->value;
+ $hidden['name'] = $input->name;
+ $hidden['value'] = $input->value;
}
}
@@ -299,7 +300,7 @@ class Forge_Core {
// Set the form open and close
$form->open = form::$form_type(arr::remove('action', $this->attr), $this->attr, $hidden);
- $form->close = form::close();
+ $form->close = "</form>";
// Set the inputs
$form->inputs = $this->inputs;
diff --git a/modules/forge/libraries/Form_Input.php b/modules/forge/libraries/Form_Input.php
index 30311941..0c578011 100644
--- a/modules/forge/libraries/Form_Input.php
+++ b/modules/forge/libraries/Form_Input.php
@@ -317,7 +317,7 @@ class Form_Input_Core {
$args = is_array($args) ? $args : array();
// Add the label or name to the beginning of the args
- array_unshift($args, $this->label ? utf8::strtolower($this->label) : $this->name);
+ array_unshift($args, $this->label ? mb_strtolower($this->label) : $this->name);
if (isset($this->error_messages[$func]))
{
@@ -333,7 +333,7 @@ class Form_Input_Core {
case 'valid_email':
case 'valid_ip':
// Fetch an i18n error message
- $error = Kohana::lang('validation.'.$func, $args);
+ $error = 'validation.'.$func;
break;
case substr($func, 0, 6) === 'valid_':
// Strip 'valid_' from func name
@@ -343,11 +343,11 @@ class Form_Input_Core {
case 'digit':
case 'numeric':
// i18n strings have to be inserted into valid_type
- $args[] = Kohana::lang('validation.'.$func);
- $error = Kohana::lang('validation.valid_type', $args);
+ $args[] = 'validation.'.$func;
+ $error = 'validation.valid_type';
break;
default:
- $error = Kohana::lang('validation.'.$func, $args);
+ $error = 'validation.'.$func;
}
}
}
@@ -490,7 +490,7 @@ class Form_Input_Core {
if ($this->value != $input->value)
{
// Field does not match
- $this->errors['matches'] = array($input->label ? utf8::strtolower($input->label) : $input->name);
+ $this->errors['matches'] = array($input->label ? mb_strtolower($input->label) : $input->name);
break;
}
}
@@ -529,7 +529,7 @@ class Form_Input_Core {
protected function rule_length($min, $max = NULL)
{
// Get the length, return if zero
- if (($length = utf8::strlen($this->value)) === 0)
+ if (($length = mb_strlen($this->value)) === 0)
return;
if ($max == NULL)
diff --git a/modules/g2_import/helpers/g2_import.php b/modules/g2_import/helpers/g2_import.php
index 202a0e92..a7a69746 100644
--- a/modules/g2_import/helpers/g2_import.php
+++ b/modules/g2_import/helpers/g2_import.php
@@ -458,7 +458,7 @@ class g2_import_Core {
switch ($g2_type) {
case "GalleryPhotoItem":
if (!in_array($g2_item->getMimeType(), array("image/jpeg", "image/gif", "image/png"))) {
- Kohana::log("alert", "$g2_path is an unsupported image type; using a placeholder gif");
+ Kohana_Log::add("alert", "$g2_path is an unsupported image type; using a placeholder gif");
$message[] = t("'%path' is an unsupported image type, using a placeholder",
array("path" => $g2_path));
$g2_path = MODPATH . "g2_import/data/broken-image.gif";
@@ -473,7 +473,7 @@ class g2_import_Core {
self::_decode_html_special_chars(self::extract_description($g2_item)),
self::map($g2_item->getOwnerId()));
} catch (Exception $e) {
- Kohana::log(
+ Kohana_Log::add(
"alert", "Corrupt image $g2_path\n" . $e->__toString());
$message[] = t("Corrupt image '%path'", array("path" => $g2_path));
$message[] = $e->__toString();
@@ -493,13 +493,13 @@ class g2_import_Core {
self::_decode_html_special_chars(self::extract_description($g2_item)),
self::map($g2_item->getOwnerId()));
} catch (Exception $e) {
- Kohana::log("alert", "Corrupt movie $g2_path\n" . $e->__toString());
+ Kohana_Log::add("alert", "Corrupt movie $g2_path\n" . $e->__toString());
$message[] = t("Corrupt movie '%path'", array("path" => $g2_path));
$message[] = $e->__toString();
$corrupt = 1;
}
} else {
- Kohana::log("alert", "$g2_path is an unsupported movie type");
+ Kohana_Log::add("alert", "$g2_path is an unsupported movie type");
$message[] = t("'%path' is an unsupported movie type", array("path" => $g2_path));
$corrupt = 1;
}
@@ -611,11 +611,9 @@ class g2_import_Core {
array("id" => $g2_item_id, "exception" => $e->__toString()));
}
- $tags = "";
// Multiword tags have the space changed to dots.s
foreach ($tag_names as $tag_name) {
- $tags .= (strlen($tags) ? ", " : "") .
- tag::add($g3_item, $tag_name);
+ tag::add($g3_item, $tag_name);
}
// Tag operations are idempotent so we don't need to map them. Which is good because we don't
@@ -634,11 +632,10 @@ class g2_import_Core {
$delim = " ";
}
- $tags = "";
foreach (preg_split("/$delim/", $keywords) as $keyword) {
$keyword = trim($keyword);
if ($keyword) {
- $tags .= (strlen($tags) ? ", " : "") . tag::add($item, $keyword);
+ tag::add($item, $keyword);
}
}
}
@@ -867,8 +864,8 @@ class g2_import_Core {
*/
static function map($g2_id) {
if (!array_key_exists($g2_id, self::$map)) {
- $g2_map = ORM::factory("g2_map")->where("g2_id", $g2_id)->find();
- self::$map[$g2_id] = $g2_map->loaded ? $g2_map->g3_id : null;
+ $g2_map = ORM::factory("g2_map")->where("g2_id", "=", $g2_id)->find();
+ self::$map[$g2_id] = $g2_map->loaded() ? $g2_map->g3_id : null;
}
return self::$map[$g2_id];
@@ -887,7 +884,7 @@ class g2_import_Core {
static function log($msg) {
message::warning($msg);
- Kohana::log("alert", $msg);
+ Kohana_Log::add("alert", $msg);
}
}
@@ -906,7 +903,7 @@ function g2() {
$args = func_get_arg(0);
$ret = array_shift($args);
if ($ret) {
- Kohana::log("error", "Gallery 2 call failed with: " . $ret->getAsText());
+ Kohana_Log::add("error", "Gallery 2 call failed with: " . $ret->getAsText());
throw new Exception("@todo G2_FUNCTION_FAILED");
}
if (count($args) == 1) {
diff --git a/modules/g2_import/helpers/g2_import_event.php b/modules/g2_import/helpers/g2_import_event.php
index 609e1a45..02a2126d 100644
--- a/modules/g2_import/helpers/g2_import_event.php
+++ b/modules/g2_import/helpers/g2_import_event.php
@@ -19,7 +19,10 @@
*/
class g2_import_event_Core {
static function item_deleted($item) {
- Database::instance()->delete("g2_maps", array("g3_id" => $item->id));
+ db::build()
+ ->delete("g2_maps")
+ ->where("g3_id", "=", $item->id)
+ ->execute();
}
static function item_created($item) {
diff --git a/modules/g2_import/helpers/g2_import_task.php b/modules/g2_import/helpers/g2_import_task.php
index 47a205bd..e80b88b9 100644
--- a/modules/g2_import/helpers/g2_import_task.php
+++ b/modules/g2_import/helpers/g2_import_task.php
@@ -65,8 +65,8 @@ class g2_import_task_Core {
$task->set("done", $done);
$root_g2_id = g2(GalleryCoreApi::getDefaultAlbumId());
- $root = ORM::factory("g2_map")->where("g2_id", $root_g2_id)->find();
- if (!$root->loaded) {
+ $root = ORM::factory("g2_map")->where("g2_id", "=", $root_g2_id)->find();
+ if (!$root->loaded()) {
$root->g2_id = $root_g2_id;
$root->g3_id = 1;
$root->save();
diff --git a/modules/gallery/config/cache.php b/modules/gallery/config/cache.php
index cc3ac87d..d9a27c96 100644
--- a/modules/gallery/config/cache.php
+++ b/modules/gallery/config/cache.php
@@ -45,5 +45,6 @@ $config["default"] = array (
"driver" => "database",
"params" => null,
"lifetime" => 84600,
- "requests" => 1000
+ "requests" => 1000,
+ "prefix" => null,
);
diff --git a/modules/gallery/config/log_file.php b/modules/gallery/config/log_file.php
new file mode 100644
index 00000000..827a5d80
--- /dev/null
+++ b/modules/gallery/config/log_file.php
@@ -0,0 +1,29 @@
+<?php defined("SYSPATH") or die("No direct script access.");
+/**
+ * Gallery - a web based photo album viewer and editor
+ * Copyright (C) 2000-2009 Bharat Mediratta
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or (at
+ * your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+
+/**
+ * Message logging directory.
+ */
+$config['log_directory'] = VARPATH.'logs';
+
+/**
+ * Permissions of the log file
+ */
+$config['posix_permissions'] = 0644; \ No newline at end of file
diff --git a/modules/gallery/controllers/admin.php b/modules/gallery/controllers/admin.php
index 98cac557..e4216991 100644
--- a/modules/gallery/controllers/admin.php
+++ b/modules/gallery/controllers/admin.php
@@ -44,7 +44,7 @@ class Admin_Controller extends Controller {
}
if (!method_exists($controller_name, $method)) {
- return kohana::show_404();
+ throw new Kohana_404_Exception();
}
call_user_func_array(array(new $controller_name, $method), $args);
diff --git a/modules/gallery/controllers/admin_advanced_settings.php b/modules/gallery/controllers/admin_advanced_settings.php
index 79bc1183..391d2598 100644
--- a/modules/gallery/controllers/admin_advanced_settings.php
+++ b/modules/gallery/controllers/admin_advanced_settings.php
@@ -22,7 +22,8 @@ class Admin_Advanced_Settings_Controller extends Admin_Controller {
$view = new Admin_View("admin.html");
$view->content = new View("admin_advanced_settings.html");
$view->content->vars = ORM::factory("var")
- ->orderby("module_name", "name")
+ ->order_by("module_name")
+ ->order_by("name")
->find_all();
print $view;
}
diff --git a/modules/gallery/controllers/admin_dashboard.php b/modules/gallery/controllers/admin_dashboard.php
index 7e28f625..5f2cb41d 100644
--- a/modules/gallery/controllers/admin_dashboard.php
+++ b/modules/gallery/controllers/admin_dashboard.php
@@ -86,7 +86,7 @@ class Admin_Dashboard_Controller extends Admin_Controller {
foreach (array("dashboard_sidebar", "dashboard_center") as $location) {
$new_blocks = array();
- foreach ($this->input->get($location, array()) as $id) {
+ foreach (Input::instance()->get($location, array()) as $id) {
$new_blocks[$id] = $active_set[$id];
}
block_manager::set_active($location, $new_blocks);
diff --git a/modules/gallery/controllers/admin_identity.php b/modules/gallery/controllers/admin_identity.php
index acf71665..354e6c0c 100644
--- a/modules/gallery/controllers/admin_identity.php
+++ b/modules/gallery/controllers/admin_identity.php
@@ -30,7 +30,7 @@ class Admin_Identity_Controller extends Admin_Controller {
access::verify_csrf();
$v = new View("admin_identity_confirm.html");
- $v->new_provider = $this->input->post("provider");
+ $v->new_provider = Input::instance()->post("provider");
print $v;
}
@@ -40,7 +40,7 @@ class Admin_Identity_Controller extends Admin_Controller {
$active_provider = module::get_var("gallery", "identity_provider", "user");
$providers = identity::providers();
- $new_provider = $this->input->post("provider");
+ $new_provider = Input::instance()->post("provider");
if ($new_provider != $active_provider) {
diff --git a/modules/gallery/controllers/admin_languages.php b/modules/gallery/controllers/admin_languages.php
index 27537c7f..41523023 100644
--- a/modules/gallery/controllers/admin_languages.php
+++ b/modules/gallery/controllers/admin_languages.php
@@ -36,10 +36,11 @@ class Admin_Languages_Controller extends Admin_Controller {
public function save() {
access::verify_csrf();
- locales::update_installed($this->input->post("installed_locales"));
+ $input = Input::instance();
+ locales::update_installed($input->post("installed_locales"));
$installed_locales = array_keys(locales::installed());
- $new_default_locale = $this->input->post("default_locale");
+ $new_default_locale = $input->post("default_locale");
if (!in_array($new_default_locale, $installed_locales)) {
if (!empty($installed_locales)) {
$new_default_locale = $installed_locales[0];
@@ -61,7 +62,7 @@ class Admin_Languages_Controller extends Admin_Controller {
return $this->index($form);
}
- if ($this->input->post("share")) {
+ if (Input::instance()->post("share")) {
l10n_client::submit_translations();
message::success(t("Translations submitted"));
} else {
diff --git a/modules/gallery/controllers/admin_maintenance.php b/modules/gallery/controllers/admin_maintenance.php
index 66bcce55..213e4fe2 100644
--- a/modules/gallery/controllers/admin_maintenance.php
+++ b/modules/gallery/controllers/admin_maintenance.php
@@ -22,11 +22,13 @@ class Admin_Maintenance_Controller extends Admin_Controller {
* Show a list of all available, running and finished tasks.
*/
public function index() {
- $query = Database::instance()->query(
- "UPDATE {tasks} SET `state` = 'stalled' " .
- "WHERE done = 0 " .
- "AND state <> 'stalled' " .
- "AND unix_timestamp(now()) - updated > 15");
+ $query = db::build()
+ ->update("tasks")
+ ->set("state", "stalled")
+ ->where("done", "=", 0)
+ ->where("state", "<>", "stalled")
+ ->where(new Database_Expression("UNIX_TIMESTAMP(NOW()) - `updated` > 15"))
+ ->execute();
$stalled_count = $query->count();
if ($stalled_count) {
log::warning("tasks",
@@ -41,9 +43,9 @@ class Admin_Maintenance_Controller extends Admin_Controller {
$view->content = new View("admin_maintenance.html");
$view->content->task_definitions = task::get_definitions();
$view->content->running_tasks = ORM::factory("task")
- ->where("done", 0)->orderby("updated", "DESC")->find_all();
+ ->where("done", "=", 0)->order_by("updated", "DESC")->find_all();
$view->content->finished_tasks = ORM::factory("task")
- ->where("done", 1)->orderby("updated", "DESC")->find_all();
+ ->where("done", "=", 1)->order_by("updated", "DESC")->find_all();
print $view;
}
@@ -75,7 +77,7 @@ class Admin_Maintenance_Controller extends Admin_Controller {
access::verify_csrf();
$task = ORM::factory("task", $task_id);
- if (!$task->loaded) {
+ if (!$task->loaded()) {
throw new Exception("@todo MISSING_TASK");
}
$view = new View("admin_maintenance_task.html");
@@ -97,7 +99,7 @@ class Admin_Maintenance_Controller extends Admin_Controller {
access::verify_csrf();
$task = ORM::factory("task", $task_id);
- if (!$task->loaded) {
+ if (!$task->loaded()) {
throw new Exception("@todo MISSING_TASK");
}
$view = new View("admin_maintenance_show_log.html");
@@ -114,7 +116,7 @@ class Admin_Maintenance_Controller extends Admin_Controller {
access::verify_csrf();
$task = ORM::factory("task", $task_id);
- if (!$task->loaded) {
+ if (!$task->loaded()) {
throw new Exception("@todo MISSING_TASK");
}
@@ -138,10 +140,12 @@ class Admin_Maintenance_Controller extends Admin_Controller {
public function cancel_running_tasks() {
access::verify_csrf();
- Database::instance()->update(
- "tasks",
- array("done" => 1, "state" => "cancelled"),
- array("done" => 0));
+ db::build()
+ ->update("tasks")
+ ->set("done", 1)
+ ->set("state", "cancelled")
+ ->where("done", "=", 0)
+ ->execute();
message::success(t("All running tasks cancelled"));
url::redirect("admin/maintenance");
}
@@ -164,7 +168,7 @@ class Admin_Maintenance_Controller extends Admin_Controller {
// Do it the long way so we can call delete and remove the cache.
$finished = ORM::factory("task")
- ->where(array("done" => 1))
+ ->where("done", "=", 1)
->find_all();
foreach ($finished as $task) {
task::remove($task->id);
@@ -184,7 +188,7 @@ class Admin_Maintenance_Controller extends Admin_Controller {
try {
$task = task::run($task_id);
} catch (Exception $e) {
- Kohana::log(
+ Kohana_Log::add(
"error",
sprintf(
"%s in %s at line %s:\n%s", $e->getMessage(), $e->getFile(),
diff --git a/modules/gallery/controllers/admin_modules.php b/modules/gallery/controllers/admin_modules.php
index af6dbbdc..549718e7 100644
--- a/modules/gallery/controllers/admin_modules.php
+++ b/modules/gallery/controllers/admin_modules.php
@@ -37,7 +37,7 @@ class Admin_Modules_Controller extends Admin_Controller {
continue;
}
- $desired = $this->input->post($module_name) == 1;
+ $desired = Input::instance()->post($module_name) == 1;
if ($info->active && !$desired && module::is_active($module_name)) {
$changes->deactivate[] = $module_name;
$deactivated_names[] = t($info->name);
diff --git a/modules/gallery/controllers/admin_sidebar.php b/modules/gallery/controllers/admin_sidebar.php
index 77e83bc2..4c55bf89 100644
--- a/modules/gallery/controllers/admin_sidebar.php
+++ b/modules/gallery/controllers/admin_sidebar.php
@@ -34,7 +34,7 @@ class Admin_Sidebar_Controller extends Admin_Controller {
$available_blocks = block_manager::get_available_site_blocks();
$active_blocks = array();
- foreach ($this->input->get("block", array()) as $block_id) {
+ foreach (Input::instance()->get("block", array()) as $block_id) {
$active_blocks[md5($block_id)] = explode(":", (string) $block_id);
}
block_manager::set_active("site_sidebar", $active_blocks);
diff --git a/modules/gallery/controllers/albums.php b/modules/gallery/controllers/albums.php
index feaea76d..fde5c02d 100644
--- a/modules/gallery/controllers/albums.php
+++ b/modules/gallery/controllers/albums.php
@@ -42,7 +42,8 @@ class Albums_Controller extends Items_Controller {
}
}
- $show = $this->input->get("show");
+ $input = Input::instance();
+ $show = $input->get("show");
if ($show) {
$child = ORM::factory("item", $show);
@@ -57,7 +58,7 @@ class Albums_Controller extends Items_Controller {
}
}
- $page = $this->input->get("page", "1");
+ $page = $input->get("page", "1");
$children_count = $album->viewable()->children_count();
$offset = ($page - 1) * $page_size;
$max_pages = max(ceil($children_count / $page_size), 1);
@@ -71,6 +72,7 @@ class Albums_Controller extends Items_Controller {
$template = new Theme_View("page.html", "collection", "album");
$template->set_global("page", $page);
+ $template->set_global("page_title", null);
$template->set_global("max_pages", $max_pages);
$template->set_global("page_size", $page_size);
$template->set_global("item", $album);
@@ -81,7 +83,7 @@ class Albums_Controller extends Items_Controller {
// We can't use math in ORM or the query builder, so do this by hand. It's important
// that we do this with math, otherwise concurrent accesses will damage accuracy.
- Database::instance()->query(
+ db::query(
"UPDATE {items} SET `view_count` = `view_count` + 1 WHERE `id` = $album->id");
print $template;
@@ -93,15 +95,16 @@ class Albums_Controller extends Items_Controller {
access::required("view", $album);
access::required("add", $album);
+ $input = Input::instance();
$form = album::get_add_form($album);
if ($form->validate()) {
$new_album = album::create(
$album,
- $this->input->post("name"),
- $this->input->post("title", $this->input->post("name")),
- $this->input->post("description"),
+ $input->post("name"),
+ $input->post("title", $input->post("name")),
+ $input->post("description"),
identity::active_user()->id,
- $this->input->post("slug"));
+ $input->post("slug"));
log::success("content", "Created an album",
html::anchor("albums/$new_album->id", "view album"));
diff --git a/modules/gallery/controllers/combined.php b/modules/gallery/controllers/combined.php
index c1f42bfe..e90a2f1a 100644
--- a/modules/gallery/controllers/combined.php
+++ b/modules/gallery/controllers/combined.php
@@ -22,7 +22,6 @@ class Combined_Controller extends Controller {
* Return the combined Javascript bundle associated with the given key.
*/
public function javascript($key) {
- $key = substr($key, 0, strlen($key) - 3); // strip off the trailing .js
return $this->_emit("javascript", $key);
}
@@ -30,7 +29,6 @@ class Combined_Controller extends Controller {
* Return the combined CSS bundle associated with the given key.
*/
public function css($key) {
- $key = substr($key, 0, strlen($key) - 4); // strip off the trailing .css
return $this->_emit("css", $key);
}
@@ -56,7 +54,7 @@ class Combined_Controller extends Controller {
}
if (empty($key)) {
- Kohana::show_404();
+ throw new Kohana_404_Exception();
}
$cache = Cache::instance();
@@ -71,7 +69,7 @@ class Combined_Controller extends Controller {
$content = $cache->get($key);
}
if (empty($content)) {
- Kohana::show_404();
+ throw new Kohana_404_Exception();
}
// $type is either 'javascript' or 'css'
diff --git a/modules/gallery/controllers/file_proxy.php b/modules/gallery/controllers/file_proxy.php
index 8fde1132..65c0cb50 100644
--- a/modules/gallery/controllers/file_proxy.php
+++ b/modules/gallery/controllers/file_proxy.php
@@ -29,7 +29,7 @@
class File_Proxy_Controller extends Controller {
public function __call($function, $args) {
// request_uri: http://example.com/gallery3/var/trunk/albums/foo/bar.jpg
- $request_uri = $this->input->server("REQUEST_URI");
+ $request_uri = Input::instance()->server("REQUEST_URI");
$request_uri = preg_replace("/\?.*/", "", $request_uri);
// var_uri: http://example.com/gallery3/var/
@@ -38,27 +38,27 @@ class File_Proxy_Controller extends Controller {
// Make sure that the request is for a file inside var
$offset = strpos($request_uri, $var_uri);
if ($offset === false) {
- kohana::show_404();
+ throw new Kohana_404_Exception();
}
$file_uri = substr($request_uri, strlen($var_uri));
// Make sure that we don't leave the var dir
if (strpos($file_uri, "..") !== false) {
- kohana::show_404();
+ throw new Kohana_404_Exception();
}
list ($type, $path) = explode("/", $file_uri, 2);
if ($type != "resizes" && $type != "albums" && $type != "thumbs") {
- kohana::show_404();
+ throw new Kohana_404_Exception();
}
// If the last element is .album.jpg, pop that off since it's not a real item
$path = preg_replace("|/.album.jpg$|", "", $path);
// 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) {
+ $item = ORM::factory("item")->where("relative_path_cache", "=", $path)->find();
+ if (!$item->loaded()) {
// We didn't turn it up. It's possible that the relative_path_cache is out of date here.
// There was fallback code, but bharat deleted it in 8f1bca74. If it turns out to be
// necessary, it's easily resurrected.
@@ -69,16 +69,16 @@ class File_Proxy_Controller extends Controller {
if (preg_match('/.jpg$/', $path)) {
foreach (array("flv", "mp4") as $ext) {
$movie_path = preg_replace('/.jpg$/', ".$ext", $path);
- $item = ORM::factory("item")->where("relative_path_cache", $movie_path)->find();
- if ($item->loaded) {
+ $item = ORM::factory("item")->where("relative_path_cache", "=", $movie_path)->find();
+ if ($item->loaded()) {
break;
}
}
}
}
- if (!$item->loaded) {
- kohana::show_404();
+ if (!$item->loaded()) {
+ throw new Kohana_404_Exception();
}
if ($type == "albums") {
@@ -91,21 +91,21 @@ class File_Proxy_Controller extends Controller {
// Make sure we have access to the item
if (!access::can("view", $item)) {
- kohana::show_404();
+ throw new Kohana_404_Exception();
}
// Make sure we have view_full access to the original
if ($type == "albums" && !access::can("view_full", $item)) {
- kohana::show_404();
+ throw new Kohana_404_Exception();
}
// Don't try to load a directory
if ($type == "albums" && $item->is_album()) {
- kohana::show_404();
+ throw new Kohana_404_Exception();
}
if (!file_exists($file)) {
- kohana::show_404();
+ throw new Kohana_404_Exception();
}
// We don't need to save the session for this request
diff --git a/modules/gallery/controllers/items.php b/modules/gallery/controllers/items.php
index b350c5a2..f261e3a9 100644
--- a/modules/gallery/controllers/items.php
+++ b/modules/gallery/controllers/items.php
@@ -20,8 +20,8 @@
class Items_Controller extends Controller {
public function __call($function, $args) {
$item = ORM::factory("item", (int)$function);
- if (!$item->loaded) {
- return Kohana::show_404();
+ if (!$item->loaded()) {
+ throw new Kohana_404_Exception();
}
// Redirect to the more specific resource type, since it will render
diff --git a/modules/gallery/controllers/l10n_client.php b/modules/gallery/controllers/l10n_client.php
index 6db67d3b..71df1cf1 100644
--- a/modules/gallery/controllers/l10n_client.php
+++ b/modules/gallery/controllers/l10n_client.php
@@ -24,7 +24,7 @@ class L10n_Client_Controller extends Controller {
access::forbidden();
}
- $locale = I18n::instance()->locale();
+ $locale = Gallery_I18n::instance()->locale();
$input = Input::instance();
$key = $input->post("l10n-message-key");
@@ -33,10 +33,10 @@ class L10n_Client_Controller extends Controller {
"locale" => "root"))
->find();
- if (!$root_message->loaded) {
+ if (!$root_message->loaded()) {
throw new Exception("@todo bad request data / illegal state");
}
- $is_plural = I18n::is_plural_message(unserialize($root_message->message));
+ $is_plural = Gallery_I18n::is_plural_message(unserialize($root_message->message));
if ($is_plural) {
$plural_forms = l10n_client::plural_forms($locale);
@@ -60,7 +60,7 @@ class L10n_Client_Controller extends Controller {
"locale" => $locale))
->find();
- if (!$entry->loaded) {
+ if (!$entry->loaded()) {
$entry->key = $key;
$entry->locale = $locale;
$entry->message = $root_message->message;
@@ -74,7 +74,7 @@ class L10n_Client_Controller extends Controller {
"locale" => $locale))
->find();
- if (!$entry_from_incoming->loaded) {
+ if (!$entry_from_incoming->loaded()) {
$entry->base_revision = $entry_from_incoming->revision;
}
@@ -113,36 +113,33 @@ class L10n_Client_Controller extends Controller {
public static function l10n_form() {
if (Input::instance()->get("show_all_l10n_messages")) {
$calls = array();
- foreach (Database::instance()
+ foreach (db::build()
->select("key", "message")
->from("incoming_translations")
- ->where(array("locale" => 'root'))
- ->get()
- ->as_array() as $row) {
+ ->where("locale", "=", "root")
+ ->execute() as $row) {
$calls[$row->key] = array(unserialize($row->message), array());
}
} else {
- $calls = I18n::instance()->call_log();
+ $calls = Gallery_I18n::instance()->call_log();
}
- $locale = I18n::instance()->locale();
+ $locale = Gallery_I18n::instance()->locale();
if ($calls) {
$translations = array();
- foreach (Database::instance()
+ foreach (db::build()
->select("key", "translation")
->from("incoming_translations")
- ->where(array("locale" => $locale))
- ->get()
- ->as_array() as $row) {
+ ->where("locale", "=", $locale)
+ ->execute() as $row) {
$translations[$row->key] = unserialize($row->translation);
}
// Override incoming with outgoing...
- foreach (Database::instance()
+ foreach (db::build()
->select("key", "translation")
->from("outgoing_translations")
- ->where(array("locale" => $locale))
- ->get()
- ->as_array() as $row) {
+ ->where("locale", "=", $locale)
+ ->execute() as $row) {
$translations[$row->key] = unserialize($row->translation);
}
diff --git a/modules/gallery/controllers/logout.php b/modules/gallery/controllers/logout.php
index 2b93655d..fe9c48ba 100644
--- a/modules/gallery/controllers/logout.php
+++ b/modules/gallery/controllers/logout.php
@@ -20,7 +20,7 @@
class Logout_Controller extends Controller {
public function index() {
auth::logout();
- if ($continue_url = $this->input->get("continue")) {
+ if ($continue_url = Input::instance()->get("continue")) {
$item = url::get_item_from_uri($continue_url);
if (access::can("view", $item)) {
// Don't use url::redirect() because it'll call url::site() and munge the continue url.
diff --git a/modules/gallery/controllers/move.php b/modules/gallery/controllers/move.php
index 87b73436..14513fdc 100644
--- a/modules/gallery/controllers/move.php
+++ b/modules/gallery/controllers/move.php
@@ -32,7 +32,7 @@ class Move_Controller extends Controller {
public function save($source_id) {
access::verify_csrf();
$source = ORM::factory("item", $source_id);
- $target = ORM::factory("item", $this->input->post("target_id"));
+ $target = ORM::factory("item", Input::instance()->post("target_id"));
access::required("view", $source);
access::required("edit", $source);
@@ -64,8 +64,8 @@ class Move_Controller extends Controller {
$view->parent = $target;
$view->children = ORM::factory("item")
->viewable()
- ->where("type", "album")
- ->where("parent_id", $target->id)
+ ->where("type", "=", "album")
+ ->where("parent_id", "=", $target->id)
->find_all();
return $view;
}
diff --git a/modules/gallery/controllers/movies.php b/modules/gallery/controllers/movies.php
index 4e0916b3..2d429910 100644
--- a/modules/gallery/controllers/movies.php
+++ b/modules/gallery/controllers/movies.php
@@ -26,7 +26,7 @@ class Movies_Controller extends Items_Controller {
}
access::required("view", $movie);
- $where = array("type != " => "album");
+ $where = array(array("type", "!=", "album"));
$position = $movie->parent()->get_position($movie, $where);
if ($position > 1) {
list ($previous_item, $ignore, $next_item) =
diff --git a/modules/gallery/controllers/packager.php b/modules/gallery/controllers/packager.php
index 1354a01b..2592da31 100644
--- a/modules/gallery/controllers/packager.php
+++ b/modules/gallery/controllers/packager.php
@@ -30,7 +30,7 @@ class Packager_Controller extends Controller {
$this->_dump_database(); // Dump the database
$this->_dump_var(); // Dump the var directory
} catch (Exception $e) {
- print $e->getTraceAsString();
+ print $e->getMessage() . "\n" . $e->getTraceAsString();
return;
}
@@ -38,11 +38,9 @@ class Packager_Controller extends Controller {
}
private function _reset() {
- $db = Database::instance();
-
// Drop all tables
- foreach ($db->list_tables() as $table) {
- $db->query("DROP TABLE IF EXISTS `$table`");
+ foreach (Database::instance()->list_tables() as $table) {
+ Database::instance()->query("DROP TABLE IF EXISTS {{$table}}");
}
// Clean out data
@@ -53,7 +51,7 @@ class Packager_Controller extends Controller {
dir::unlink(VARPATH . "modules");
dir::unlink(VARPATH . "tmp");
- $db->clear_cache();
+ Database::instance()->clear_cache();
module::$modules = array();
module::$active = array();
@@ -84,12 +82,15 @@ class Packager_Controller extends Controller {
module::set_var("gallery", "blocks_{$key}", serialize($blocks));
}
- $db = Database::instance();
- $db->query("TRUNCATE {sessions}");
- $db->query("TRUNCATE {logs}");
- $db->query("DELETE FROM {vars} WHERE `module_name` = 'gallery' AND `name` = '_cache'");
- $db->update("users", array("password" => ""), array("id" => 1));
- $db->update("users", array("password" => ""), array("id" => 2));
+ Database::instance()->query("TRUNCATE {sessions}");
+ Database::instance()->query("TRUNCATE {logs}");
+ db::build()
+ ->delete("vars")
+ ->where("module_name", "=", "gallery")
+ ->where("name", "=", "_cache")
+ ->execute();
+ db::build()->update("users", array("password" => ""), array("id" => 1))->execute();
+ db::build()->update("users", array("password" => ""), array("id" => 2))->execute();
$dbconfig = Kohana::config('database.default');
$conn = $dbconfig["connection"];
diff --git a/modules/gallery/controllers/permissions.php b/modules/gallery/controllers/permissions.php
index 99943fbb..e03f41a9 100644
--- a/modules/gallery/controllers/permissions.php
+++ b/modules/gallery/controllers/permissions.php
@@ -57,7 +57,7 @@ class Permissions_Controller extends Controller {
access::required("view", $item);
access::required("edit", $item);
- if (!empty($group) && $perm->loaded && $item->loaded) {
+ if (!empty($group) && $perm->loaded() && $item->loaded()) {
switch($command) {
case "allow":
access::allow($group, $perm->name, $item);
diff --git a/modules/gallery/controllers/photos.php b/modules/gallery/controllers/photos.php
index 455ac25c..7c2c266c 100644
--- a/modules/gallery/controllers/photos.php
+++ b/modules/gallery/controllers/photos.php
@@ -26,7 +26,7 @@ class Photos_Controller extends Items_Controller {
}
access::required("view", $photo);
- $where = array("type != " => "album");
+ $where = array(array("type", "!=", "album"));
$position = $photo->parent()->get_position($photo, $where);
if ($position > 1) {
list ($previous_item, $ignore, $next_item) =
diff --git a/modules/gallery/controllers/simple_uploader.php b/modules/gallery/controllers/simple_uploader.php
index 37753ff3..5d32e35f 100644
--- a/modules/gallery/controllers/simple_uploader.php
+++ b/modules/gallery/controllers/simple_uploader.php
@@ -72,7 +72,7 @@ class Simple_Uploader_Controller extends Controller {
module::event("add_photos_form_completed", $item, $form);
}
} catch (Exception $e) {
- Kohana::log("alert", $e->__toString());
+ Kohana_Log::add("alert", $e->__toString());
if (file_exists($temp_filename)) {
unlink($temp_filename);
}
diff --git a/modules/gallery/helpers/MY_url.php b/modules/gallery/helpers/MY_url.php
index 139aec21..74284951 100644
--- a/modules/gallery/helpers/MY_url.php
+++ b/modules/gallery/helpers/MY_url.php
@@ -32,7 +32,7 @@ class url extends url_Core {
}
$item = self::get_item_from_uri(Router::$current_uri);
- if ($item && $item->loaded) {
+ if ($item && $item->loaded()) {
Router::$controller = "{$item->type}s";
Router::$controller_path = MODPATH . "gallery/controllers/{$item->type}s.php";
Router::$method = "show";
@@ -51,12 +51,12 @@ class url extends url_Core {
// In most cases, we'll have an exact match in the relative_url_cache item field.
// but failing that, walk down the tree until we find it. The fallback code will fix caches
// as it goes, so it'll never be run frequently.
- $item = ORM::factory("item")->where("relative_url_cache", $current_uri)->find();
- if (!$item->loaded) {
+ $item = ORM::factory("item")->where("relative_url_cache", "=", $current_uri)->find();
+ if (!$item->loaded()) {
$count = count(Router::$segments);
foreach (ORM::factory("item")
- ->where("slug", html_entity_decode(Router::$segments[$count - 1], ENT_QUOTES))
- ->where("level", $count + 1)
+ ->where("slug", "=", html_entity_decode(Router::$segments[$count - 1], ENT_QUOTES))
+ ->where("level", "=", $count + 1)
->find_all() as $match) {
if ($match->relative_url() == $current_uri) {
$item = $match;
diff --git a/modules/gallery/helpers/access.php b/modules/gallery/helpers/access.php
index 88a02ce2..8ce7e436 100644
--- a/modules/gallery/helpers/access.php
+++ b/modules/gallery/helpers/access.php
@@ -91,7 +91,7 @@ class access_Core {
* @return boolean
*/
static function user_can($user, $perm_name, $item) {
- if (!$item->loaded) {
+ if (!$item->loaded()) {
return false;
}
@@ -101,7 +101,7 @@ class access_Core {
$resource = $perm_name == "view" ?
$item : model_cache::get("access_cache", $item->id, "item_id");
- foreach ($user->groups as $group) {
+ foreach ($user->groups() as $group) {
if ($resource->__get("{$perm_name}_{$group->id}") === self::ALLOW) {
return true;
}
@@ -166,16 +166,16 @@ class access_Core {
// For view permissions, if any parent is self::DENY, then those parents lock this one.
// Return
$lock = ORM::factory("item")
- ->where("`left_ptr` <= $item->left_ptr")
- ->where("`right_ptr` >= $item->right_ptr")
- ->where("items.id <> $item->id")
+ ->where("left_ptr", "<=", $item->left_ptr)
+ ->where("right_ptr", ">=", $item->right_ptr)
+ ->where("items.id", "<>", $item->id)
->join("access_intents", "items.id", "access_intents.item_id")
- ->where("access_intents.view_$group->id", self::DENY)
- ->orderby("level", "DESC")
+ ->where("access_intents.view_$group->id", "=", self::DENY)
+ ->order_by("level", "DESC")
->limit(1)
->find();
- if ($lock->loaded) {
+ if ($lock->loaded()) {
return $lock;
} else {
return null;
@@ -201,7 +201,7 @@ class access_Core {
if (!($group instanceof Group_Definition)) {
throw new Exception("@todo PERMISSIONS_ONLY_WORK_ON_GROUPS");
}
- if (!$album->loaded) {
+ if (!$album->loaded()) {
throw new Exception("@todo INVALID_ALBUM $album->id");
}
if (!$album->is_album()) {
@@ -282,7 +282,7 @@ class access_Core {
*/
static function register_permission($name, $display_name) {
$permission = ORM::factory("permission", $name);
- if ($permission->loaded) {
+ if ($permission->loaded()) {
throw new Exception("@todo PERMISSION_ALREADY_EXISTS $name");
}
$permission->name = $name;
@@ -304,8 +304,8 @@ class access_Core {
foreach (self::_get_all_groups() as $group) {
self::_drop_columns($name, $group);
}
- $permission = ORM::factory("permission")->where("name", $name)->find();
- if ($permission->loaded) {
+ $permission = ORM::factory("permission")->where("name", "=", $name)->find();
+ if ($permission->loaded()) {
$permission->delete();
}
}
@@ -342,7 +342,7 @@ class access_Core {
*/
static function add_item($item) {
$access_intent = ORM::factory("access_intent", $item->id);
- if ($access_intent->loaded) {
+ if ($access_intent->loaded()) {
throw new Exception("@todo ITEM_ALREADY_ADDED $item->id");
}
$access_intent = ORM::factory("access_intent");
@@ -354,7 +354,7 @@ class access_Core {
$access_cache->item_id = $item->id;
if ($item->id != 1) {
$parent_access_cache =
- ORM::factory("access_cache")->where("item_id", $item->parent()->id)->find();
+ ORM::factory("access_cache")->where("item_id", "=", $item->parent()->id)->find();
foreach (self::_get_all_groups() as $group) {
foreach (ORM::factory("permission")->find_all() as $perm) {
$field = "{$perm->name}_{$group->id}";
@@ -377,8 +377,8 @@ class access_Core {
* @return void
*/
static function delete_item($item) {
- ORM::factory("access_intent")->where("item_id", $item->id)->find()->delete();
- ORM::factory("access_cache")->where("item_id", $item->id)->find()->delete();
+ ORM::factory("access_intent")->where("item_id", "=", $item->id)->find()->delete();
+ ORM::factory("access_cache")->where("item_id", "=", $item->id)->find()->delete();
}
/**
@@ -419,8 +419,8 @@ class access_Core {
* @return ORM_Iterator
*/
private static function _get_all_groups() {
- // When we build the gallery package, it's possible that there is no identity provider installed yet.
- // This is ok at packaging time, so work around it.
+ // When we build the gallery package, it's possible that there is no identity provider
+ // installed yet. This is ok at packaging time, so work around it.
if (module::is_active(module::get_var("gallery", "identity_provider", "user"))) {
return identity::groups();
} else {
@@ -436,11 +436,10 @@ class access_Core {
* @return void
*/
private static function _drop_columns($perm_name, $group) {
- $db = Database::instance();
$field = "{$perm_name}_{$group->id}";
$cache_table = $perm_name == "view" ? "items" : "access_caches";
- $db->query("ALTER TABLE {{$cache_table}} DROP `$field`");
- $db->query("ALTER TABLE {access_intents} DROP `$field`");
+ Database::instance()->query("ALTER TABLE {{$cache_table}} DROP `$field`");
+ Database::instance()->query("ALTER TABLE {access_intents} DROP `$field`");
model_cache::clear();
ORM::factory("access_intent")->clear_cache();
}
@@ -453,13 +452,18 @@ class access_Core {
* @return void
*/
private static function _add_columns($perm_name, $group) {
- $db = Database::instance();
$field = "{$perm_name}_{$group->id}";
$cache_table = $perm_name == "view" ? "items" : "access_caches";
$not_null = $cache_table == "items" ? "" : "NOT NULL";
- $db->query("ALTER TABLE {{$cache_table}} ADD `$field` BINARY $not_null DEFAULT FALSE");
- $db->query("ALTER TABLE {access_intents} ADD `$field` BINARY DEFAULT NULL");
- $db->update("access_intents", array($field => self::DENY), array("item_id" => 1));
+ Database::instance()->query(
+ "ALTER TABLE {{$cache_table}} ADD `$field` BINARY $not_null DEFAULT FALSE");
+ Database::instance()->query(
+ "ALTER TABLE {access_intents} ADD `$field` BINARY DEFAULT NULL");
+ db::build()
+ ->update("access_intents")
+ ->set($field, self::DENY)
+ ->where("item_id", "=", 1)
+ ->execute();
model_cache::clear();
ORM::factory("access_intent")->clear_cache();
}
@@ -475,9 +479,7 @@ class access_Core {
* @return void
*/
private static function _update_access_view_cache($group, $item) {
- $access = ORM::factory("access_intent")->where("item_id", $item->id)->find();
-
- $db = Database::instance();
+ $access = ORM::factory("access_intent")->where("item_id", "=", $item->id)->find();
$field = "view_{$group->id}";
// With view permissions, deny values in the parent can override allow values in the child,
@@ -490,14 +492,14 @@ class access_Core {
// item, then its safe to propagate from here.
if ($access->$field !== self::DENY) {
$tmp_item = ORM::factory("item")
- ->where("left_ptr <", $item->left_ptr)
- ->where("right_ptr >", $item->right_ptr)
+ ->where("left_ptr", "<", $item->left_ptr)
+ ->where("right_ptr", ">", $item->right_ptr)
->join("access_intents", "access_intents.item_id", "items.id")
- ->where("access_intents.$field", self::DENY)
- ->orderby("left_ptr", "DESC")
+ ->where("access_intents.$field", "=", self::DENY)
+ ->order_by("left_ptr", "DESC")
->limit(1)
->find();
- if ($tmp_item->loaded) {
+ if ($tmp_item->loaded()) {
$item = $tmp_item;
}
}
@@ -506,35 +508,53 @@ class access_Core {
// access_caches table will already contain DENY values and we won't be able to overwrite
// them according the rule above. So mark every permission below this level as UNKNOWN so
// that we can tell which permissions have been changed, and which ones need to be updated.
- $db->update("items", array($field => self::UNKNOWN),
- array("left_ptr >=" => $item->left_ptr, "right_ptr <=" => $item->right_ptr));
+ db::build()
+ ->update("items")
+ ->set($field, self::UNKNOWN)
+ ->where("left_ptr", ">=", $item->left_ptr)
+ ->where("right_ptr", "<=", $item->right_ptr)
+ ->execute();
$query = ORM::factory("access_intent")
->select(array("access_intents.$field", "items.left_ptr", "items.right_ptr", "items.id"))
->join("items", "items.id", "access_intents.item_id")
- ->where("left_ptr >=", $item->left_ptr)
- ->where("right_ptr <=", $item->right_ptr)
- ->where("type", "album")
- ->where("access_intents.$field IS NOT", self::INHERIT)
- ->orderby("level", "DESC")
+ ->where("left_ptr", ">=", $item->left_ptr)
+ ->where("right_ptr", "<=", $item->right_ptr)
+ ->where("type", "=", "album")
+ ->where("access_intents.$field", "IS NOT", self::INHERIT)
+ ->order_by("level", "DESC")
->find_all();
foreach ($query as $row) {
if ($row->$field == self::ALLOW) {
// Propagate ALLOW for any row that is still UNKNOWN.
- $db->update("items", array($field => $row->$field),
- array($field => self::UNKNOWN, "left_ptr >=" => $row->left_ptr, "right_ptr <=" => $row->right_ptr));
+ db::build()
+ ->update("items")
+ ->set($field, $row->$field)
+ ->where($field, "IS", self::UNKNOWN) // UNKNOWN is NULL so we have to use IS
+ ->where("left_ptr", ">=", $row->left_ptr)
+ ->where("right_ptr", "<=", $row->right_ptr)
+ ->execute();
} else if ($row->$field == self::DENY) {
// DENY overwrites everything below it
- $db->update("items", array($field => $row->$field),
- array("left_ptr >=" => $row->left_ptr, "right_ptr <=" => $row->right_ptr));
+ db::build()
+ ->update("items")
+ ->set($field, $row->$field)
+ ->where("left_ptr", ">=", $row->left_ptr)
+ ->where("right_ptr", "<=", $row->right_ptr)
+ ->execute();
}
}
// Finally, if our intent is DEFAULT at this point it means that we were unable to find a
// DENY parent in the hierarchy to propagate from. So we'll still have a UNKNOWN values in
// the hierarchy, and all of those are safe to change to ALLOW.
- $db->update("items", array($field => self::ALLOW),
- array($field => self::UNKNOWN, "left_ptr >=" => $item->left_ptr, "right_ptr <=" => $item->right_ptr));
+ db::build()
+ ->update("items")
+ ->set($field, self::ALLOW)
+ ->where($field, "IS", self::UNKNOWN) // UNKNOWN is NULL so we have to use IS
+ ->where("left_ptr", ">=", $item->left_ptr)
+ ->where("right_ptr", "<=", $item->right_ptr)
+ ->execute();
}
/**
@@ -549,9 +569,8 @@ class access_Core {
* @return void
*/
private static function _update_access_non_view_cache($group, $perm_name, $item) {
- $access = ORM::factory("access_intent")->where("item_id", $item->id)->find();
+ $access = ORM::factory("access_intent")->where("item_id", "=", $item->id)->find();
- $db = Database::instance();
$field = "{$perm_name}_{$group->id}";
// If the item's intent is DEFAULT, then we need to back up the chain to find the nearest
@@ -562,13 +581,13 @@ class access_Core {
if ($access->$field === self::INHERIT) {
$tmp_item = ORM::factory("item")
->join("access_intents", "items.id", "access_intents.item_id")
- ->where("left_ptr <", $item->left_ptr)
- ->where("right_ptr >", $item->right_ptr)
- ->where("$field IS NOT", self::UNKNOWN)
- ->orderby("left_ptr", "DESC")
+ ->where("left_ptr", "<", $item->left_ptr)
+ ->where("right_ptr", ">", $item->right_ptr)
+ ->where($field, "IS NOT", self::UNKNOWN) // UNKNOWN is NULL so we have to use IS NOT
+ ->order_by("left_ptr", "DESC")
->limit(1)
->find();
- if ($tmp_item->loaded) {
+ if ($tmp_item->loaded()) {
$item = $tmp_item;
}
}
@@ -578,19 +597,23 @@ class access_Core {
$query = ORM::factory("access_intent")
->select(array("access_intents.$field", "items.left_ptr", "items.right_ptr"))
->join("items", "items.id", "access_intents.item_id")
- ->where("left_ptr >=", $item->left_ptr)
- ->where("right_ptr <=", $item->right_ptr)
- ->where("$field IS NOT", self::INHERIT)
- ->orderby("level", "ASC")
+ ->where("left_ptr", ">=", $item->left_ptr)
+ ->where("right_ptr", "<=", $item->right_ptr)
+ ->where($field, "IS NOT", self::INHERIT)
+ ->order_by("level", "ASC")
->find_all();
- foreach ($query as $row) {
- $value = ($row->$field === self::ALLOW) ? "TRUE" : "FALSE";
- $db->query(
- "UPDATE {access_caches} SET `$field` = $value " .
- "WHERE `item_id` IN " .
- " (SELECT `id` FROM {items} " .
- " WHERE `left_ptr` >= $row->left_ptr " .
- " AND `right_ptr` <= $row->right_ptr)");
+ foreach ($query as $row) {
+ $value = ($row->$field === self::ALLOW) ? true : false;
+ db::build()
+ ->update("access_caches")
+ ->set($field, $value)
+ ->where("item_id", "IN",
+ db::build()
+ ->select("id")
+ ->from("items")
+ ->where("left_ptr", ">=", $row->left_ptr)
+ ->where("right_ptr", "<=", $row->right_ptr))
+ ->execute();
}
}
diff --git a/modules/gallery/helpers/album.php b/modules/gallery/helpers/album.php
index cc631be4..da42bf28 100644
--- a/modules/gallery/helpers/album.php
+++ b/modules/gallery/helpers/album.php
@@ -34,7 +34,7 @@ class album_Core {
* @return Item_Model
*/
static function create($parent, $name, $title, $description=null, $owner_id=null, $slug=null) {
- if (!$parent->loaded || !$parent->is_album()) {
+ if (!$parent->loaded() || !$parent->is_album()) {
throw new Exception("@todo INVALID_PARENT");
}
@@ -68,11 +68,11 @@ class album_Core {
// Randomize the name or slug if there's a conflict
// @todo Improve this. Random numbers are not user friendly
while (ORM::factory("item")
- ->where("parent_id", $parent->id)
- ->open_paren()
- ->where("name", $album->name)
- ->orwhere("slug", $album->slug)
- ->close_paren()
+ ->where("parent_id", "=", $parent->id)
+ ->and_open()
+ ->where("name", "=", $album->name)
+ ->or_where("slug", "=", $album->slug)
+ ->close()
->find()->id) {
$rand = rand();
$album->name = "{$name}-$rand";
diff --git a/modules/gallery/helpers/auth.php b/modules/gallery/helpers/auth.php
index 9c69cecd..21a39bfb 100644
--- a/modules/gallery/helpers/auth.php
+++ b/modules/gallery/helpers/auth.php
@@ -46,7 +46,7 @@ class auth_Core {
try {
Session::instance()->destroy();
} catch (Exception $e) {
- Kohana::log("error", $e);
+ Kohana_Log::add("error", $e);
}
module::event("user_logout", $user);
}
diff --git a/modules/gallery/helpers/gallery_block.php b/modules/gallery/helpers/gallery_block.php
index b5c32ad2..9d4e81b6 100644
--- a/modules/gallery/helpers/gallery_block.php
+++ b/modules/gallery/helpers/gallery_block.php
@@ -34,7 +34,7 @@ class gallery_block_Core {
static function get($block_id) {
$block = new Block();
- switch($block_id) {
+ switch ($block_id) {
case "welcome":
$block->css_id = "g-welcome";
$block->title = t("Welcome to Gallery 3");
@@ -45,8 +45,8 @@ class gallery_block_Core {
$block->css_id = "g-photo-stream";
$block->title = t("Photo stream");
$block->content = new View("admin_block_photo_stream.html");
- $block->content->photos =
- ORM::factory("item")->where("type", "photo")->orderby("created", "DESC")->find_all(10);
+ $block->content->photos = ORM::factory("item")
+ ->where("type", "=", "photo")->order_by("created", "DESC")->find_all(10);
break;
case "log_entries":
@@ -54,7 +54,7 @@ class gallery_block_Core {
$block->title = t("Log entries");
$block->content = new View("admin_block_log_entries.html");
$block->content->entries = ORM::factory("log")
- ->orderby(array("timestamp" => "DESC", "id" => "DESC"))->find_all(5);
+ ->order_by(array("timestamp" => "DESC", "id" => "DESC"))->find_all(5);
break;
case "stats":
@@ -62,8 +62,8 @@ class gallery_block_Core {
$block->title = t("Gallery stats");
$block->content = new View("admin_block_stats.html");
$block->content->album_count =
- ORM::factory("item")->where("type", "album")->where("id <>", 1)->count_all();
- $block->content->photo_count = ORM::factory("item")->where("type", "photo")->count_all();
+ ORM::factory("item")->where("type", "=", "album")->where("id", "<>", 1)->count_all();
+ $block->content->photo_count = ORM::factory("item")->where("type", "=", "photo")->count_all();
break;
case "platform_info":
@@ -101,8 +101,7 @@ class gallery_block_Core {
$block->css_id = "g-user-language-block";
$block->title = t("Language preference");
$block->content = new View("user_languages_block.html");
- $block->content->installed_locales =
- array_merge(array("" => t("« none »")), $locales);
+ $block->content->installed_locales = array_merge(array("" => t("« none »")), $locales);
$block->content->selected = (string) locales::cookie_locale();
} else {
$block = "";
diff --git a/modules/gallery/helpers/gallery_event.php b/modules/gallery/helpers/gallery_event.php
index 02bfdf28..301432d4 100644
--- a/modules/gallery/helpers/gallery_event.php
+++ b/modules/gallery/helpers/gallery_event.php
@@ -30,36 +30,37 @@ class gallery_event_Core {
static function user_deleted($user) {
$admin = identity::admin_user();
- $db = Database::instance();
- $db->from("tasks")
- ->set(array("owner_id" => $admin->id))
- ->where(array("owner_id" => $user->id))
- ->update();
- $db->from("items")
- ->set(array("owner_id" => $admin->id))
- ->where(array("owner_id" => $user->id))
- ->update();
- $db->from("logs")
- ->set(array("user_id" => $admin->id))
- ->where(array("user_id" => $user->id))
- ->update();
+ db::build()
+ ->update("tasks")
+ ->set("owner_id", $admin->id)
+ ->where("owner_id", "=", $user->id)
+ ->execute();
+ db::build()
+ ->update("items")
+ ->set("owner_id", $admin->id)
+ ->where("owner_id", "=", $user->id)
+ ->execute();
+ db::build()
+ ->update("logs")
+ ->set("user_id", $admin->id)
+ ->where("user_id", "=", $user->id)
+ ->execute();
}
static function identity_provider_changed($old_provider, $new_provider) {
$admin = identity::admin_user();
- $db = Database::instance();
- $db->from("tasks")
- ->set(array("owner_id" => $admin->id))
- ->where("1 = 1")
- ->update();
- $db->from("items")
- ->set(array("owner_id" => $admin->id))
- ->where("1 = 1")
- ->update();
- $db->from("logs")
- ->set(array("user_id" => $admin->id))
- ->where("1 = 1")
- ->update();
+ db::build()
+ ->update("tasks")
+ ->set("owner_id", $admin->id)
+ ->execute();
+ db::build()
+ ->update("items")
+ ->set("owner_id", $admin->id)
+ ->execute();
+ db::build()
+ ->update("logs")
+ ->set("user_id", $admin->id)
+ ->execute();
}
static function group_created($group) {
diff --git a/modules/gallery/helpers/gallery_graphics.php b/modules/gallery/helpers/gallery_graphics.php
index c24d2bde..ce08bbd7 100644
--- a/modules/gallery/helpers/gallery_graphics.php
+++ b/modules/gallery/helpers/gallery_graphics.php
@@ -123,7 +123,7 @@ class gallery_graphics_Core {
module::event("graphics_composite_completed", $input_file, $output_file, $options);
} catch (ErrorException $e) {
- Kohana::log("error", $e->get_message());
+ Kohana_Log::add("error", $e->get_message());
}
}
}
diff --git a/modules/gallery/helpers/gallery_rss.php b/modules/gallery/helpers/gallery_rss.php
index 155edfb5..d422636f 100644
--- a/modules/gallery/helpers/gallery_rss.php
+++ b/modules/gallery/helpers/gallery_rss.php
@@ -29,14 +29,14 @@ class gallery_rss_Core {
case "latest":
$feed->children = ORM::factory("item")
->viewable()
- ->where("type !=", "album")
- ->orderby("created", "DESC")
+ ->where("type", "<>", "album")
+ ->order_by("created", "DESC")
->find_all($limit, $offset);
$all_children = ORM::factory("item")
->viewable()
- ->where("type !=", "album")
- ->orderby("created", "DESC");
+ ->where("type", "<>", "album")
+ ->order_by("created", "DESC");
$feed->max_pages = ceil($all_children->find_all()->count() / $limit);
$feed->title = t("Recent updates");
@@ -49,9 +49,9 @@ class gallery_rss_Core {
$feed->children = $item
->viewable()
- ->descendants($limit, $offset, array("type" => "photo"));
+ ->descendants($limit, $offset, array(array("type", "=", "photo")));
$feed->max_pages = ceil(
- $item->viewable()->descendants_count(array("type" => "photo")) / $limit);
+ $item->viewable()->descendants_count(array(array("type", "=", "photo"))) / $limit);
$feed->title = html::purify($item->title);
$feed->description = nl2br(html::purify($item->description));
diff --git a/modules/gallery/helpers/gallery_task.php b/modules/gallery/helpers/gallery_task.php
index e0b03682..3a705027 100644
--- a/modules/gallery/helpers/gallery_task.php
+++ b/modules/gallery/helpers/gallery_task.php
@@ -19,7 +19,7 @@
*/
class gallery_task_Core {
static function available_tasks() {
- $dirty_count = graphics::find_dirty_images_query()->count();
+ $dirty_count = graphics::find_dirty_images_query()->count_records();
$tasks = array();
$tasks[] = Task_Definition::factory()
->callback("gallery_task::rebuild_dirty_images")
@@ -47,7 +47,7 @@ class gallery_task_Core {
static function rebuild_dirty_images($task) {
$errors = array();
try {
- $result = graphics::find_dirty_images_query();
+ $result = graphics::find_dirty_images_query()->select("id")->execute();
$total_count = $task->get("total_count", $result->count());
$mode = $task->get("mode", "init");
if ($mode == "init") {
@@ -66,7 +66,7 @@ class gallery_task_Core {
}
$item = ORM::factory("item", $row->id);
- if ($item->loaded) {
+ if ($item->loaded()) {
try {
graphics::generate($item);
$completed++;
diff --git a/modules/gallery/helpers/graphics.php b/modules/gallery/helpers/graphics.php
index d6a2f00c..7577d7ac 100644
--- a/modules/gallery/helpers/graphics.php
+++ b/modules/gallery/helpers/graphics.php
@@ -61,9 +61,9 @@ class graphics_Core {
*/
static function remove_rule($module_name, $target, $operation) {
ORM::factory("graphics_rule")
- ->where("module_name", $module_name)
- ->where("target", $target)
- ->where("operation", $operation)
+ ->where("module_name", "=", $module_name)
+ ->where("target", "=", $target)
+ ->where("operation", "=", $operation)
->delete_all();
self::mark_dirty($target == "thumb", $target == "resize");
@@ -74,7 +74,10 @@ class graphics_Core {
* @param string $module_name
*/
static function remove_rules($module_name) {
- $status = Database::instance()->delete("graphics_rules", array("module_name" => $module_name));
+ $status = db::build()
+ ->delete("graphics_rules")
+ ->where("module_name", "=", $module_name)
+ ->execute();
if (count($status)) {
self::mark_dirty(true, true);
}
@@ -86,8 +89,11 @@ class graphics_Core {
* module it won't cause all of your images to suddenly require a rebuild.
*/
static function activate_rules($module_name) {
- Database::instance()
- ->update("graphics_rules",array("active" => true), array("module_name" => $module_name));
+ db::build()
+ ->update("graphics_rules")
+ ->set("active", true)
+ ->where("module_name", "=", $module_name)
+ ->execute();
}
/**
@@ -96,8 +102,11 @@ class graphics_Core {
* module it won't cause all of your images to suddenly require a rebuild.
*/
static function deactivate_rules($module_name) {
- Database::instance()
- ->update("graphics_rules",array("active" => false), array("module_name" => $module_name));
+ db::build()
+ ->update("graphics_rules")
+ ->set("active", false)
+ ->where("module_name", "=", $module_name)
+ ->execute();
}
/**
@@ -171,7 +180,7 @@ class graphics_Core {
} catch (Exception $e) {
// Something went wrong rebuilding the image. Leave it dirty and move on.
// @todo we should handle this better.
- Kohana::log("error", "Caught exception rebuilding image: {$item->title}\n" .
+ Kohana_Log::add("error", "Caught exception rebuilding image: {$item->title}\n" .
$e->getMessage() . "\n" . $e->getTraceAsString());
throw $e;
}
@@ -181,9 +190,9 @@ class graphics_Core {
if (empty(self::$_rules_cache[$target])) {
$rules = array();
foreach (ORM::factory("graphics_rule")
- ->where("target", $target)
- ->where("active", true)
- ->orderby("priority", "asc")
+ ->where("target", "=", $target)
+ ->where("active", "=", true)
+ ->order_by("priority", "asc")
->find_all() as $rule) {
$rules[] = (object)$rule->as_array();
}
@@ -197,11 +206,22 @@ class graphics_Core {
* @return Database_Result Query result
*/
static function find_dirty_images_query() {
- return Database::instance()->query(
- "SELECT `id` FROM {items} " .
- "WHERE ((`thumb_dirty` = 1 AND (`type` <> 'album' OR `album_cover_item_id` IS NOT NULL))" .
- " OR (`resize_dirty` = 1 AND `type` = 'photo')) " .
- " AND `id` != 1");
+ return db::build()
+ ->from("items")
+ ->and_open()
+ ->and_open()
+ ->where("thumb_dirty", "=", 1)
+ ->and_open()
+ ->where("type", "<>", "album")
+ ->or_where("album_cover_item_id", "IS NOT", null)
+ ->close()
+ ->or_open()
+ ->where("resize_dirty", "=", 1)
+ ->where("type", "=", "photo")
+ ->close()
+ ->close()
+ ->where("id", "<>", 1)
+ ->close();
}
/**
@@ -209,18 +229,18 @@ class graphics_Core {
*/
static function mark_dirty($thumbs, $resizes) {
if ($thumbs || $resizes) {
- $db = Database::instance();
- $fields = array();
+ $db = db::build()
+ ->update("items");
if ($thumbs) {
- $fields["thumb_dirty"] = 1;
+ $db->set("thumb_dirty", 1);
}
if ($resizes) {
- $fields["resize_dirty"] = 1;
+ $db->set("resize_dirty", 1);
}
- $db->update("items", $fields, true);
+ $db->execute();
}
- $count = self::find_dirty_images_query()->count();
+ $count = self::find_dirty_images_query()->count_records();
if ($count) {
site_status::warning(
t2("One of your photos is out of date. <a %attrs>Click here to fix it</a>",
@@ -371,18 +391,18 @@ class graphics_Core {
}
switch(module::get_var("gallery", "graphics_toolkit")) {
case "gd":
- Kohana::config_set("image.driver", "GD");
+ Kohana_Config::instance()->set("image.driver", "GD");
break;
case "imagemagick":
- Kohana::config_set("image.driver", "ImageMagick");
- Kohana::config_set(
+ Kohana_Config::instance()->set("image.driver", "ImageMagick");
+ Kohana_Config::instance()->set(
"image.params.directory", module::get_var("gallery", "graphics_toolkit_path"));
break;
case "graphicsmagick":
- Kohana::config_set("image.driver", "GraphicsMagick");
- Kohana::config_set(
+ Kohana_Config::instance()->set("image.driver", "GraphicsMagick");
+ Kohana_Config::instance()->set(
"image.params.directory", module::get_var("gallery", "graphics_toolkit_path"));
break;
}
diff --git a/modules/gallery/helpers/identity.php b/modules/gallery/helpers/identity.php
index 83ba9e1e..eae0ea3e 100644
--- a/modules/gallery/helpers/identity.php
+++ b/modules/gallery/helpers/identity.php
@@ -75,15 +75,15 @@ class identity_Core {
if (!$session->get("group_ids")) {
$ids = array();
- foreach ($user->groups as $group) {
+ foreach ($user->groups() as $group) {
$ids[] = $group->id;
}
$session->set("group_ids", $ids);
}
} catch (Exception $e) {
// Log it, so we at least have so notification that we swallowed the exception.
- Kohana::log("error", "Load_user Exception: " .
- $e->getMessage() . "\n" . $e->getTraceAsString());
+ Kohana_Log::add("error", "Load_user Exception: " .
+ $e->getMessage() . "\n" . $e->getTraceAsString());
try {
Session::instance()->destroy();
} catch (Exception $e) {
diff --git a/modules/gallery/helpers/item.php b/modules/gallery/helpers/item.php
index 6348c256..e8119027 100644
--- a/modules/gallery/helpers/item.php
+++ b/modules/gallery/helpers/item.php
@@ -184,10 +184,10 @@ class item_Core {
// Guard against an empty result when we create the first item. It's unfortunate that we
// have to check this every time.
// @todo: figure out a better way to bootstrap the weight.
- $result = Database::instance()
+ $result = db::build()
->select("weight")->from("items")
- ->orderby("weight", "desc")->limit(1)
- ->get()->current();
+ ->order_by("weight", "desc")->limit(1)
+ ->execute()->current();
return ($result ? $result->weight : 0) + 1;
}
@@ -200,29 +200,12 @@ class item_Core {
$view_restrictions = array();
if (!identity::active_user()->admin) {
foreach (identity::group_ids_for_active_user() as $id) {
- // Separate the first restriction from the rest to make it easier for us to formulate
- // our where clause below
- if (empty($view_restrictions)) {
- $view_restrictions[0] = "items.view_$id";
- } else {
- $view_restrictions[1]["items.view_$id"] = access::ALLOW;
- }
+ $view_restrictions[] = array("items.view_$id", "=", access::ALLOW);
}
}
- switch (count($view_restrictions)) {
- case 0:
- break;
-
- case 1:
- $model->where($view_restrictions[0], access::ALLOW);
- break;
-
- default:
- $model->open_paren();
- $model->where($view_restrictions[0], access::ALLOW);
- $model->orwhere($view_restrictions[1]);
- $model->close_paren();
- break;
+
+ if (count($view_restrictions)) {
+ $model->and_open()->merge_or_where($view_restrictions)->close();
}
return $model;
diff --git a/modules/gallery/helpers/l10n_client.php b/modules/gallery/helpers/l10n_client.php
index 3460cc65..fe70933d 100644
--- a/modules/gallery/helpers/l10n_client.php
+++ b/modules/gallery/helpers/l10n_client.php
@@ -80,11 +80,10 @@ class l10n_client_Core {
}
// @todo Batch requests (max request size)
- foreach (Database::instance()
+ foreach (db::build()
->select("key", "locale", "revision", "translation")
->from("incoming_translations")
- ->get()
- ->as_array() as $row) {
+ ->execute() as $row) {
if (!isset($request->messages->{$row->key})) {
$request->messages->{$row->key} = 1;
}
@@ -134,12 +133,14 @@ class l10n_client_Core {
// incoming_translations.message to be NULL?
$locale = $message_data->locale;
$entry = ORM::factory("incoming_translation")
- ->where(array("key" => $key, "locale" => $locale))
+ ->where("key", "=", $key)
+ ->where("locale", "=", $locale)
->find();
- if (!$entry->loaded) {
+ if (!$entry->loaded()) {
// @todo Load a message key -> message (text) dict into memory outside of this loop
$root_entry = ORM::factory("incoming_translation")
- ->where(array("key" => $key, "locale" => "root"))
+ ->where("key", "=", $key)
+ ->where("locale", "=", "root")
->find();
$entry->key = $key;
$entry->message = $root_entry->message;
@@ -166,10 +167,10 @@ class l10n_client_Core {
// @todo Batch requests (max request size)
// @todo include base_revision in submission / how to handle resubmissions / edit fights?
- foreach (Database::instance()
+ foreach (db::build()
->select("key", "message", "locale", "base_revision", "translation")
->from("outgoing_translations")
- ->get() as $row) {
+ ->execute() as $row) {
$key = $row->key;
if (!isset($request->{$key})) {
$request->{$key}->message = json_encode(unserialize($row->message));
diff --git a/modules/gallery/helpers/l10n_scanner.php b/modules/gallery/helpers/l10n_scanner.php
index a8059b3a..bb7cb449 100644
--- a/modules/gallery/helpers/l10n_scanner.php
+++ b/modules/gallery/helpers/l10n_scanner.php
@@ -28,22 +28,22 @@ class l10n_scanner_Core {
static function process_message($message, &$cache) {
if (empty($cache)) {
- foreach (Database::instance()
+ foreach (db::build()
->select("key")
->from("incoming_translations")
- ->where("locale", "root")
- ->get() as $row) {
+ ->where("locale", "=", "root")
+ ->execute() as $row) {
$cache[$row->key] = true;
}
}
- $key = I18n::get_message_key($message);
+ $key = Gallery_I18n::get_message_key($message);
if (array_key_exists($key, $cache)) {
return $cache[$key];
}
- $entry = ORM::factory("incoming_translation", array("key" => $key));
- if (!$entry->loaded) {
+ $entry = ORM::factory("incoming_translation")->where("key", "=", $key)->find();
+ if (!$entry->loaded()) {
$entry->key = $key;
$entry->message = serialize($message);
$entry->locale = "root";
diff --git a/modules/gallery/helpers/locales.php b/modules/gallery/helpers/locales.php
index 2de029ff..8d76e333 100644
--- a/modules/gallery/helpers/locales.php
+++ b/modules/gallery/helpers/locales.php
@@ -125,13 +125,13 @@ class locales_Core {
if (empty(self::$locales)) {
self::_init_language_data();
}
- $locale or $locale = I18n::instance()->locale();
+ $locale or $locale = Gallery_I18n::instance()->locale();
return self::$locales["$locale"];
}
static function is_rtl($locale=null) {
- $locale or $locale = I18n::instance()->locale();
+ $locale or $locale = Gallery_I18n::instance()->locale();
list ($language, $territory) = explode('_', $locale . "_");
return in_array($language, array("he", "fa", "ar"));
}
@@ -233,7 +233,7 @@ class locales_Core {
}
// If we have any preference, override the site's default locale
if ($locale) {
- I18n::instance()->locale($locale);
+ Gallery_I18n::instance()->locale($locale);
}
}
diff --git a/modules/gallery/helpers/model_cache.php b/modules/gallery/helpers/model_cache.php
index a3e09862..302e42d9 100644
--- a/modules/gallery/helpers/model_cache.php
+++ b/modules/gallery/helpers/model_cache.php
@@ -22,8 +22,8 @@ class model_cache_Core {
static function get($model_name, $id, $field_name="id") {
if (TEST_MODE || empty(self::$cache->$model_name->$field_name->$id)) {
- $model = ORM::factory($model_name)->where($field_name, $id)->find();
- if (!$model->loaded) {
+ $model = ORM::factory($model_name)->where($field_name, "=", $id)->find();
+ if (!$model->loaded()) {
throw new Exception("@todo MISSING_MODEL $model_name:$id");
}
self::$cache->$model_name->$field_name->$id = $model;
diff --git a/modules/gallery/helpers/module.php b/modules/gallery/helpers/module.php
index 50abdaae..6c7078a3 100644
--- a/modules/gallery/helpers/module.php
+++ b/modules/gallery/helpers/module.php
@@ -36,13 +36,13 @@ class module_Core {
*/
static function set_version($module_name, $version) {
$module = self::get($module_name);
- if (!$module->loaded) {
+ if (!$module->loaded()) {
$module->name = $module_name;
$module->active = $module_name == "gallery"; // only gallery is active by default
}
$module->version = $version;
$module->save();
- Kohana::log("debug", "$module_name: version is now $version");
+ Kohana_Log::add("debug", "$module_name: version is now $version");
}
/**
@@ -51,7 +51,7 @@ class module_Core {
*/
static function get($module_name) {
if (empty(self::$modules[$module_name])) {
- return ORM::factory("module", array("name" => $module_name));
+ return ORM::factory("module")->where("name", "=", $module_name)->find();
}
return self::$modules[$module_name];
}
@@ -126,9 +126,10 @@ class module_Core {
* @param string $module_name
*/
static function install($module_name) {
- $kohana_modules = Kohana::config("core.modules");
+ $config = Kohana_Config::instance();
+ $kohana_modules = $config->get("core.modules");
array_unshift($kohana_modules, MODPATH . $module_name);
- Kohana::config_set("core.modules", $kohana_modules);
+ $config->set("core.modules", $kohana_modules);
// Rebuild the include path so the module installer can benefit from auto loading
Kohana::include_paths(true);
@@ -142,7 +143,7 @@ class module_Core {
// Now the module is installed but inactive, so don't leave it in the active path
array_shift($kohana_modules);
- Kohana::config_set("core.modules", $kohana_modules);
+ $config->set("core.modules", $kohana_modules);
log::success(
"module", t("Installed module %module_name", array("module_name" => $module_name)));
@@ -193,9 +194,10 @@ class module_Core {
* @param string $module_name
*/
static function activate($module_name) {
- $kohana_modules = Kohana::config("core.modules");
+ $config = Kohana_Config::instance();
+ $kohana_modules = $config->get("core.modules");
array_unshift($kohana_modules, MODPATH . $module_name);
- Kohana::config_set("core.modules", $kohana_modules);
+ $config->set("core.modules", $kohana_modules);
$installer_class = "{$module_name}_installer";
if (method_exists($installer_class, "activate")) {
@@ -203,7 +205,7 @@ class module_Core {
}
$module = self::get($module_name);
- if ($module->loaded) {
+ if ($module->loaded()) {
$module->active = true;
$module->save();
}
@@ -230,7 +232,7 @@ class module_Core {
}
$module = self::get($module_name);
- if ($module->loaded) {
+ if ($module->loaded()) {
$module->active = false;
$module->save();
}
@@ -257,7 +259,7 @@ class module_Core {
graphics::remove_rules($module_name);
$module = self::get($module_name);
- if ($module->loaded) {
+ if ($module->loaded()) {
$module->delete();
}
module::load_modules();
@@ -290,8 +292,9 @@ class module_Core {
}
}
self::$active[] = $gallery; // put gallery last in the module list to match core.modules
- Kohana::config_set(
- "core.modules", array_merge($kohana_modules, Kohana::config("core.modules")));
+ $config = Kohana_Config::instance();
+ $config->set(
+ "core.modules", array_merge($kohana_modules, $config->get("core.modules")));
}
/**
@@ -363,21 +366,23 @@ class module_Core {
// We cache all vars in gallery._cache so that we can load all vars at once for
// performance.
if (empty(self::$var_cache)) {
- $row = Database::instance()
+ $row = db::build()
->select("value")
->from("vars")
- ->where(array("module_name" => "gallery", "name" => "_cache"))
- ->get()
+ ->where("module_name", "=", "gallery")
+ ->where("name", "=", "_cache")
+ ->execute()
->current();
if ($row) {
self::$var_cache = unserialize($row->value);
} else {
// gallery._cache doesn't exist. Create it now.
- foreach (Database::instance()
+ foreach (db::build()
->select("module_name", "name", "value")
->from("vars")
- ->orderby("module_name", "name")
- ->get() as $row) {
+ ->order_by("module_name")
+ ->order_by("name")
+ ->execute() as $row) {
if ($row->module_name == "gallery" && $row->name == "_cache") {
// This could happen if there's a race condition
continue;
@@ -407,33 +412,50 @@ class module_Core {
*/
static function set_var($module_name, $name, $value) {
$var = ORM::factory("var")
- ->where("module_name", $module_name)
- ->where("name", $name)
+ ->where("module_name", "=", $module_name)
+ ->where("name", "=", $name)
->find();
- if (!$var->loaded) {
+ if (!$var->loaded()) {
$var->module_name = $module_name;
$var->name = $name;
}
$var->value = $value;
$var->save();
- Database::instance()->delete("vars", array("module_name" => "gallery", "name" => "_cache"));
+ db::build()
+ ->delete("vars")
+ ->where("module_name", "=", "gallery")
+ ->where("name", "=", "_cache")
+ ->execute();
self::$var_cache = null;
}
/**
* Increment the value of a variable for this module
+ *
+ * Note: Frequently updating counters is very inefficient because it invalidates the cache value
+ * which has to be rebuilt every time we make a change.
+ *
+ * @todo Get rid of this and find an alternate approach for all callers (currently only Akismet)
+ *
+ * @deprecated
* @param string $module_name
* @param string $name
* @param string $increment (optional, default is 1)
*/
static function incr_var($module_name, $name, $increment=1) {
- Database::instance()->query(
- "UPDATE {vars} SET `value` = `value` + $increment " .
- "WHERE `module_name` = '$module_name' " .
- "AND `name` = '$name'");
-
- Database::instance()->delete("vars", array("module_name" => "gallery", "name" => "_cache"));
+ db::build()
+ ->update("vars")
+ ->set("value", new Database_Expression("`value` + $increment"))
+ ->where("module_name", "=", $module_name)
+ ->where("name", "=", $name)
+ ->execute();
+
+ db::build()
+ ->delete("vars")
+ ->where("module_name", "=", "gallery")
+ ->where("name", "=", "_cache")
+ ->execute();
self::$var_cache = null;
}
@@ -444,14 +466,18 @@ class module_Core {
*/
static function clear_var($module_name, $name) {
$var = ORM::factory("var")
- ->where("module_name", $module_name)
- ->where("name", $name)
+ ->where("module_name", "=", $module_name)
+ ->where("name", "=", $name)
->find();
- if ($var->loaded) {
+ if ($var->loaded()) {
$var->delete();
}
- Database::instance()->delete("vars", array("module_name" => "gallery", "name" => "_cache"));
+ db::build()
+ ->delete("vars")
+ ->where("module_name", "=", "gallery")
+ ->where("name", "=", "_cache")
+ ->execute();
self::$var_cache = null;
}
diff --git a/modules/gallery/helpers/movie.php b/modules/gallery/helpers/movie.php
index 20ac8592..60059c61 100644
--- a/modules/gallery/helpers/movie.php
+++ b/modules/gallery/helpers/movie.php
@@ -36,7 +36,7 @@ class movie_Core {
*/
static function create($parent, $filename, $name, $title,
$description=null, $owner_id=null, $slug=null) {
- if (!$parent->loaded || !$parent->is_album()) {
+ if (!$parent->loaded() || !$parent->is_album()) {
throw new Exception("@todo INVALID_PARENT");
}
@@ -90,11 +90,11 @@ class movie_Core {
// Randomize the name if there's a conflict
// @todo Improve this. Random numbers are not user friendly
while (ORM::factory("item")
- ->where("parent_id", $parent->id)
- ->open_paren()
- ->where("name", $movie->name)
- ->orwhere("slug", $movie->slug)
- ->close_paren()
+ ->where("parent_id", "=", $parent->id)
+ ->and_open()
+ ->where("name", "=", $movie->name)
+ ->or_where("slug", "=", $movie->slug)
+ ->close()
->find()->id) {
$rand = rand();
$movie->name = "{$name}.$rand.{$pi['extension']}";
diff --git a/modules/gallery/helpers/photo.php b/modules/gallery/helpers/photo.php
index dab98436..ceffac65 100644
--- a/modules/gallery/helpers/photo.php
+++ b/modules/gallery/helpers/photo.php
@@ -36,7 +36,7 @@ class photo_Core {
*/
static function create($parent, $filename, $name, $title,
$description=null, $owner_id=null, $slug=null) {
- if (!$parent->loaded || !$parent->is_album()) {
+ if (!$parent->loaded() || !$parent->is_album()) {
throw new Exception("@todo INVALID_PARENT");
}
@@ -89,11 +89,11 @@ class photo_Core {
// Randomize the name or slug if there's a conflict
// @todo Improve this. Random numbers are not user friendly
while (ORM::factory("item")
- ->where("parent_id", $parent->id)
- ->open_paren()
- ->where("name", $photo->name)
- ->orwhere("slug", $photo->slug)
- ->close_paren()
+ ->where("parent_id", "=", $parent->id)
+ ->and_open()
+ ->where("name", "=", $photo->name)
+ ->or_where("slug", "=", $photo->slug)
+ ->close()
->find()->id) {
$rand = rand();
$photo->name = "{$name}.$rand.{$pi['extension']}";
diff --git a/modules/gallery/helpers/site_status.php b/modules/gallery/helpers/site_status.php
index 2b090776..04316fff 100644
--- a/modules/gallery/helpers/site_status.php
+++ b/modules/gallery/helpers/site_status.php
@@ -67,9 +67,9 @@ class site_status_Core {
*/
private static function _add($msg, $severity, $permanent_key) {
$message = ORM::factory("message")
- ->where("key", $permanent_key)
+ ->where("key", "=", $permanent_key)
->find();
- if (!$message->loaded) {
+ if (!$message->loaded()) {
$message->key = $permanent_key;
}
$message->severity = $severity;
@@ -82,8 +82,8 @@ class site_status_Core {
* @param string $permanent_key
*/
static function clear($permanent_key) {
- $message = ORM::factory("message")->where("key", $permanent_key)->find();
- if ($message->loaded) {
+ $message = ORM::factory("message")->where("key", "=", $permanent_key)->find();
+ if ($message->loaded()) {
$message->delete();
}
}
diff --git a/modules/gallery/helpers/task.php b/modules/gallery/helpers/task.php
index dac5f9d3..4aa95f33 100644
--- a/modules/gallery/helpers/task.php
+++ b/modules/gallery/helpers/task.php
@@ -51,7 +51,7 @@ class task_Core {
static function cancel($task_id) {
$task = ORM::factory("task", $task_id);
- if (!$task->loaded) {
+ if (!$task->loaded()) {
throw new Exception("@todo MISSING_TASK");
}
$task->done = 1;
@@ -65,14 +65,14 @@ class task_Core {
static function remove($task_id) {
$task = ORM::factory("task", $task_id);
- if ($task->loaded) {
+ if ($task->loaded()) {
$task->delete();
}
}
static function run($task_id) {
$task = ORM::factory("task", $task_id);
- if (!$task->loaded) {
+ if (!$task->loaded()) {
throw new Exception("@todo MISSING_TASK");
}
@@ -84,7 +84,7 @@ class task_Core {
}
$task->save();
} catch (Exception $e) {
- Kohana::log("error", $e->__toString());
+ Kohana_Log::add("error", $e->__toString());
$task->log($e->__toString());
$task->state = "error";
$task->done = true;
diff --git a/modules/gallery/helpers/theme.php b/modules/gallery/helpers/theme.php
index 247aa5c4..b836292f 100644
--- a/modules/gallery/helpers/theme.php
+++ b/modules/gallery/helpers/theme.php
@@ -39,7 +39,8 @@ class theme_Core {
$path = "/" . $input->get("kohana_uri");
}
- $modules = Kohana::config("core.modules");
+ $config = Kohana_Config::instance();
+ $modules = $config->get("core.modules");
self::$is_admin = $path == "/admin" || !strncmp($path, "/admin/", 7);
self::$site_theme_name = module::get_var("gallery", "active_site_theme");
if (self::$is_admin) {
@@ -58,13 +59,13 @@ class theme_Core {
if (file_exists(THEMEPATH . $override)) {
self::$site_theme_name = $override;
} else {
- Kohana::log("error", "Missing override theme: '$override'");
+ Kohana_Log::add("error", "Missing override theme: '$override'");
}
}
array_unshift($modules, THEMEPATH . self::$site_theme_name);
}
- Kohana::config_set("core.modules", $modules);
+ $config->set("core.modules", $modules);
}
static function get_edit_form_admin() {
diff --git a/modules/gallery/hooks/init_gallery.php b/modules/gallery/hooks/init_gallery.php
index b2d9c4de..c7355260 100644
--- a/modules/gallery/hooks/init_gallery.php
+++ b/modules/gallery/hooks/init_gallery.php
@@ -24,7 +24,7 @@ if (!file_exists(VARPATH . "database.php")) {
url::redirect(url::abs_file("installer"));
}
-Event::add("system.ready", array("I18n", "instance"));
+Event::add("system.ready", array("Gallery_I18n", "instance"));
Event::add("system.ready", array("module", "load_modules"));
Event::add("system.ready", array("gallery", "ready"));
Event::add("system.post_routing", array("url", "parse_url"));
@@ -42,5 +42,5 @@ if ($g3sid = $input->post("g3sid", $input->get("g3sid"))) {
}
if ($user_agent = $input->post("user_agent", $input->get("user_agent"))) {
- Kohana::$user_agent = $user_agent;
+ $_SERVER["HTTP_USER_AGENT"] = $user_agent;
}
diff --git a/modules/gallery/libraries/I18n.php b/modules/gallery/libraries/Gallery_I18n.php
index c3336052..4e0c1f82 100644
--- a/modules/gallery/libraries/I18n.php
+++ b/modules/gallery/libraries/Gallery_I18n.php
@@ -27,7 +27,7 @@
* @return String The translated message string.
*/
function t($message, $options=array()) {
- return I18n::instance()->translate($message, $options);
+ return Gallery_I18n::instance()->translate($message, $options);
}
/**
@@ -43,11 +43,11 @@ function t($message, $options=array()) {
* @return String The translated message string.
*/
function t2($singular, $plural, $count, $options=array()) {
- return I18n::instance()->translate(array("one" => $singular, "other" => $plural),
+ return Gallery_I18n::instance()->translate(array("one" => $singular, "other" => $plural),
array_merge($options, array("count" => $count)));
}
-class I18n_Core {
+class Gallery_I18n_Core {
private static $_instance;
private $_config = array();
private $_call_log = array();
@@ -64,7 +64,7 @@ class I18n_Core {
if (empty($config['default_locale'])) {
$config['default_locale'] = module::get_var('gallery', 'default_locale');
}
- self::$_instance = new I18n_Core($config);
+ self::$_instance = new Gallery_I18n_Core($config);
}
return self::$_instance;
@@ -128,22 +128,20 @@ class I18n_Core {
if (!isset($this->_cache[$locale])) {
$this->_cache[$locale] = array();
// TODO: Load data from locale file instead of the DB.
- foreach (Database::instance()
+ foreach (db::build()
->select("key", "translation")
->from("incoming_translations")
- ->where(array("locale" => $locale))
- ->get()
- ->as_array() as $row) {
+ ->where("locale", "=", $locale)
+ ->execute() as $row) {
$this->_cache[$locale][$row->key] = unserialize($row->translation);
}
// Override incoming with outgoing...
- foreach (Database::instance()
+ foreach (db::build()
->select("key", "translation")
->from("outgoing_translations")
- ->where(array("locale" => $locale))
- ->get()
- ->as_array() as $row) {
+ ->where("locale", "=", $locale)
+ ->execute() as $row) {
$this->_cache[$locale][$row->key] = unserialize($row->translation);
}
}
diff --git a/modules/gallery/libraries/Gallery_View.php b/modules/gallery/libraries/Gallery_View.php
index 3bf56d0f..940c5321 100644
--- a/modules/gallery/libraries/Gallery_View.php
+++ b/modules/gallery/libraries/Gallery_View.php
@@ -32,7 +32,7 @@ class Gallery_View_Core extends View {
if (($path = gallery::find_file("js", $file, false))) {
$this->scripts[$path] = 1;
} else {
- Kohana::log("error", "Can't find script file: $file");
+ Kohana_Log::add("error", "Can't find script file: $file");
}
}
@@ -55,7 +55,7 @@ class Gallery_View_Core extends View {
if (($path = gallery::find_file("css", $file, false))) {
$this->css[$path] = 1;
} else {
- Kohana::log("error", "Can't find css file: $file");
+ Kohana_Log::add("error", "Can't find css file: $file");
}
}
@@ -130,7 +130,7 @@ class Gallery_View_Core extends View {
$search[] = $match[0];
$replace[] = "url('" . url::abs_file($relative) . "')";
} else {
- Kohana::log("error", "Missing URL reference '{$match[1]}' in CSS file '$css_file'");
+ Kohana_Log::add("error", "Missing URL reference '{$match[1]}' in CSS file '$css_file'");
}
}
$replace = str_replace(DIRECTORY_SEPARATOR, "/", $replace);
diff --git a/modules/gallery/libraries/IdentityProvider.php b/modules/gallery/libraries/IdentityProvider.php
index e213ae97..bcb3056a 100644
--- a/modules/gallery/libraries/IdentityProvider.php
+++ b/modules/gallery/libraries/IdentityProvider.php
@@ -54,7 +54,7 @@ class IdentityProvider_Core {
*/
static function reset() {
self::$instance = null;
- Kohana::config_clear("identity");
+ Kohana_Config::instance()->clear("identity");
}
/**
@@ -90,7 +90,7 @@ class IdentityProvider_Core {
get_class($this), "IdentityProvider_Driver");
}
- Kohana::log("debug", "Identity Library initialized");
+ Kohana_Log::add("debug", "Identity Library initialized");
}
/**
diff --git a/modules/gallery/libraries/MY_Database.php b/modules/gallery/libraries/MY_Database.php
index c56f16e8..de3e5a84 100644
--- a/modules/gallery/libraries/MY_Database.php
+++ b/modules/gallery/libraries/MY_Database.php
@@ -17,32 +17,21 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
*/
-class Database extends Database_Core {
+abstract class Database extends Database_Core {
protected $_table_names;
- public function open_paren() {
- $this->where[] = "(";
- return $this;
- }
-
- public function close_paren() {
- // Search backwards for the last opening paren and resolve it
- $i = count($this->where) - 1;
- $this->where[$i] .= ")";
- while (--$i >= 0) {
- if ($this->where[$i] == "(") {
- // Remove the paren from the where clauses, and add it to the right of the operator of the
- // next where clause. If removing the paren makes the next where clause the first element
- // in the where list, then the operator shouldn't be there. It's there because we
- // calculate whether or not we need an operator based on the number of where clauses, and
- // the open paren seems like a where clause even though it isn't.
- array_splice($this->where, $i, 1);
- $this->where[$i] = preg_replace("/^(AND|OR) /", $i ? "\\1 (" : "(", $this->where[$i]);
- return $this;
- }
+ /**
+ * Kohana 2.4 introduces a new connection parameter. If it's not specified, make sure that we
+ * define it here to avoid an error later on.
+ *
+ * @todo: add an upgrade path to modify var/database.php so that we can avoid doing this at
+ * runtime.
+ */
+ protected function __construct(array $config) {
+ if (!isset($config["connection"]["params"])) {
+ $config["connection"]["params"] = null;
}
-
- throw new Kohana_Database_Exception('database.missing_open_paren');
+ parent::__construct($config);
}
/**
@@ -50,7 +39,7 @@ class Database extends Database_Core {
* table prefix . $1
*/
public function query($sql = '') {
- if (!empty($sql)) {
+ if ($this->config["table_prefix"] && !empty($sql)) {
$sql = $this->add_table_prefixes($sql);
}
return parent::query($sql);
@@ -74,19 +63,19 @@ class Database extends Database_Core {
if (!isset($this->_table_names)) {
// This should only run once on the first query
- $this->_table_names =array();
- $len = strlen($prefix);
+ $this->_table_names = array();
foreach($this->list_tables() as $table_name) {
- if ($len > 0) {
- $naked_name = strpos($table_name, $prefix) !== 0 ?
- $table_name : substr($table_name, $len);
- } else {
- $naked_name = $table_name;
- }
- $this->_table_names["{{$naked_name}}"] = $table_name;
+ $this->_table_names["{{$table_name}}"] = $prefix . $table_name;
}
}
- return empty($this->_table_names) ? $sql : strtr($sql, $this->_table_names);
+ return strtr($sql, $this->_table_names);
+ }
+
+ /**
+ * This is used by the unit test code to switch the active database connection.
+ */
+ static function set_default_instance($db) {
+ self::$instances["default"] = $db;
}
} \ No newline at end of file
diff --git a/modules/gallery/libraries/MY_Forge.php b/modules/gallery/libraries/MY_Forge.php
index b40d067d..9564f941 100644
--- a/modules/gallery/libraries/MY_Forge.php
+++ b/modules/gallery/libraries/MY_Forge.php
@@ -24,14 +24,13 @@ class Forge extends Forge_Core {
*/
public function __construct($action=null, $title='', $method=null, $attr=array()) {
parent::__construct($action, $title, $method, $attr);
- $this->hidden("csrf")->value("");
+ $this->hidden("csrf")->value(access::csrf_token());
}
/**
* Use our own template
*/
public function render($template="form.html", $custom=false) {
- $this->hidden["csrf"]->value(access::csrf_token());
return parent::render($template, $custom);
}
@@ -43,8 +42,8 @@ class Forge extends Forge_Core {
if (isset($input->inputs)) {
$input->add_rules_from($model);
}
- if (isset($model->rules[$name])) {
- $input->rules($model->rules[$name]);
+ if (isset($model->form_rules[$name])) {
+ $input->rules($model->form_rules[$name]);
}
}
}
diff --git a/modules/gallery/libraries/MY_Kohana_Exception.php b/modules/gallery/libraries/MY_Kohana_Exception.php
new file mode 100644
index 00000000..dd5998a1
--- /dev/null
+++ b/modules/gallery/libraries/MY_Kohana_Exception.php
@@ -0,0 +1,31 @@
+<?php defined("SYSPATH") or die("No direct script access.");
+/**
+ * Gallery - a web based photo album viewer and editor
+ * Copyright (C) 2000-2009 Bharat Mediratta
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or (at
+ * your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+class Kohana_Exception extends Kohana_Exception_Core {
+ /**
+ * Dump out the full stack trace as part of the text representation of the exception.
+ */
+ public static function text($e) {
+ return sprintf(
+ "%s [ %s ]: %s\n%s [ %s ]\n%s",
+ get_class($e), $e->getCode(), strip_tags($e->getMessage()),
+ $e->getFile(), $e->getLine(),
+ $e->getTraceAsString());
+ }
+} \ No newline at end of file
diff --git a/modules/gallery/libraries/MY_ORM.php b/modules/gallery/libraries/MY_ORM.php
index 2c9ad1d7..56c776aa 100644
--- a/modules/gallery/libraries/MY_ORM.php
+++ b/modules/gallery/libraries/MY_ORM.php
@@ -21,16 +21,6 @@ class ORM extends ORM_Core {
// Track the original value of this ORM so that we can look it up in ORM::original()
protected $original = null;
- public function open_paren() {
- $this->db->open_paren();
- return $this;
- }
-
- public function close_paren() {
- $this->db->close_paren();
- return $this;
- }
-
public function save() {
model_cache::clear();
$result = parent::save();
diff --git a/modules/gallery/libraries/MY_View.php b/modules/gallery/libraries/MY_View.php
index eb55aca6..cec59ec1 100644
--- a/modules/gallery/libraries/MY_View.php
+++ b/modules/gallery/libraries/MY_View.php
@@ -18,6 +18,35 @@
* Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
*/
class View extends View_Core {
+ static $global_data = array();
+
+ /**
+ * Reimplement Kohana 2.3's View::set_global() functionality.
+ */
+ public function set_global($key, $value) {
+ View::$global_data[$key] = $value;
+ }
+
+ public function is_set($key) {
+ return parent::is_set($key) ? true : array_key_exists($key, View::$global_data);
+ }
+
+ /**
+ * Completely replace View_Core::__get() so that local data trumps global data, trumps members.
+ * This simulates the Kohana 2.3 behavior.
+ */
+ public function &__get($key) {
+ if (isset($this->kohana_local_data[$key])) {
+ return $this->kohana_local_data[$key];
+ } else if (isset(View::$global_data[$key])) {
+ return View::$global_data[$key];
+ } else if (isset($this->$key)) {
+ return $this->$key;
+ } else {
+ throw new Kohana_Exception('Undefined view variable: :var', array(':var' => $key));
+ }
+ }
+
/**
* Override View_Core::__construct so that we can set the csrf value into all views.
*
@@ -34,11 +63,12 @@ class View extends View_Core {
*
* @see View_Core::render
*/
- public function render($print=false, $renderer=false) {
+ public function render($print=false, $renderer=false, $modifier=false) {
try {
- return parent::render($print, $renderer);
+ $this->kohana_local_data = array_merge(View::$global_data, $this->kohana_local_data);
+ return parent::render($print, $renderer, $modifier);
} catch (Exception $e) {
- Kohana::Log("error", $e->getMessage() . "\n" . $e->getTraceAsString());
+ Kohana_Log::add("error", $e->getMessage() . "\n" . $e->getTraceAsString());
return "";
}
}
diff --git a/modules/gallery/libraries/ORM_MPTT.php b/modules/gallery/libraries/ORM_MPTT.php
index ebd7abc2..0ea519c9 100644
--- a/modules/gallery/libraries/ORM_MPTT.php
+++ b/modules/gallery/libraries/ORM_MPTT.php
@@ -52,10 +52,16 @@ class ORM_MPTT_Core extends ORM {
try {
// Make a hole in the parent for this new item
- $this->db->query(
- "UPDATE {{$this->table_name}} SET `left_ptr` = `left_ptr` + 2 WHERE `left_ptr` >= {$parent->right_ptr}");
- $this->db->query(
- "UPDATE {{$this->table_name}} SET `right_ptr` = `right_ptr` + 2 WHERE `right_ptr` >= {$parent->right_ptr}");
+ $this->db_builder
+ ->update($this->table_name)
+ ->set("left_ptr", new Database_Expression("`left_ptr` + 2"))
+ ->where("left_ptr", ">=", $parent->right_ptr)
+ ->execute();
+ $this->db_builder
+ ->update($this->table_name)
+ ->set("right_ptr", new Database_Expression("`right_ptr` + 2"))
+ ->where("right_ptr", ">=", $parent->right_ptr)
+ ->execute();
$parent->right_ptr += 2;
// Insert this item into the hole
@@ -94,10 +100,16 @@ class ORM_MPTT_Core extends ORM {
$this->lock();
$this->reload(); // Assume that the prior lock holder may have changed this entry
try {
- $this->db->query(
- "UPDATE {{$this->table_name}} SET `left_ptr` = `left_ptr` - 2 WHERE `left_ptr` > {$this->right_ptr}");
- $this->db->query(
- "UPDATE {{$this->table_name}} SET `right_ptr` = `right_ptr` - 2 WHERE `right_ptr` > {$this->right_ptr}");
+ $this->db_builder
+ ->update($this->table_name)
+ ->set("left_ptr", new Database_Expression("`left_ptr` - 2"))
+ ->where("left_ptr", ">", $this->right_ptr)
+ ->execute();
+ $this->db_builder
+ ->update($this->table_name)
+ ->set("right_ptr", new Database_Expression("`right_ptr` - 2"))
+ ->where("right_ptr", ">", $this->right_ptr)
+ ->execute();
} catch (Exception $e) {
$this->unlock();
throw $e;
@@ -135,10 +147,10 @@ class ORM_MPTT_Core extends ORM {
*/
function parents() {
return $this
- ->where("`left_ptr` <= {$this->left_ptr}")
- ->where("`right_ptr` >= {$this->right_ptr}")
- ->where("id <> {$this->id}")
- ->orderby("left_ptr", "ASC")
+ ->where("left_ptr", "<=", $this->left_ptr)
+ ->where("right_ptr", ">=", $this->right_ptr)
+ ->where("id", "<>", $this->id)
+ ->order_by("left_ptr", "ASC")
->find_all();
}
@@ -149,14 +161,17 @@ class ORM_MPTT_Core extends ORM {
* @param integer SQL limit
* @param integer SQL offset
* @param array additional where clauses
- * @param array orderby
+ * @param array order_by
* @return array ORM
*/
- function children($limit=null, $offset=0, $where=array(), $orderby=array("id" => "ASC")) {
+ function children($limit=null, $offset=null, $where=null, $order_by=array("id" => "ASC")) {
+ if ($where) {
+ $this->merge_where($where);
+ }
+
return $this
- ->where("parent_id", $this->id)
- ->where($where)
- ->orderby($orderby)
+ ->where("parent_id", "=", $this->id)
+ ->order_by($order_by)
->find_all($limit, $offset);
}
@@ -167,10 +182,13 @@ class ORM_MPTT_Core extends ORM {
* @param array additional where clauses
* @return array ORM
*/
- function children_count($where=array()) {
+ function children_count($where=null) {
+ if ($where) {
+ $this->merge_where($where);
+ }
+
return $this
- ->where($where)
- ->where("parent_id", $this->id)
+ ->where("parent_id", "=", $this->id)
->count_all();
}
@@ -180,15 +198,18 @@ class ORM_MPTT_Core extends ORM {
* @param integer SQL limit
* @param integer SQL offset
* @param array additional where clauses
- * @param array orderby
+ * @param array order_by
* @return object ORM_Iterator
*/
- function descendants($limit=null, $offset=0, $where=array(), $orderby=array("id" => "ASC")) {
+ function descendants($limit=null, $offset=null, $where=null, $order_by=array("id" => "ASC")) {
+ if ($where) {
+ $this->merge_where($where);
+ }
+
return $this
- ->where("left_ptr >", $this->left_ptr)
- ->where("right_ptr <=", $this->right_ptr)
- ->where($where)
- ->orderby($orderby)
+ ->where("left_ptr", ">", $this->left_ptr)
+ ->where("right_ptr", "<=", $this->right_ptr)
+ ->order_by($order_by)
->find_all($limit, $offset);
}
@@ -198,11 +219,14 @@ class ORM_MPTT_Core extends ORM {
* @param array additional where clauses
* @return integer child count
*/
- function descendants_count($where=array()) {
+ function descendants_count($where=null) {
+ if ($where) {
+ $this->merge_where($where);
+ }
+
return $this
- ->where("left_ptr >", $this->left_ptr)
- ->where("right_ptr <=", $this->right_ptr)
- ->where($where)
+ ->where("left_ptr", ">", $this->left_ptr)
+ ->where("right_ptr", "<=", $this->right_ptr)
->count_all();
}
@@ -231,23 +255,32 @@ class ORM_MPTT_Core extends ORM {
try {
if ($level_delta) {
// Update the levels for the to-be-moved items
- $this->db->query(
- "UPDATE {{$this->table_name}} SET `level` = `level` + $level_delta" .
- " WHERE `left_ptr` >= $original_left_ptr AND `right_ptr` <= $original_right_ptr");
+ $this->db_builder
+ ->update($this->table_name)
+ ->set("level", new Database_Expression("`level` + $level_delta"))
+ ->where("left_ptr", ">=", $original_left_ptr)
+ ->where("right_ptr", "<=", $original_right_ptr)
+ ->execute();
}
// Make a hole in the target for the move
- $target->db->query(
- "UPDATE {{$this->table_name}} SET `left_ptr` = `left_ptr` + $size_of_hole" .
- " WHERE `left_ptr` >= $target_right_ptr");
- $target->db->query(
- "UPDATE {{$this->table_name}} SET `right_ptr` = `right_ptr` + $size_of_hole" .
- " WHERE `right_ptr` >= $target_right_ptr");
+ $target->db_builder
+ ->update($this->table_name)
+ ->set("left_ptr", new Database_Expression("`left_ptr` + $size_of_hole"))
+ ->where("left_ptr", ">=", $target_right_ptr)
+ ->execute();
+ $target->db_builder
+ ->update($this->table_name)
+ ->set("right_ptr", new Database_Expression("`right_ptr` + $size_of_hole"))
+ ->where("right_ptr", ">=", $target_right_ptr)
+ ->execute();
// Change the parent.
- $this->db->query(
- "UPDATE {{$this->table_name}} SET `parent_id` = {$target->id}" .
- " WHERE `id` = {$this->id}");
+ $this->db_builder
+ ->update($this->table_name)
+ ->set("parent_id", $target->id)
+ ->where("id", "=", $this->id)
+ ->execute();
// If the source is to the right of the target then we just adjusted its left_ptr and right_ptr above.
$left_ptr = $original_left_ptr;
@@ -258,20 +291,25 @@ class ORM_MPTT_Core extends ORM {
}
$new_offset = $target->right_ptr - $left_ptr;
- $this->db->query(
- "UPDATE {{$this->table_name}}" .
- " SET `left_ptr` = `left_ptr` + $new_offset," .
- " `right_ptr` = `right_ptr` + $new_offset" .
- " WHERE `left_ptr` >= $left_ptr" .
- " AND `right_ptr` <= $right_ptr");
+ $this->db_builder
+ ->update($this->table_name)
+ ->set("left_ptr", new Database_Expression("`left_ptr` + $new_offset"))
+ ->set("right_ptr", new Database_Expression("`right_ptr` + $new_offset"))
+ ->where("left_ptr", ">=", $left_ptr)
+ ->where("right_ptr", "<=", $right_ptr)
+ ->execute();
// Close the hole in the source's parent after the move
- $this->db->query(
- "UPDATE {{$this->table_name}} SET `left_ptr` = `left_ptr` - $size_of_hole" .
- " WHERE `left_ptr` > $right_ptr");
- $this->db->query(
- "UPDATE {{$this->table_name}} SET `right_ptr` = `right_ptr` - $size_of_hole" .
- " WHERE `right_ptr` > $right_ptr");
+ $this->db_builder
+ ->update($this->table_name)
+ ->set("left_ptr", new Database_Expression("`left_ptr` - $size_of_hole"))
+ ->where("left_ptr", ">", $right_ptr)
+ ->execute();
+ $this->db_builder
+ ->update($this->table_name)
+ ->set("right_ptr", new Database_Expression("`right_ptr` - $size_of_hole"))
+ ->where("right_ptr", ">", $right_ptr)
+ ->execute();
} catch (Exception $e) {
$this->unlock();
throw $e;
diff --git a/modules/gallery/libraries/SafeString.php b/modules/gallery/libraries/SafeString.php
index ba3a8ffd..cc63f3a7 100644
--- a/modules/gallery/libraries/SafeString.php
+++ b/modules/gallery/libraries/SafeString.php
@@ -146,7 +146,7 @@ class SafeString_Core {
* Escape special HTML chars ("<", ">", "&", etc.) to HTML entities.
*/
private static function _escape_for_html($dirty_html) {
- return html::specialchars($dirty_html);
+ return html::chars($dirty_html);
}
/**
diff --git a/modules/gallery/libraries/Sendmail.php b/modules/gallery/libraries/Sendmail.php
index 7bc21a67..aa2b51a9 100644
--- a/modules/gallery/libraries/Sendmail.php
+++ b/modules/gallery/libraries/Sendmail.php
@@ -52,7 +52,7 @@ class Sendmail_Core {
break;
case "header":
if (count($value) != 2) {
- Kohana::log("error", wordwrap("Invalid header parameters\n" . Kohana::debug($value)));
+ Kohana_Log::add("error", wordwrap("Invalid header parameters\n" . Kohana::debug($value)));
throw new Exception("@todo INVALID_HEADER_PARAMETERS");
}
$this->headers[$value[0]] = $value[1];
@@ -71,7 +71,7 @@ class Sendmail_Core {
public function send() {
if (empty($this->to)) {
- Kohana::log("error", wordwrap("Sending mail failed:\nNo to address specified"));
+ Kohana_Log::add("error", wordwrap("Sending mail failed:\nNo to address specified"));
throw new Exception("@todo TO_IS_REQUIRED_FOR_MAIL");
}
$to = implode(", ", $this->to);
diff --git a/modules/gallery/libraries/drivers/Cache/Database.php b/modules/gallery/libraries/drivers/Cache/Database.php
index 7e2aeabc..82a09ab9 100644
--- a/modules/gallery/libraries/drivers/Cache/Database.php
+++ b/modules/gallery/libraries/drivers/Cache/Database.php
@@ -20,43 +20,33 @@
/*
* Based on the Cache_Sqlite_Driver developed by the Kohana Team
*/
-class Cache_Database_Driver implements Cache_Driver {
+class Cache_Database_Driver extends Cache_Driver {
// Kohana database instance
protected $db;
/**
- * Tests that the storage location is a directory and is writable.
- */
- public function __construct() {
- // Open up an instance of the database
- $this->db = Database::instance();
-
- if (!$this->db->table_exists("caches")) {
- throw new Exception("@todo Cache table is not defined");
- }
- }
-
- /**
* Checks if a cache id is already set.
*
* @param string cache id
* @return boolean
*/
public function exists($id) {
- $count = $this->db->count_records("caches", array("key" => $id, "expiration >=" => time()));
+ $count = db::build()
+ ->where("key", "=", $id)
+ ->where("expiration", ">=", time())
+ ->count_records("caches");
return $count > 0;
}
/**
* Sets a cache item to the given data, tags, and lifetime.
*
- * @param string cache id to set
- * @param string data in the cache
+ * @param array assoc array of key => value pairs
* @param array cache tags
* @param integer lifetime
* @return bool
*/
- public function set($id, $data, array $tags = NULL, $lifetime) {
+ public function set($items, $tags=null, $lifetime=null) {
if (!empty($tags)) {
// Escape the tags, adding brackets so the tag can be explicitly matched
$tags = "<" . implode(">,<", $tags) . ">";
@@ -69,46 +59,53 @@ class Cache_Database_Driver implements Cache_Driver {
$lifetime += time();
}
- if ($this->exists($id)) {
- $status = $this->db->update(
- "caches",
- array("tags" => $tags, "expiration" => $lifetime, "cache" => serialize($data)), array("key" => $id));
- } else {
- $status = $this->db->insert(
- "caches",
- array("key" => $id, "tags" => $tags, "expiration" => $lifetime, "cache" => serialize($data)));
+ foreach ($items as $id => $data) {
+ if ($this->exists($id)) {
+ $status = db::build()
+ ->update("caches")
+ ->set("tags", $tags)
+ ->set("expiration", $lifetime)
+ ->set("cache", serialize($data))
+ ->where("key", "=", $id)
+ ->execute();
+ } else {
+ $status = db::build()
+ ->insert("caches")
+ ->columns("key", "tags", "expiration", "cache")
+ ->values($id, $tags, $lifetime, serialize($data))
+ ->execute();
+ }
}
- return count($status) > 0;
+ return true;
}
/**
- * Finds an array of ids for a given tag.
- *
- * @param string tag name
- * @return array of ids that match the tag
+ * Get cache items by tag
+ * @param array cache tags
+ * @return array cached data
*/
- public function find($tag) {
- $db_result = $this->db->from("caches")
- ->like("tags", "<$tag>")
- ->get()
- ->result(true);
+ public function get_tag($tags) {
+ $db = db::build()
+ ->select()
+ ->from("caches");
+ foreach ($tags as $tag) {
+ $db->where("tags", "LIKE", "%<$tag>%");
+ }
+ $db_result = $db->execute();
// An array will always be returned
$result = array();
+ // Disable notices for unserializing
+ $ER = error_reporting(~E_NOTICE);
if ($db_result->count() > 0) {
- // Disable notices for unserializing
- $ER = error_reporting(~E_NOTICE);
-
foreach ($db_result as $row) {
// Add each cache to the array
$result[$row->key] = unserialize($row->cache);
}
-
- // Turn notices back on
- error_reporting($ER);
}
+ error_reporting($ER);
return $result;
}
@@ -120,9 +117,13 @@ class Cache_Database_Driver implements Cache_Driver {
* @param string cache id
* @return mixed|NULL
*/
- public function get($id) {
+ public function get($keys, $single=false) {
$data = null;
- $result = $this->db->getwhere("caches", array("key" => $id));
+ $result = db::build()
+ ->select()
+ ->from("caches")
+ ->where("key", "IN", $keys)
+ ->execute();
if (count($result) > 0) {
$cache = $result->current();
@@ -152,32 +153,47 @@ class Cache_Database_Driver implements Cache_Driver {
* @param bool delete a tag
* @return bool
*/
- public function delete($id, $tag = false) {
- $this->db->from("caches");
+ public function delete($id, $tag=false) {
+ $db = db::build()
+ ->delete("caches");
if ($id === true) {
- $this->db->where(1);
// Delete all caches
} else if ($tag === true) {
- $this->db->like("tags", "<$id>");
+ $db->where("tags", "LIKE", "%<$id>%");
} else {
- $this->db->where("key", $id);
+ $db->where("key", "=", $id);
}
- $status = $this->db->delete();
+ $status = $db->execute();
return count($status) > 0;
}
/**
+ * Delete cache items by tag
+ */
+ public function delete_tag($tags) {
+ return $this->delete($tags, true);
+ }
+
+ /**
* Deletes all cache files that are older than the current time.
*/
public function delete_expired() {
// Delete all expired caches
- $status = $this->db->from("caches")
- ->where(array("expiration !=" => 0, "expiration <=" => time()))
- ->delete();
+ $status = db::build()
+ ->delete("caches")
+ ->where("expiration", "<>", 0)
+ ->where("expiration", "<=", time())
+ ->execute();
return count($status) > 0;
}
-} // End Cache Database Driver \ No newline at end of file
+ /**
+ * Empty the cache
+ */
+ public function delete_all() {
+ Database::instance()->query("TRUNCATE {caches}");
+ }
+} \ No newline at end of file
diff --git a/modules/gallery/models/item.php b/modules/gallery/models/item.php
index 96415b3d..e3d27b6d 100644
--- a/modules/gallery/models/item.php
+++ b/modules/gallery/models/item.php
@@ -21,7 +21,7 @@ class Item_Model extends ORM_MPTT {
protected $children = 'items';
protected $sorting = array();
- var $rules = array(
+ var $form_rules = array(
"name" => "required|length[0,255]",
"title" => "required|length[0,255]",
"description" => "length[0,65535]",
@@ -120,11 +120,13 @@ class Item_Model extends ORM_MPTT {
if ($this->is_album()) {
@rename(dirname($original_resize_path), dirname($this->resize_path()));
@rename(dirname($original_thumb_path), dirname($this->thumb_path()));
- Database::instance()
- ->update("items",
- array("relative_path_cache" => null,
- "relative_url_cache" => null),
- array("left_ptr >" => $this->left_ptr, "right_ptr <" => $this->right_ptr));
+ db::build()
+ ->update("items")
+ ->set("relative_path_cache", null)
+ ->set("relative_url_cache", null)
+ ->where("left_ptr", ">", $this->left_ptr)
+ ->where("right_ptr", "<", $this->right_ptr)
+ ->execute();
} else {
@rename($original_resize_path, $this->resize_path());
@rename($original_thumb_path, $this->thumb_path());
@@ -170,11 +172,13 @@ class Item_Model extends ORM_MPTT {
$this->name = $new_name;
if ($this->is_album()) {
- Database::instance()
- ->update("items",
- array("relative_path_cache" => null,
- "relative_url_cache" => null),
- array("left_ptr >" => $this->left_ptr, "right_ptr <" => $this->right_ptr));
+ db::build()
+ ->update("items")
+ ->set("relative_url_cache", null)
+ ->set("relative_path_cache", null)
+ ->where("left_ptr", ">", $this->left_ptr)
+ ->where("right_ptr", "<", $this->right_ptr)
+ ->execute();
}
return $this;
@@ -294,14 +298,14 @@ class Item_Model extends ORM_MPTT {
private function _build_relative_caches() {
$names = array();
$slugs = array();
- foreach (Database::instance()
+ foreach (db::build()
->select(array("name", "slug"))
->from("items")
- ->where("left_ptr <=", $this->left_ptr)
- ->where("right_ptr >=", $this->right_ptr)
- ->where("id <>", 1)
- ->orderby("left_ptr", "ASC")
- ->get() as $row) {
+ ->where("left_ptr", "<=", $this->left_ptr)
+ ->where("right_ptr", ">=", $this->right_ptr)
+ ->where("id", "<>", 1)
+ ->order_by("left_ptr", "ASC")
+ ->execute() as $row) {
// Don't encode the names segment
$names[] = rawurlencode($row->name);
$slugs[] = rawurlencode($row->slug);
@@ -318,7 +322,7 @@ class Item_Model extends ORM_MPTT {
* @return string
*/
public function relative_path() {
- if (!$this->loaded) {
+ if (!$this->loaded()) {
return;
}
@@ -333,7 +337,7 @@ class Item_Model extends ORM_MPTT {
* @return string
*/
public function relative_url() {
- if (!$this->loaded) {
+ if (!$this->loaded()) {
return;
}
@@ -371,10 +375,12 @@ class Item_Model extends ORM_MPTT {
// Clear the relative url cache for this item and all children
$this->relative_url_cache = null;
if ($this->is_album()) {
- Database::instance()
- ->update("items",
- array("relative_url_cache" => null),
- array("left_ptr >" => $this->left_ptr, "right_ptr <" => $this->right_ptr));
+ db::build()
+ ->update("items")
+ ->set("relative_url_cache", null)
+ ->where("left_ptr", ">", $this->left_ptr)
+ ->where("right_ptr", "<", $this->right_ptr)
+ ->execute();
}
}
}
@@ -392,7 +398,7 @@ class Item_Model extends ORM_MPTT {
if (!empty($this->changed) && $significant_changes) {
$this->updated = time();
- if (!$this->loaded) {
+ if (!$this->loaded()) {
$this->created = $this->updated;
$this->weight = item::get_max_weight();
} else {
@@ -437,14 +443,14 @@ class Item_Model extends ORM_MPTT {
} else {
$comp = "<";
}
- $db = Database::instance();
+ $db = db::build();
// If the comparison column has NULLs in it, we can't use comparators on it and will have to
// deal with it the hard way.
$count = $db->from("items")
- ->where("parent_id", $this->id)
- ->where($this->sort_column, NULL)
- ->where($where)
+ ->where("parent_id", "=", $this->id)
+ ->where($this->sort_column, "=", NULL)
+ ->merge_where($where)
->count_records();
if (empty($count)) {
@@ -452,9 +458,9 @@ class Item_Model extends ORM_MPTT {
$sort_column = $this->sort_column;
$position = $db->from("items")
- ->where("parent_id", $this->id)
- ->where("$sort_column $comp ", $child->$sort_column)
- ->where($where)
+ ->where("parent_id", "=", $this->id)
+ ->where($sort_column, $comp, $child->$sort_column)
+ ->merge_where($where)
->count_records();
// We stopped short of our target value in the sort (notice that we're using a < comparator
@@ -465,12 +471,14 @@ class Item_Model extends ORM_MPTT {
//
// Fix this by doing a 2nd query where we iterate over the equivalent columns and add them to
// our base value.
- foreach ($db->from("items")
- ->where("parent_id", $this->id)
- ->where($sort_column, $child->$sort_column)
- ->where($where)
- ->orderby(array("id" => "ASC"))
- ->get() as $row) {
+ foreach ($db
+ ->select("id")
+ ->from("items")
+ ->where("parent_id", "=", $this->id)
+ ->where($sort_column, "=", $child->$sort_column)
+ ->merge_where($where)
+ ->order_by(array("id" => "ASC"))
+ ->execute() as $row) {
$position++;
if ($row->id == $child->id) {
break;
@@ -484,19 +492,19 @@ class Item_Model extends ORM_MPTT {
//
// Reproduce the children() functionality here using Database directly to avoid loading the
// whole ORM for each row.
- $orderby = array($this->sort_column => $this->sort_order);
+ $order_by = array($this->sort_column => $this->sort_order);
// Use id as a tie breaker
if ($this->sort_column != "id") {
- $orderby["id"] = "ASC";
+ $order_by["id"] = "ASC";
}
$position = 0;
foreach ($db->select("id")
->from("items")
- ->where("parent_id", $this->id)
- ->where($where)
- ->orderby($orderby)
- ->get() as $row) {
+ ->where("parent_id", "=", $this->id)
+ ->merge_where($where)
+ ->order_by($order_by)
+ ->execute() as $row) {
$position++;
if ($row->id == $child->id) {
break;
@@ -601,18 +609,18 @@ class Item_Model extends ORM_MPTT {
* @param integer SQL limit
* @param integer SQL offset
* @param array additional where clauses
- * @param array orderby
+ * @param array order_by
* @return array ORM
*/
- function children($limit=null, $offset=0, $where=array(), $orderby=null) {
- if (empty($orderby)) {
- $orderby = array($this->sort_column => $this->sort_order);
+ function children($limit=null, $offset=null, $where=array(), $order_by=null) {
+ if (empty($order_by)) {
+ $order_by = array($this->sort_column => $this->sort_order);
// Use id as a tie breaker
if ($this->sort_column != "id") {
- $orderby["id"] = "ASC";
+ $order_by["id"] = "ASC";
}
}
- return parent::children($limit, $offset, $where, $orderby);
+ return parent::children($limit, $offset, $where, $order_by);
}
/**
@@ -626,14 +634,14 @@ class Item_Model extends ORM_MPTT {
* @param array additional where clauses
* @return object ORM_Iterator
*/
- function descendants($limit=null, $offset=0, $where=array(), $orderby=null) {
- if (empty($orderby)) {
- $orderby = array($this->sort_column => $this->sort_order);
+ function descendants($limit=null, $offset=null, $where=array(), $order_by=null) {
+ if (empty($order_by)) {
+ $order_by = array($this->sort_column => $this->sort_order);
// Use id as a tie breaker
if ($this->sort_column != "id") {
- $orderby["id"] = "ASC";
+ $order_by["id"] = "ASC";
}
}
- return parent::descendants($limit, $offset, $where, $orderby);
+ return parent::descendants($limit, $offset, $where, $order_by);
}
}
diff --git a/modules/gallery/models/log.php b/modules/gallery/models/log.php
index c816a4a7..a2044325 100644
--- a/modules/gallery/models/log.php
+++ b/modules/gallery/models/log.php
@@ -28,7 +28,7 @@ class Log_Model extends ORM {
try {
return identity::lookup_user($this->user_id);
} catch (Exception $e) {
- Kohana::log("alert", "Unable to load user with id $this->user_id");
+ Kohana_Log::add("alert", "Unable to load user with id $this->user_id");
return null;
}
} else {
diff --git a/modules/gallery/tests/Access_Helper_Test.php b/modules/gallery/tests/Access_Helper_Test.php
index e9e5cb26..084bfb47 100644
--- a/modules/gallery/tests/Access_Helper_Test.php
+++ b/modules/gallery/tests/Access_Helper_Test.php
@@ -76,7 +76,7 @@ class Access_Helper_Test extends Unit_Test_Case {
access::deny(identity::registered_users(), "view", $item);
$user = identity::create_user("access_test", "Access Test", "");
- foreach ($user->groups as $group) {
+ foreach ($user->groups() as $group) {
$user->remove($group);
}
$user->add($access_test);
@@ -93,7 +93,7 @@ class Access_Helper_Test extends Unit_Test_Case {
access::deny(identity::registered_users(), "view", $item);
$user = identity::create_user("access_test", "Access Test", "");
- foreach ($user->groups as $group) {
+ foreach ($user->groups() as $group) {
$user->remove($group);
}
$user->save();
@@ -106,15 +106,15 @@ class Access_Helper_Test extends Unit_Test_Case {
$item = album::create($root, rand(), "test album");
// New rows exist
- $this->assert_true(ORM::factory("access_cache")->where("item_id", $item->id)->find()->loaded);
- $this->assert_true(ORM::factory("access_intent")->where("item_id", $item->id)->find()->loaded);
+ $this->assert_true(ORM::factory("access_cache")->where("item_id", "=", $item->id)->find()->loaded());
+ $this->assert_true(ORM::factory("access_intent")->where("item_id", "=", $item->id)->find()->loaded());
// Delete the item
$item->delete();
// Rows are gone
- $this->assert_false(ORM::factory("access_cache")->where("item_id", $item->id)->find()->loaded);
- $this->assert_false(ORM::factory("access_intent")->where("item_id", $item->id)->find()->loaded);
+ $this->assert_false(ORM::factory("access_cache")->where("item_id", "=", $item->id)->find()->loaded());
+ $this->assert_false(ORM::factory("access_intent")->where("item_id", "=", $item->id)->find()->loaded());
}
public function new_photos_inherit_parent_permissions_test() {
@@ -131,7 +131,7 @@ class Access_Helper_Test extends Unit_Test_Case {
public function can_allow_deny_and_reset_intent_test() {
$root = ORM::factory("item", 1);
$album = album::create($root, rand(), "test album");
- $intent = ORM::factory("access_intent")->where("item_id", $album)->find();
+ $intent = ORM::factory("access_intent")->where("item_id", "=", $album->id)->find();
// Allow
access::allow(identity::everybody(), "view", $album);
@@ -141,19 +141,19 @@ class Access_Helper_Test extends Unit_Test_Case {
access::deny(identity::everybody(), "view", $album);
$this->assert_same(
access::DENY,
- ORM::factory("access_intent")->where("item_id", $album)->find()->view_1);
+ ORM::factory("access_intent")->where("item_id", "=", $album->id)->find()->view_1);
// Allow again. If the initial value was allow, then the first Allow clause above may not
// have actually changed any values.
access::allow(identity::everybody(), "view", $album);
$this->assert_same(
access::ALLOW,
- ORM::factory("access_intent")->where("item_id", $album)->find()->view_1);
+ ORM::factory("access_intent")->where("item_id", "=", $album->id)->find()->view_1);
access::reset(identity::everybody(), "view", $album);
$this->assert_same(
null,
- ORM::factory("access_intent")->where("item_id", $album)->find()->view_1);
+ ORM::factory("access_intent")->where("item_id", "=", $album->id)->find()->view_1);
}
public function cant_reset_root_item_test() {
@@ -288,7 +288,7 @@ class Access_Helper_Test extends Unit_Test_Case {
public function i_can_edit_test() {
// Create a new user that belongs to no groups
$user = identity::create_user("access_test", "Access Test", "");
- foreach ($user->groups as $group) {
+ foreach ($user->groups() as $group) {
$user->remove($group);
}
$user->save();
diff --git a/modules/gallery/tests/Cache_Test.php b/modules/gallery/tests/Cache_Test.php
index 6b525265..d5bf37cc 100644
--- a/modules/gallery/tests/Cache_Test.php
+++ b/modules/gallery/tests/Cache_Test.php
@@ -20,88 +20,83 @@
class Cache_Test extends Unit_Test_Case {
private $_driver;
public function setup() {
- Database::instance()->from("caches")->where(1)->delete();
+ db::build()->delete("caches")->execute();
$this->_driver = new Cache_Database_Driver();
}
public function cache_exists_test() {
- $db = Database::instance();
-
$this->assert_false($this->_driver->exists("test_key"), "test_key should not be defined");
$id = md5(rand());
- $db->insert("caches", array("key" => $id, "tags" => "<tag1>, <tag2>",
- "expiration" => 84600 + time(),
- "cache" => serialize("some test data")));
+ db::build()
+ ->insert("caches")
+ ->columns("key", "tags", "expiration", "cache")
+ ->values($id, "<tag1>, <tag2>", 84600 + time(), serialize("some test data"))
+ ->execute();
$this->assert_true($this->_driver->exists($id), "test_key should be defined");
}
public function cache_get_test() {
- $db = Database::instance();
-
$id = md5(rand());
- $db->insert("caches", array("key" => $id, "tags" => "<tag1>, <tag2>",
- "expiration" => 84600 + time(),
- "cache" => serialize("some test data")));
- $data = $this->_driver->get($id);
+ db::build()
+ ->insert("caches")
+ ->columns("key", "tags", "expiration", "cache")
+ ->values($id, "<tag1>, <tag2>", 84600 + time(), serialize("some test data"))
+ ->execute();
+
+ $data = $this->_driver->get(array($id));
$this->assert_equal("some test data", $data, "cached data should match");
- $data = $this->_driver->get("");
+ $data = $this->_driver->get(array(""));
$this->assert_equal(null, $data, "cached data should not be found");
}
public function cache_set_test() {
- $db = Database::instance();
-
$id = md5(rand());
$original_data = array("field1" => "value1", "field2" => "value2");
- $this->_driver->set($id, $original_data, array("tag1", "tag2"), 84600);
+ $this->_driver->set(array($id => $original_data), array("tag1", "tag2"), 84600);
- $data = $this->_driver->get($id);
+ $data = $this->_driver->get(array($id));
$this->assert_equal($original_data, $data, "cached data should match");
}
- public function cache_find_test() {
- $db = Database::instance();
-
+ public function cache_get_tag_test() {
$id1 = md5(rand());
$value1 = array("field1" => "value1", "field2" => "value2");
- $this->_driver->set($id1, $value1, array("tag1", "tag2"), 84600);
+ $this->_driver->set(array($id1 => $value1), array("tag1", "tag2"), 84600);
$id2 = md5(rand());
$value2 = array("field3" => "value3", "field4" => "value4");
- $this->_driver->set($id2, $value2, array("tag2", "tag3"), 84600);
+ $this->_driver->set(array($id2 => $value2), array("tag2", "tag3"), 84600);
$id3 = md5(rand());
$value3 = array("field5" => "value5", "field6" => "value6");
- $this->_driver->set($id3, $value3, array("tag3", "tag4"), 84600);
+ $this->_driver->set(array($id3 => $value3), array("tag3", "tag4"), 84600);
- $data = $this->_driver->find("tag2");
+ $data = $this->_driver->get_tag(array("tag2"));
$expected = array($id1 => $value1, $id2 => $value2);
ksort($expected);
$this->assert_equal($expected, $data, "Expected id1 & id2");
- $data = $this->_driver->find("tag4");
+ $data = $this->_driver->get_tag(array("tag4"));
$this->assert_equal(array($id3 => $value3), $data, "Expected id3");
}
public function cache_delete_expired_test() {
- $db = Database::instance();
-
$id1 = md5(rand());
$value1 = array("field1" => "value1", "field2" => "value2");
- $this->_driver->set($id1, $value1, array("tag1", "tag2"), -84600);
+ $this->_driver->set(array($id1 => $value1), array("tag1", "tag2"), -84600);
$id2 = md5(rand());
$value2 = array("field3" => "value3", "field4" => "value4");
- $this->_driver->set($id2, $value2, array("tag2", "tag3"), -846000);
+ $this->_driver->set(array($id2 => $value2), array("tag2", "tag3"), -846000);
$id3 = md5(rand());
$value3 = array("field5" => "value5", "field6" => "value6");
- $this->_driver->set($id3, $value3, array("tag3", "tag4"), -84600);
+ $this->_driver->set(array($id3 => $value3), array("tag3", "tag4"), -84600);
$data = $this->_driver->delete_expired();
@@ -111,19 +106,17 @@ class Cache_Test extends Unit_Test_Case {
}
public function cache_delete_id_test() {
- $db = Database::instance();
-
$id1 = md5(rand());
$value1 = array("field1" => "value1", "field2" => "value2");
- $this->_driver->set($id1, $value1, array("tag1", "tag2"), 84600);
+ $this->_driver->set(array($id1 => $value1), array("tag1", "tag2"), 84600);
$id2 = md5(rand());
$value2 = array("field3" => "value3", "field4" => "value4");
- $this->_driver->set($id2, $value2, array("tag2", "tag3"), 846000);
+ $this->_driver->set(array($id2 => $value2), array("tag2", "tag3"), 846000);
$id3 = md5(rand());
$value3 = array("field5" => "value5", "field6" => "value6");
- $this->_driver->set($id3, $value3, array("tag3", "tag4"), 84600);
+ $this->_driver->set(array($id3 => $value3), array("tag3", "tag4"), 84600);
$this->_driver->delete($id1);
@@ -133,19 +126,17 @@ class Cache_Test extends Unit_Test_Case {
}
public function cache_delete_tag_test() {
- $db = Database::instance();
-
$id1 = md5(rand());
$value1 = array("field1" => "value1", "field2" => "value2");
- $this->_driver->set($id1, $value1, array("tag1", "tag2"), 84600);
+ $this->_driver->set(array($id1 => $value1), array("tag1", "tag2"), 84600);
$id2 = md5(rand());
$value2 = array("field3" => "value3", "field4" => "value4");
- $this->_driver->set($id2, $value2, array("tag2", "tag3"), 846000);
+ $this->_driver->set(array($id2 => $value2), array("tag2", "tag3"), 846000);
$id3 = md5(rand());
$value3 = array("field5" => "value5", "field6" => "value6");
- $this->_driver->set($id3, $value3, array("tag3", "tag4"), 84600);
+ $this->_driver->set(array($id3 => $value3), array("tag3", "tag4"), 84600);
$data = $this->_driver->delete("tag3", true);
@@ -155,19 +146,17 @@ class Cache_Test extends Unit_Test_Case {
}
public function cache_delete_all_test() {
- $db = Database::instance();
-
$id1 = md5(rand());
$value1 = array("field1" => "value1", "field2" => "value2");
- $this->_driver->set($id1, $value1, array("tag1", "tag2"), 84600);
+ $this->_driver->set(array($id1 => $value1), array("tag1", "tag2"), 84600);
$id2 = md5(rand());
$value2 = array("field3" => "value3", "field4" => "value4");
- $this->_driver->set($id2, $value2, array("tag2", "tag3"), 846000);
+ $this->_driver->set(array($id2 => $value2), array("tag2", "tag3"), 846000);
$id3 = md5(rand());
$value3 = array("field5" => "value5", "field6" => "value6");
- $this->_driver->set($id3, $value3, array("tag3", "tag4"), 84600);
+ $this->_driver->set(array($id3 => $value3), array("tag3", "tag4"), 84600);
$data = $this->_driver->delete(true);
diff --git a/modules/gallery/tests/Database_Test.php b/modules/gallery/tests/Database_Test.php
index 98bd4046..6aa186e5 100644
--- a/modules/gallery/tests/Database_Test.php
+++ b/modules/gallery/tests/Database_Test.php
@@ -18,81 +18,95 @@
* Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
*/
class Database_Test extends Unit_Test_Case {
+ function setup() {
+ $config = Kohana_Config::instance();
+ $config->set("database.mock.connection.type", "mock");
+ $config->set("database.mock.cache", false);
+ $config->set("database.mock.table_prefix", "g_");
+ }
+
function simple_where_test() {
- $sql = Database::instance()
- ->where("a", 1)
- ->where("b", 2)
+ $sql = db::build("mock")
+ ->select("some_column")
+ ->from("some_table")
+ ->where("a", "=", 1)
+ ->where("b", "=", 2)
->compile();
$sql = str_replace("\n", " ", $sql);
- $this->assert_same("SELECT * WHERE `a` = 1 AND `b` = 2", $sql);
+ $this->assert_same("SELECT [some_column] FROM [some_table] WHERE [a] = [1] AND [b] = [2]", $sql);
}
function compound_where_test() {
- $sql = Database::instance()
- ->where("outer1", 1)
- ->open_paren()
- ->where("inner1", 1)
- ->orwhere("inner2", 2)
- ->close_paren()
- ->where("outer2", 2)
+ $sql = db::build("mock")
+ ->select()
+ ->where("outer1", "=", 1)
+ ->and_open()
+ ->where("inner1", "=", 1)
+ ->or_where("inner2", "=", 2)
+ ->close()
+ ->where("outer2", "=", 2)
->compile();
$sql = str_replace("\n", " ", $sql);
$this->assert_same(
- "SELECT * WHERE `outer1` = 1 AND (`inner1` = 1 OR `inner2` = 2) AND `outer2` = 2",
+ "SELECT [*] WHERE [outer1] = [1] AND ([inner1] = [1] OR [inner2] = [2]) AND [outer2] = [2]",
$sql);
}
function group_first_test() {
- $sql = Database::instance()
- ->open_paren()
- ->where("inner1", 1)
- ->orwhere("inner2", 2)
- ->close_paren()
- ->where("outer1", 1)
- ->where("outer2", 2)
+ $sql = db::build("mock")
+ ->select()
+ ->and_open()
+ ->where("inner1", "=", 1)
+ ->or_where("inner2", "=", 2)
+ ->close()
+ ->where("outer1", "=", 1)
+ ->where("outer2", "=", 2)
->compile();
$sql = str_replace("\n", " ", $sql);
$this->assert_same(
- "SELECT * WHERE (`inner1` = 1 OR `inner2` = 2) AND `outer1` = 1 AND `outer2` = 2",
+ "SELECT [*] WHERE ([inner1] = [1] OR [inner2] = [2]) AND [outer1] = [1] AND [outer2] = [2]",
$sql);
}
function where_array_test() {
- $sql = Database::instance()
- ->where("outer1", 1)
- ->open_paren()
- ->where("inner1", 1)
- ->orwhere(array("inner2" => 2, "inner3" => 3))
- ->close_paren()
+ $sql = db::build("mock")
+ ->select()
+ ->where("outer1", "=", 1)
+ ->and_open()
+ ->where("inner1", "=", 1)
+ ->or_where("inner2", "=", 2)
+ ->or_where("inner3", "=", 3)
+ ->close()
->compile();
$sql = str_replace("\n", " ", $sql);
$this->assert_same(
- "SELECT * WHERE `outer1` = 1 AND (`inner1` = 1 OR `inner2` = 2 OR `inner3` = 3)",
+ "SELECT [*] WHERE [outer1] = [1] AND ([inner1] = [1] OR [inner2] = [2] OR [inner3] = [3])",
$sql);
}
function notlike_test() {
- $sql = Database::instance()
- ->where("outer1", 1)
- ->open_paren()
- ->ornotlike("inner1", 1)
- ->close_paren()
+ $sql = db::build("mock")
+ ->select()
+ ->where("outer1", "=", 1)
+ ->or_open()
+ ->where("inner1", "NOT LIKE", "%1%")
+ ->close()
->compile();
$sql = str_replace("\n", " ", $sql);
$this->assert_same(
- "SELECT * WHERE `outer1` = 1 OR ( `inner1` NOT LIKE '%1%')",
+ "SELECT [*] WHERE [outer1] = [1] OR ([inner1] NOT LIKE [%1%])",
$sql);
}
function prefix_replacement_test() {
- $db = Database_For_Test::instance();
- $converted = $db->add_table_prefixes("CREATE TABLE IF NOT EXISTS {test_tables} (
+ $db = Database::instance("mock");
+ $converted = $db->add_table_prefixes("CREATE TABLE IF NOT EXISTS {test} (
`id` int(9) NOT NULL auto_increment,
`name` varchar(32) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY(`name`))
ENGINE=InnoDB DEFAULT CHARSET=utf8");
- $expected = "CREATE TABLE IF NOT EXISTS g3test_test_tables (
+ $expected = "CREATE TABLE IF NOT EXISTS g_test (
`id` int(9) NOT NULL auto_increment,
`name` varchar(32) NOT NULL,
PRIMARY KEY (`id`),
@@ -100,16 +114,16 @@ class Database_Test extends Unit_Test_Case {
ENGINE=InnoDB DEFAULT CHARSET=utf8";
$this->assert_same($expected, $converted);
- $sql = "UPDATE {test_tables} SET `name` = '{test string}' " .
+ $sql = "UPDATE {test} SET `name` = '{test string}' " .
"WHERE `item_id` IN " .
- " (SELECT `id` FROM {items} " .
+ " (SELECT `id` FROM {test} " .
" WHERE `left_ptr` >= 1 " .
" AND `right_ptr` <= 6)";
$sql = $db->add_table_prefixes($sql);
- $expected = "UPDATE g3test_test_tables SET `name` = '{test string}' " .
+ $expected = "UPDATE g_test SET `name` = '{test string}' " .
"WHERE `item_id` IN " .
- " (SELECT `id` FROM g3test_items " .
+ " (SELECT `id` FROM g_test " .
" WHERE `left_ptr` >= 1 " .
" AND `right_ptr` <= 6)";
@@ -117,29 +131,52 @@ class Database_Test extends Unit_Test_Case {
}
function prefix_no_replacement_test() {
- $update = Database_For_Test::instance()->from("test_tables")
- ->where("1 = 1")
+ $sql = db::build("mock")
+ ->from("test_tables")
+ ->where("1", "=", "1")
->set(array("name" => "Test Name"))
- ->update();
+ ->update()
+ ->compile();
+ $sql = str_replace("\n", " ", $sql);
+ $this->assert_same("UPDATE [test_tables] SET [name] = [Test Name] WHERE [1] = [1]", $sql);
+ }
+}
- $expected = "UPDATE `g3test_test_tables` SET `name` = 'Test Name' WHERE 1 = 1";
+class Database_Mock extends Database {
+ public function connect() {
+ }
- $this->assert_same($expected, $update);
+ public function disconnect() {
}
-}
-class Database_For_Test extends Database {
- static function instance() {
- $db = new Database_For_Test();
- $db->_table_names["{items}"] = "g3test_items";
- $db->config["table_prefix"] = "g3test_";
- return $db;
+ public function set_charset($charset) {
}
- public function query($sql = '') {
- if (!empty($sql)) {
- $sql = $this->add_table_prefixes($sql);
- }
- return $sql;
+ public function query_execute($sql) {
}
-}
+
+ public function escape($val) {
+ }
+
+ public function list_constraints($table) {
+ }
+
+ public function list_fields($table) {
+ }
+
+ public function list_tables() {
+ return array("test");
+ }
+
+ public function quote_column($val) {
+ return "[$val]";
+ }
+
+ public function quote_table($val) {
+ return "[$val]";
+ }
+
+ public function quote($val) {
+ return "[$val]";
+ }
+} \ No newline at end of file
diff --git a/modules/gallery/tests/DrawForm_Test.php b/modules/gallery/tests/DrawForm_Test.php
index 7ee80ca2..90361d06 100644
--- a/modules/gallery/tests/DrawForm_Test.php
+++ b/modules/gallery/tests/DrawForm_Test.php
@@ -25,25 +25,26 @@ class DrawForm_Test extends Unit_Test_Case {
$form->submit("")->value(t("Submit"));
$rendered = $form->__toString();
+ $csrf = access::csrf_token();
$expected = "<form action=\"http://./index.php/test/controller\" method=\"post\" " .
"id=\"g-test-group-form\">\n" .
- "<input type=\"hidden\" name=\"csrf\" value=\"" . access::csrf_token() . "\" />\n" .
+ "<input type=\"hidden\" name=\"csrf\" value=\"$csrf\" />" .
" <ul>\n" .
" <li>\n" .
" <label for=\"title\" >Title</label>\n" .
- " <input type=\"text\" id=\"title\" name=\"title\" value=\"\" " .
+ " <input type=\"text\" name=\"title\" value=\"\" " .
"class=\"textbox\" />\n" .
" </li>\n" .
" <li>\n" .
" <label for=\"description\" >Text Area</label>\n" .
- " <textarea id=\"description\" name=\"description\" " .
+ " <textarea name=\"description\" rows=\"\" cols=\"\" " .
"class=\"textarea\" ></textarea>\n" .
" </li>\n" .
" <li>\n" .
" <input type=\"submit\" value=\"Submit\" class=\"submit\" />\n" .
" </li>\n" .
" </ul>\n" .
- "</form>\n";
+ "</form>";
$this->assert_same($expected, $rendered);
}
@@ -55,20 +56,21 @@ class DrawForm_Test extends Unit_Test_Case {
$group->submit("")->value(t("Submit"));
$rendered = $form->__toString();
+ $csrf = access::csrf_token();
$expected = "<form action=\"http://./index.php/test/controller\" method=\"post\" " .
"id=\"g-test-group-form\">\n" .
- "<input type=\"hidden\" name=\"csrf\" value=\"" . access::csrf_token() . "\" />\n" .
+ "<input type=\"hidden\" name=\"csrf\" value=\"$csrf\" />" .
" <fieldset>\n" .
" <legend>Test Group</legend>\n" .
" <ul>\n" .
" <li>\n" .
" <label for=\"title\" >Title</label>\n" .
- " <input type=\"text\" id=\"title\" name=\"title\" value=\"\" " .
+ " <input type=\"text\" name=\"title\" value=\"\" " .
"class=\"textbox\" />\n" .
" </li>\n" .
" <li>\n" .
" <label for=\"description\" >Text Area</label>\n" .
- " <textarea id=\"description\" name=\"description\" " .
+ " <textarea name=\"description\" rows=\"\" cols=\"\" " .
"class=\"textarea\" ></textarea>\n" .
" </li>\n" .
" <li>\n" .
@@ -76,7 +78,7 @@ class DrawForm_Test extends Unit_Test_Case {
" </li>\n" .
" </ul>\n" .
" </fieldset>\n" .
- "</form>\n";
+ "</form>";
$this->assert_same($expected, $rendered);
}
@@ -91,20 +93,21 @@ class DrawForm_Test extends Unit_Test_Case {
$group->submit("")->value(t("Submit"));
$rendered = $form->__toString();
+ $csrf = access::csrf_token();
$expected = "<form action=\"http://./index.php/test/controller\" method=\"post\" " .
"id=\"g-test-group-form\">\n" .
- "<input type=\"hidden\" name=\"csrf\" value=\"" . access::csrf_token() . "\" />\n" .
+ "<input type=\"hidden\" name=\"csrf\" value=\"$csrf\" />" .
" <fieldset>\n" .
" <legend>Test Group</legend>\n" .
" <ul>\n" .
" <li>\n" .
" <label for=\"title\" >Title</label>\n" .
- " <input type=\"text\" id=\"title\" name=\"title\" value=\"\" " .
+ " <input type=\"text\" name=\"title\" value=\"\" " .
"class=\"textbox\" />\n" .
" </li>\n" .
" <li>\n" .
" <label for=\"description\" >Text Area</label>\n" .
- " <textarea id=\"description\" name=\"description\" " .
+ " <textarea name=\"description\" rows=\"\" cols=\"\" " .
"class=\"textarea\" ></textarea>\n" .
" </li>\n" .
" <li>\n" .
@@ -116,7 +119,7 @@ class DrawForm_Test extends Unit_Test_Case {
"<script type=\"text/javascript\">\n" .
"alert('Test Javascript');\n" .
"</script>\n" .
- "</form>\n";
+ "</form>";
$this->assert_same($expected, $rendered);
}
}
diff --git a/modules/gallery/tests/File_Structure_Test.php b/modules/gallery/tests/File_Structure_Test.php
index 36342fda..a046b4dd 100644
--- a/modules/gallery/tests/File_Structure_Test.php
+++ b/modules/gallery/tests/File_Structure_Test.php
@@ -57,10 +57,12 @@ class File_Structure_Test extends Unit_Test_Case {
}
private function _check_view_preamble($path, &$errors) {
+ $expected_2 = null;
// The preamble for views is a single line that prevents direct script access
if (strpos($path, SYSPATH) === 0) {
// Kohana preamble
$expected = "<?php defined('SYSPATH') OR die('No direct access allowed.'); ?>\n";
+ $expected_2 = "<?php defined('SYSPATH') OR die('No direct access allowed.');\n"; // error.php
} else {
// Gallery preamble
// @todo use the same preamble for both!
@@ -71,26 +73,32 @@ class File_Structure_Test extends Unit_Test_Case {
$actual = fgets($fp);
fclose($fp);
- if ($expected != $actual) {
+ if ($expected != $actual && $expected_2 != $actual) {
$errors[] = "$path:1\n expected:\n\t$expected\n actual:\n\t$actual";
}
}
private function _check_php_preamble($path, &$errors) {
+ $expected_2 = null; $expected_3 = null; $expected_4 = null;
if (strpos($path, SYSPATH) === 0 ||
strpos($path, MODPATH . "unit_test") === 0) {
// Kohana: we only care about the first line
$fp = fopen($path, "r");
$actual = array(fgets($fp));
fclose($fp);
- $expected = array("<?php defined('SYSPATH') OR die('No direct access allowed.');\n");
+ $expected = array("<?php defined('SYSPATH') OR die('No direct script access.');\n");
+ $expected_2 = array("<?php defined('SYSPATH') OR die('No direct access allowed.');\n");
+ $expected_3 = array("<?php defined('SYSPATH') or die('No direct access allowed.');\n");
+ $expected_4 = array("<?php defined('SYSPATH') or die('No direct script access.');\n");
} else if (strpos($path, MODPATH . "forge") === 0 ||
strpos($path, MODPATH . "exif/lib") === 0 ||
strpos($path, MODPATH . "gallery/lib/HTMLPurifier") === 0 ||
$path == MODPATH . "user/lib/PasswordHash.php" ||
$path == DOCROOT . "var/database.php") {
// 3rd party module security-only preambles, similar to Gallery's
- $expected = array("<?php defined(\"SYSPATH\") or die(\"No direct script access.\");\n");
+ $expected = array("<?php defined(\"SYSPATH\") or die(\"No direct access allowed.\");\n");
+ $expected_2 = array("<?php defined('SYSPATH') OR die('No direct access allowed.');\n");
+ $expected_3 = array("<?php defined(\"SYSPATH\") or die(\"No direct script access.\");\n");
$fp = fopen($path, "r");
$actual = array(fgets($fp));
fclose($fp);
@@ -131,7 +139,7 @@ class File_Structure_Test extends Unit_Test_Case {
" */",
);
}
- if ($expected != $actual) {
+ if ($expected != $actual && $expected_2 != $actual && $expected_3 != $actual && $expected_4 != $actual) {
$errors[] = "$path:1\n expected\n\t" . join("\n\t", $expected) .
"\n actual:\n\t" . join("\n\t", $actual);
}
diff --git a/modules/gallery/tests/I18n_Test.php b/modules/gallery/tests/Gallery_I18n_Test.php
index 9010606a..895e3051 100644
--- a/modules/gallery/tests/I18n_Test.php
+++ b/modules/gallery/tests/Gallery_I18n_Test.php
@@ -18,7 +18,7 @@
* Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
*/
-class I18n_Test extends Unit_Test_Case {
+class Gallery_I18n_Test extends Unit_Test_Case {
private $i18n;
public function setup() {
@@ -26,10 +26,10 @@ class I18n_Test extends Unit_Test_Case {
'root_locale' => 'en',
'default_locale' => 'te_ST',
'locale_dir' => VARPATH . 'locale/');
- $this->i18n = I18n::instance($config);
+ $this->i18n = Gallery_I18n::instance($config);
ORM::factory("incoming_translation")
- ->where("locale", "te_ST")
+ ->where("locale", "=", "te_ST")
->delete_all();
$messages_te_ST = array(
@@ -43,7 +43,7 @@ class I18n_Test extends Unit_Test_Case {
foreach ($messages_te_ST as $data) {
list ($message, $translation) = $data;
$entry = ORM::factory("incoming_translation");
- $entry->key = I18n::get_message_key($message);
+ $entry->key = Gallery_I18n::get_message_key($message);
$entry->message = serialize($message);
$entry->translation = serialize($translation);
$entry->locale = 'te_ST';
@@ -62,7 +62,7 @@ class I18n_Test extends Unit_Test_Case {
$locale = $this->i18n->locale();
$this->assert_equal("de_DE", $locale);
}
-
+
public function translate_simple_test() {
$result = $this->i18n->translate('Hello world');
$this->assert_equal('Hallo Welt', $result);
diff --git a/modules/gallery/tests/Gallery_Installer_Test.php b/modules/gallery/tests/Gallery_Installer_Test.php
index 36ced2bb..43399fb4 100644
--- a/modules/gallery/tests/Gallery_Installer_Test.php
+++ b/modules/gallery/tests/Gallery_Installer_Test.php
@@ -29,13 +29,13 @@ class Gallery_Installer_Test extends Unit_Test_Case {
}
public function install_registers_gallery_module_test() {
- $gallery = ORM::factory("module")->where("name", "gallery")->find();
+ $gallery = ORM::factory("module")->where("name", "=", "gallery")->find();
$this->assert_equal("gallery", $gallery->name);
}
public function install_creates_root_item_test() {
$max_right_ptr = ORM::factory("item")
- ->select("MAX(`right_ptr`) AS `right_ptr`")
+ ->select(new Database_Expression("MAX(`right_ptr`) AS `right_ptr`"))
->find()->right_ptr;
$root = ORM::factory('item')->find(1);
$this->assert_equal("Gallery", $root->title);
diff --git a/modules/gallery/tests/Item_Helper_Test.php b/modules/gallery/tests/Item_Helper_Test.php
index a364423a..f0c653c0 100644
--- a/modules/gallery/tests/Item_Helper_Test.php
+++ b/modules/gallery/tests/Item_Helper_Test.php
@@ -29,13 +29,13 @@ class Item_Helper_Test extends Unit_Test_Case {
access::allow(identity::everybody(), "view", $album);
$this->assert_equal(
1,
- ORM::factory("item")->viewable()->where("id", $item->id)->count_all());
+ ORM::factory("item")->viewable()->where("id", "=", $item->id)->count_all());
// We can't see the item when permissions are denied
access::deny(identity::everybody(), "view", $album);
$this->assert_equal(
0,
- ORM::factory("item")->viewable()->where("id", $item->id)->count_all());
+ ORM::factory("item")->viewable()->where("id", "=", $item->id)->count_all());
}
public function validate_url_safe_test() {
diff --git a/modules/gallery/tests/Item_Model_Test.php b/modules/gallery/tests/Item_Model_Test.php
index e7dce893..bf5fca1a 100644
--- a/modules/gallery/tests/Item_Model_Test.php
+++ b/modules/gallery/tests/Item_Model_Test.php
@@ -35,8 +35,12 @@ class Item_Model_Test extends Unit_Test_Case {
$item = self::_create_random_item();
// Force the creation date to something well known
- $db = Database::instance();
- $db->update("items", array("created" => 0, "updated" => 0), array("id" => $item->id));
+ db::build()
+ ->update("items")
+ ->set("created", 0)
+ ->set("updated", 0)
+ ->where("id", "=", $item->id)
+ ->execute();
$item->reload();
$item->title = "foo"; // force a change
$item->save();
@@ -51,8 +55,11 @@ class Item_Model_Test extends Unit_Test_Case {
$this->assert_same(0, $item->view_count);
// Force the updated date to something well known
- $db = Database::instance();
- $db->update("items", array("updated" => 0), array("id" => $item->id));
+ db::build()
+ ->update("items")
+ ->set("updated", 0)
+ ->where("id", "=", $item->id)
+ ->execute();
$item->reload();
$item->view_count++;
$item->save();
diff --git a/modules/gallery/tests/ORM_MPTT_Test.php b/modules/gallery/tests/ORM_MPTT_Test.php
index a749542b..69b6bea9 100644
--- a/modules/gallery/tests/ORM_MPTT_Test.php
+++ b/modules/gallery/tests/ORM_MPTT_Test.php
@@ -190,8 +190,8 @@ class ORM_MPTT_Test extends Unit_Test_Case {
$parent->reload();
$this->assert_equal(3, $parent->descendants()->count());
- $this->assert_equal(2, $parent->descendants(null, 0, array("type" => "photo"))->count());
- $this->assert_equal(1, $parent->descendants(null, 0, array("type" => "album"))->count());
+ $this->assert_equal(2, $parent->descendants(null, null, array(array("type", "=", "photo")))->count());
+ $this->assert_equal(1, $parent->descendants(null, null, array(array("type", "=", "album")))->count());
}
public function descendant_limit_test() {
@@ -228,7 +228,7 @@ class ORM_MPTT_Test extends Unit_Test_Case {
$parent->reload();
$this->assert_equal(3, $parent->descendants_count());
- $this->assert_equal(2, $parent->descendants_count(array("type" => "photo")));
- $this->assert_equal(1, $parent->descendants_count(array("type" => "album")));
+ $this->assert_equal(2, $parent->descendants_count(array(array("type", "=", "photo"))));
+ $this->assert_equal(1, $parent->descendants_count(array(array("type", "=", "album"))));
}
}
diff --git a/modules/gallery/tests/Sendmail_Test.php b/modules/gallery/tests/Sendmail_Test.php
index 64c1fff0..f3a8d897 100644
--- a/modules/gallery/tests/Sendmail_Test.php
+++ b/modules/gallery/tests/Sendmail_Test.php
@@ -19,9 +19,7 @@
*/
class Sendmail_Test extends Unit_Test_Case {
public function setup() {
- $config = Kohana::config("sendmail");
- $config["from"] = "from@gallery3.com";
- Kohana::config_set("sendmail", $config);
+ Kohana_Config::instance()->set("sendmail.from", "from@gallery3.com");
}
public function sendmail_test() {
diff --git a/modules/gallery/tests/controller_auth_data.txt b/modules/gallery/tests/controller_auth_data.txt
index 1fe29ffb..044a8f22 100644
--- a/modules/gallery/tests/controller_auth_data.txt
+++ b/modules/gallery/tests/controller_auth_data.txt
@@ -3,7 +3,8 @@ modules/comment/helpers/comment_rss.php feed
modules/digibug/controllers/digibug.php print_proxy DIRTY_CSRF|DIRTY_AUTH
modules/digibug/controllers/digibug.php close_window DIRTY_AUTH
modules/gallery/controllers/admin.php __call DIRTY_AUTH
-modules/gallery/controllers/albums.php _show DIRTY_CSRF
+modules/gallery/controllers/albums.php index DIRTY_AUTH
+modules/gallery/controllers/albums.php show DIRTY_CSRF
modules/gallery/controllers/combined.php javascript DIRTY_AUTH
modules/gallery/controllers/combined.php css DIRTY_AUTH
modules/gallery/controllers/file_proxy.php __call DIRTY_CSRF|DIRTY_AUTH
diff --git a/modules/gallery/tests/xss_data.txt b/modules/gallery/tests/xss_data.txt
index 3708bc6d..5a15d2ac 100644
--- a/modules/gallery/tests/xss_data.txt
+++ b/modules/gallery/tests/xss_data.txt
@@ -121,6 +121,7 @@ modules/gallery/views/admin_themes_preview.html.php 7 DIRTY_ATTR $url
modules/gallery/views/form_uploadify.html.php 20 DIRTY_JS url::file("lib/uploadify/uploadify.swf")
modules/gallery/views/form_uploadify.html.php 21 DIRTY_JS url::site("simple_uploader/add_photo/{$album->id}")
modules/gallery/views/form_uploadify.html.php 25 DIRTY_JS url::file("lib/uploadify/cancel.png")
+modules/gallery/views/form_uploadify.html.php 27 DIRTY_JS $simultaneous_upload_limit
modules/gallery/views/form_uploadify.html.php 52 DIRTY_JS t("Completed")
modules/gallery/views/in_place_edit.html.php 2 DIRTY form::open($action,array("method"=>"post","id"=>"g-in-place-edit-form","class"=>"g-short-form"),$hidden)
modules/gallery/views/in_place_edit.html.php 5 DIRTY form::input("input",$form["input"]," class=\"textbox\"")
@@ -274,11 +275,11 @@ modules/rss/views/feed.mrss.php 55 DIRTY_ATTR @fil
modules/rss/views/feed.mrss.php 56 DIRTY_ATTR $child->mime_type
modules/rss/views/feed.mrss.php 57 DIRTY_ATTR $child->resize_height
modules/rss/views/feed.mrss.php 58 DIRTY_ATTR $child->resize_width
-modules/rss/views/feed.mrss.php 62 DIRTY_ATTR $child->file_url(true)
-modules/rss/views/feed.mrss.php 63 DIRTY_ATTR @filesize($child->file_path())
-modules/rss/views/feed.mrss.php 64 DIRTY_ATTR $child->mime_type
-modules/rss/views/feed.mrss.php 65 DIRTY_ATTR $child->height
-modules/rss/views/feed.mrss.php 66 DIRTY_ATTR $child->width
+modules/rss/views/feed.mrss.php 61 DIRTY_ATTR $child->file_url(true)
+modules/rss/views/feed.mrss.php 62 DIRTY_ATTR @filesize($child->file_path())
+modules/rss/views/feed.mrss.php 63 DIRTY_ATTR $child->mime_type
+modules/rss/views/feed.mrss.php 64 DIRTY_ATTR $child->height
+modules/rss/views/feed.mrss.php 65 DIRTY_ATTR $child->width
modules/rss/views/feed.mrss.php 70 DIRTY_ATTR $child->file_url(true)
modules/rss/views/feed.mrss.php 71 DIRTY_ATTR @filesize($child->file_path())
modules/rss/views/feed.mrss.php 72 DIRTY_ATTR $child->height
diff --git a/modules/gallery/views/kohana/error.php b/modules/gallery/views/kohana/error.php
new file mode 100644
index 00000000..7c4a959c
--- /dev/null
+++ b/modules/gallery/views/kohana/error.php
@@ -0,0 +1,279 @@
+<? defined("SYSPATH") or die("No direct script access.") ?>
+<? $error_id = uniqid("error") ?>
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+ <head>
+ <style type="text/css">
+ body {
+ background: #fff;
+ font-size: 14px;
+ line-height: 130%;
+ }
+
+ div.big_box {
+ padding: 10px;
+ background: #eee;
+ border: solid 1px #ccc;
+ font-family: sans-serif;
+ color: #111;
+ width: 60em;
+ margin: 20px auto;
+ }
+
+ div#framework_error {
+ text-align: center;
+ }
+
+ div#error_details {
+ text-align: left;
+ }
+
+ code {
+ font-family: monospace;
+ font-size: 12px;
+ margin: 20px 20px 20px 0px;
+ color: #333;
+ white-space: pre-wrap;
+ white-space: -moz-pre-wrap;
+ word-wrap: break-word;
+ }
+
+ code .line {
+ padding-left: 10px;
+ }
+
+ h3 {
+ font-family: sans-serif;
+ margin: 2px 0px 0px 0px;
+ padding: 8px 0px 0px 0px;
+ border-top: 1px solid #ddd;
+ }
+
+ p {
+ padding: 0px;
+ margin: 0px 0px 10px 0px;
+ }
+
+ li, pre {
+ padding: 0px;
+ margin: 0px;
+ }
+
+ .collapsed {
+ display: none;
+ }
+
+ .highlight {
+ font-weight: bold;
+ color: darkred;
+ }
+
+ #kohana_error .message {
+ display: block;
+ padding-bottom: 10px;
+ }
+
+ .source {
+ border: solid 1px #ccc;
+ background: #efe;
+ margin-bottom: 5px;
+ }
+
+ table {
+ width: 100%;
+ display: block;
+ margin: 0 0 0.4em;
+ padding: 0;
+ border-collapse: collapse;
+ background: #efe;
+ }
+
+ table td {
+ border: solid 1px #ddd;
+ text-align: left;
+ vertical-align: top;
+ padding: 0.4em;
+ }
+
+ .args table td.key {
+ width: 200px;
+ }
+
+ .number {
+ padding-right: 1em;
+ }
+ </style>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+ <title><?= t("Something went wrong!") ?></title>
+
+ <script type="text/javascript">
+ function koggle(elem) {
+ elem = document.getElementById(elem);
+ if (elem.style && elem.style["display"]) {
+ // Only works with the "style" attr
+ var disp = elem.style["display"];
+ } else {
+ if (elem.currentStyle) {
+ // For MSIE, naturally
+ var disp = elem.currentStyle["display"];
+ } else {
+ if (window.getComputedStyle) {
+ // For most other browsers
+ var disp = document.defaultView.getComputedStyle(elem, null).getPropertyValue('display');
+ }
+ }
+ }
+
+ // Toggle the state of the "display" style
+ elem.style.display = disp == 'block' ? 'none' : 'block';
+ return false;
+ }
+ </script>
+ </head>
+ <body>
+ <? try { $user = identity::active_user(); } catch (Exception $e) { } ?>
+ <? $admin = php_sapi_name() == "cli" || isset($user) && $user->admin ?>
+ <div class="big_box" id="framework_error">
+ <h1>
+ <?= t("Dang... Something went wrong!") ?>
+ </h1>
+ <h2>
+ <?= t("We tried really hard, but it's broken.") ?>
+ </h2>
+ <? if (!$admin): ?>
+ <p>
+ <?= t("Talk to your Gallery administrator for help fixing this!") ?>
+ </p>
+ <? endif ?>
+ </div>
+ <? if ($admin): ?>
+ <div class="big_box" id="error_details">
+ <h2>
+ <?= t("Hey wait, you're an admin! We can tell you stuff.") ?>
+ </h2>
+ <div id="kohana_error">
+ <h3>
+ <span class="type">
+ <?= $type?> [ <?= $code ?> ]:
+ </span>
+ <span class="message">
+ <?= $message?>
+ </span>
+ </h3>
+ <div id="<?= $error_id ?>" class="content">
+ <ol class="trace">
+ <li class="snippet">
+ <p>
+ <span class="file">
+ <?= Kohana_Exception::debug_path($file)?>[ <?= $line?> ]
+ </span>
+ </p>
+
+ <div class="source">
+ <? if (Kohana_Exception::$source_output and $source_code = Kohana_Exception::debug_source($file, $line)): ?><code><? foreach ($source_code as $num => $row): ?><span class="line <?= ($num == $line) ? "highlight" : ""?>"><span class="number"><?= $num ?></span><?= htmlspecialchars($row, ENT_NOQUOTES, Kohana::CHARSET) ?></span><? endforeach ?></code>
+ <? endif ?>
+ </div>
+ </li>
+
+ <? if (Kohana_Exception::$trace_output): ?>
+ <? foreach (Kohana_Exception::trace($trace) as $i => $step): ?>
+ <li class="snippet">
+ <p>
+ <span class="file">
+ <? if ($step["file"]): $source_id = "$error_id.source.$i" ?>
+ <? if (Kohana_Exception::$source_output and $step["source"]): ?>
+ <a href="#<?= $source_id ?>" onclick="return koggle('<?= $source_id ?>')"><?= Kohana_Exception::debug_path($step["file"])?>[ <?= $step["line"]?> ]</a>
+ <? else: ?>
+ <span class="file"><?= Kohana_Exception::debug_path($step["file"])?>[ <?= $step["line"]?> ]</span>
+ <? endif ?>
+ <? else: ?>
+ {<?= t("PHP internal call")?>}
+ <? endif?>
+ </span>
+ &raquo;
+ <?= $step["function"]?>(<? if ($step["args"]): $args_id = "$error_id.args.$i" ?>
+ <a href="#<?= $args_id ?>" onclick="return koggle('<?= $args_id ?>')"><?= t("arguments")?></a>
+ <? endif?>)
+ </p>
+ <? if (isset($args_id)): ?>
+ <div id="<?= $args_id ?>" class="args collapsed">
+ <table cellspacing="0">
+ <? foreach ($step["args"] as $name => $arg): ?>
+ <tr>
+ <td class="key">
+ <pre><?= $name?></pre>
+ </td>
+ <td class="value">
+ <pre><?= Kohana_Exception::dump($arg) ?></pre>
+ </td>
+ </tr>
+ <? endforeach?>
+ </table>
+ </div>
+ <? endif?>
+ <? if (Kohana_Exception::$source_output and $step["source"] and isset($source_id)): ?>
+ <pre id="<?= $source_id ?>" class="source collapsed"><code><? foreach ($step["source"] as $num => $row): ?><span class="line <?= ($num == $step["line"]) ? "highlight" : "" ?>"><span class="number"><?= $num ?></span><?= htmlspecialchars($row, ENT_NOQUOTES, Kohana::CHARSET) ?></span><? endforeach ?></code></pre>
+ <? endif?>
+ </li>
+ <? unset($args_id, $source_id) ?>
+ <? endforeach?>
+ </ol>
+ <? endif ?>
+
+ </div>
+ <h2>
+ <a href="#<?= $env_id = $error_id."environment" ?>" onclick="return koggle('<?= $env_id ?>')"><?= t("Environment")?></a>
+ </h2>
+ <div id="<?= $env_id ?>" class="content collapsed">
+ <? $included = get_included_files()?>
+ <h3><a href="#<?= $env_id = $error_id."environment_included" ?>" onclick="return koggle('<?= $env_id ?>')"><?= t("Included files")?></a>(<?= count($included)?>)</h3>
+ <div id="<?= $env_id ?>" class="collapsed">
+ <table cellspacing="0">
+ <? foreach ($included as $file): ?>
+ <tr>
+ <td>
+ <pre><?= Kohana_Exception::debug_path($file)?></pre>
+ </td>
+ </tr>
+ <? endforeach?>
+ </table>
+ </div>
+ <? $included = get_loaded_extensions()?>
+ <h3><a href="#<?= $env_id = $error_id."environment_loaded" ?>" onclick="return koggle('<?= $env_id ?>')"><?= t("Loaded extensions")?></a>(<?= count($included)?>)</h3>
+ <div id="<?= $env_id ?>" class="collapsed">
+ <table cellspacing="0">
+ <? foreach ($included as $file): ?>
+ <tr>
+ <td>
+ <pre><?= Kohana_Exception::debug_path($file)?></pre>
+ </td>
+ </tr>
+ <? endforeach?>
+ </table>
+ </div>
+ <? foreach (array("_SESSION", "_GET", "_POST", "_FILES", "_COOKIE", "_SERVER") as $var): ?>
+ <? if ( empty($GLOBALS[$var]) OR ! is_array($GLOBALS[$var])) continue ?>
+ <h3><a href="#<?= $env_id = "$error_id.environment" . strtolower($var) ?>"
+ onclick="return koggle('<?= $env_id ?>')">$<?= $var?></a></h3>
+ <div id="<?= $env_id ?>" class="collapsed">
+ <table cellspacing="0">
+ <? foreach ($GLOBALS[$var] as $key => $value): ?>
+ <tr>
+ <td class="key">
+ <code>
+ <?= $key?>
+ </code>
+ </td>
+ <td class="value">
+ <pre><?= Kohana_Exception::dump($value) ?></pre>
+ </td>
+ </tr>
+ <? endforeach?>
+ </table>
+ </div>
+ <? endforeach?>
+ </div>
+ </div>
+ </div>
+ <? endif ?>
+ </body>
+</html>
diff --git a/modules/gallery/views/kohana_error_page.php b/modules/gallery/views/kohana_error_page.php
index 0d8801e5..b9fdcc19 100644
--- a/modules/gallery/views/kohana_error_page.php
+++ b/modules/gallery/views/kohana_error_page.php
@@ -120,7 +120,7 @@
<? else: ?>
<? $trace = $PHP_ERROR ? array_slice(debug_backtrace(), 1) : $exception->getTraceAsString(); ?>
<? if (!empty($trace)): ?>
- <? Kohana::Log("error", print_r($trace, 1)); ?>
+ <? Kohana_Log::add("error", print_r($trace, 1)); ?>
<? endif ?>
<? endif ?>
</body>
diff --git a/modules/gallery_unit_test/controllers/gallery_unit_test.php b/modules/gallery_unit_test/controllers/gallery_unit_test.php
index 58e0d9c5..498dd756 100644
--- a/modules/gallery_unit_test/controllers/gallery_unit_test.php
+++ b/modules/gallery_unit_test/controllers/gallery_unit_test.php
@@ -20,7 +20,7 @@
class Gallery_Unit_Test_Controller extends Controller {
function Index() {
if (!TEST_MODE) {
- print Kohana::show_404();
+ throw new Kohana_404_Exception();
}
// Jump through some hoops to satisfy the way that we check for the site_domain in
@@ -30,6 +30,7 @@ class Gallery_Unit_Test_Controller extends Controller {
$_SERVER["SCRIPT_FILENAME"] = "index.php";
$_SERVER["SCRIPT_NAME"] = "./index.php";
+ $config = Kohana_Config::instance();
$original_config = DOCROOT . "var/database.php";
$test_config = VARPATH . "database.php";
if (!file_exists($original_config)) {
@@ -41,20 +42,20 @@ class Gallery_Unit_Test_Controller extends Controller {
if (empty($db_config['unit_test'])) {
$default = $db_config['default'];
$conn = $default['connection'];
- Kohana::config_set('database.unit_test.benchmark', $default['benchmark']);
- Kohana::config_set('database.unit_test.persistent', $default['persistent']);
- Kohana::config_set('database.unit_test.connection.type', $conn['type']);
- Kohana::config_set('database.unit_test.connection.user', $conn['user']);
- Kohana::config_set('database.unit_test.connection.pass', $conn['pass']);
- Kohana::config_set('database.unit_test.connection.host', $conn['host']);
- Kohana::config_set('database.unit_test.connection.port', $conn['port']);
- Kohana::config_set('database.unit_test.connection.socket', $conn['socket']);
- Kohana::config_set('database.unit_test.connection.database', "{$conn['database']}_test");
- Kohana::config_set('database.unit_test.character_set', $default['character_set']);
- Kohana::config_set('database.unit_test.table_prefix', $default['table_prefix']);
- Kohana::config_set('database.unit_test.object', $default['object']);
- Kohana::config_set('database.unit_test.cache', $default['cache']);
- Kohana::config_set('database.unit_test.escape', $default['escape']);
+ $config->set('database.unit_test.benchmark', $default['benchmark']);
+ $config->set('database.unit_test.persistent', $default['persistent']);
+ $config->set('database.unit_test.connection.type', $conn['type']);
+ $config->set('database.unit_test.connection.user', $conn['user']);
+ $config->set('database.unit_test.connection.pass', $conn['pass']);
+ $config->set('database.unit_test.connection.host', $conn['host']);
+ $config->set('database.unit_test.connection.port', $conn['port']);
+ $config->set('database.unit_test.connection.socket', $conn['socket']);
+ $config->set('database.unit_test.connection.database', "{$conn['database']}_test");
+ $config->set('database.unit_test.character_set', $default['character_set']);
+ $config->set('database.unit_test.table_prefix', $default['table_prefix']);
+ $config->set('database.unit_test.object', $default['object']);
+ $config->set('database.unit_test.cache', $default['cache']);
+ $config->set('database.unit_test.escape', $default['escape']);
$db_config = Kohana::config('database');
}
@@ -69,7 +70,7 @@ class Gallery_Unit_Test_Controller extends Controller {
$db->connect();
// Make this the default database for the rest of this run
- Database::$instances = array('default' => $db);
+ Database::set_default_instance($db);
} catch (Exception $e) {
print "{$e->getMessage()}\n";
return;
@@ -80,7 +81,7 @@ class Gallery_Unit_Test_Controller extends Controller {
// Clean out the database
if ($tables = $db->list_tables()) {
foreach ($db->list_tables() as $table) {
- $db->query("DROP TABLE $table");
+ $db->query("DROP TABLE {{$table}}");
}
}
@@ -97,7 +98,7 @@ class Gallery_Unit_Test_Controller extends Controller {
$db->clear_cache();
// Rest the cascading class path
- Kohana::config_set("core", Kohana::config_load("core"));
+ $config->set("core", $config->load("core"));
// Install the active modules
// Force gallery and user to be installed first to resolve dependencies.
@@ -119,7 +120,7 @@ class Gallery_Unit_Test_Controller extends Controller {
}
}
- Kohana::config_set('unit_test.paths', $paths);
+ $config->set('unit_test.paths', $paths);
// Trigger late-binding install actions (defined in gallery_event::user_login)
graphics::choose_default_toolkit();
diff --git a/modules/gallery_unit_test/helpers/MY_request.php b/modules/gallery_unit_test/helpers/MY_request.php
new file mode 100644
index 00000000..452fb0cc
--- /dev/null
+++ b/modules/gallery_unit_test/helpers/MY_request.php
@@ -0,0 +1,25 @@
+<?php defined("SYSPATH") or die("No direct script access.");
+/**
+ * Gallery - a web based photo album viewer and editor
+ * Copyright (C) 2000-2009 Bharat Mediratta
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or (at
+ * your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+class request extends request_Core {
+ static function set_user_agent($value) {
+ self::$user_agent = null;
+ $_SERVER["HTTP_USER_AGENT"] = $value;
+ }
+}
diff --git a/modules/gallery_unit_test/helpers/diff.php b/modules/gallery_unit_test/helpers/diff.php
new file mode 100644
index 00000000..7b573732
--- /dev/null
+++ b/modules/gallery_unit_test/helpers/diff.php
@@ -0,0 +1,26 @@
+<?php defined("SYSPATH") or die("No direct script access.");
+/**
+ * Gallery - a web based photo album viewer and editor
+ * Copyright (C) 2000-2009 Bharat Mediratta
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or (at
+ * your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+class diff_Core {
+ static function compare($a, $b) {
+ fwrite(fopen($a_name = tempnam("/tmp", "test"), "w"), $a);
+ fwrite(fopen($b_name = tempnam("/tmp", "test"), "w"), $b);
+ return `diff $a_name $b_name`;
+ }
+}
diff --git a/modules/gallery_unit_test/views/kohana_unit_test_cli.php b/modules/gallery_unit_test/views/kohana_unit_test_cli.php
index 352671eb..3203ee44 100644
--- a/modules/gallery_unit_test/views/kohana_unit_test_cli.php
+++ b/modules/gallery_unit_test/views/kohana_unit_test_cli.php
@@ -44,7 +44,7 @@ foreach ($results as $class => $methods) {
red_start(), color_end());
echo " ", $result->getMessage(), "\n";
echo " ", $result->getFile();
- echo " ", "(" . Kohana::lang("unit_test.line") . " " . $result->getLine(), ")\n";
+ echo " ", "(line " . $result->getLine(), ")\n";
if ($result->getDebug() !== null) {
echo " ", "(", gettype($result->getDebug()), ") ",
var_export($result->getDebug(), true), "\n";
diff --git a/modules/image_block/helpers/image_block_block.php b/modules/image_block/helpers/image_block_block.php
index 79bd92ba..f591e8d1 100644
--- a/modules/image_block/helpers/image_block_block.php
+++ b/modules/image_block/helpers/image_block_block.php
@@ -35,18 +35,18 @@ class image_block_block_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);
}
diff --git a/modules/kohana23_compat/config/pagination.php b/modules/kohana23_compat/config/pagination.php
new file mode 100644
index 00000000..d2fcd2b1
--- /dev/null
+++ b/modules/kohana23_compat/config/pagination.php
@@ -0,0 +1,27 @@
+<?php defined("SYSPATH") or die("No direct script access.");
+/**
+ * Gallery - a web based photo album viewer and editor
+ * Copyright (C) 2000-2009 Bharat Mediratta
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or (at
+ * your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+$config["default"] = array(
+ "directory" => "pagination",
+ "style" => "classic",
+ "uri_segment" => 3,
+ "query_string" => "",
+ "items_per_page" => 20,
+ "auto_hide" => FALSE
+);
diff --git a/modules/kohana23_compat/libraries/MY_Database_Builder.php b/modules/kohana23_compat/libraries/MY_Database_Builder.php
new file mode 100644
index 00000000..c82b6ac4
--- /dev/null
+++ b/modules/kohana23_compat/libraries/MY_Database_Builder.php
@@ -0,0 +1,46 @@
+<?php defined("SYSPATH") or die("No direct script access.");
+/**
+ * Gallery - a web based photo album viewer and editor
+ * Copyright (C) 2000-2009 Bharat Mediratta
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or (at
+ * your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+class Database_Builder extends Database_Builder_Core {
+ /**
+ * Merge in a series of where clause tuples and call where() on each one.
+ * @chainable
+ */
+ public function merge_where($tuples) {
+ foreach ($tuples as $tuple) {
+ $this->where($tuple[0], $tuple[1], $tuple[2]);
+ }
+ return $this;
+ }
+
+ /**
+ * Merge in a series of where clause tuples and call or_where() on each one.
+ * @chainable
+ */
+ public function merge_or_where($tuples) {
+ foreach ($tuples as $tuple) {
+ $this->or_where($tuple[0], $tuple[1], $tuple[2]);
+ }
+ return $this;
+ }
+
+ public function compile() {
+ return parent::compile();
+ }
+} \ No newline at end of file
diff --git a/modules/kohana23_compat/libraries/Pagination.php b/modules/kohana23_compat/libraries/Pagination.php
new file mode 100644
index 00000000..2b06f359
--- /dev/null
+++ b/modules/kohana23_compat/libraries/Pagination.php
@@ -0,0 +1,252 @@
+<?php defined("SYSPATH") or die("No direct script access.");
+/**
+ * Gallery - a web based photo album viewer and editor
+ * Copyright (C) 2000-2009 Bharat Mediratta
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or (at
+ * your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+/**
+ * Pagination library.
+ *
+ * $Id: Pagination.php 3769 2008-12-15 00:48:56Z zombor $
+ *
+ * @package Core
+ * @author Kohana Team
+ * @copyright (c) 2007-2008 Kohana Team
+ * @license http://kohanaphp.com/license.html
+ */
+class Pagination_Core {
+
+ // Config values
+ protected $base_url = '';
+ protected $directory = 'pagination';
+ protected $style = 'classic';
+ protected $uri_segment = 3;
+ protected $query_string = '';
+ protected $items_per_page = 20;
+ protected $total_items = 0;
+ protected $auto_hide = FALSE;
+
+ // Autogenerated values
+ protected $url;
+ protected $current_page;
+ protected $total_pages;
+ protected $current_first_item;
+ protected $current_last_item;
+ protected $first_page;
+ protected $last_page;
+ protected $previous_page;
+ protected $next_page;
+ protected $sql_offset;
+ protected $sql_limit;
+
+ /**
+ * Constructs and returns a new Pagination object.
+ *
+ * @param array configuration settings
+ * @return object
+ */
+ public function factory($config = array())
+ {
+ return new Pagination($config);
+ }
+
+ /**
+ * Constructs a new Pagination object.
+ *
+ * @param array configuration settings
+ * @return void
+ */
+ public function __construct($config = array())
+ {
+ // No custom group name given
+ if ( ! isset($config['group']))
+ {
+ $config['group'] = 'default';
+ }
+
+ // Pagination setup
+ $this->initialize($config);
+ }
+
+ /**
+ * Sets config values.
+ *
+ * @throws Kohana_Exception
+ * @param array configuration settings
+ * @return void
+ */
+ public function initialize($config = array())
+ {
+ // Load config group
+ if (isset($config['group']))
+ {
+ // Load and validate config group
+ if ( ! is_array($group_config = Kohana::config('pagination.'.$config['group'])))
+ throw new Kohana_Exception('pagination.undefined_group: ' . $config['group']);
+
+ // All pagination config groups inherit default config group
+ if ($config['group'] !== 'default')
+ {
+ // Load and validate default config group
+ if ( ! is_array($default_config = Kohana::config('pagination.default')))
+ throw new Kohana_Exception('pagination.undefined_group: default');
+
+ // Merge config group with default config group
+ $group_config += $default_config;
+ }
+
+ // Merge custom config items with config group
+ $config += $group_config;
+ }
+
+ // Assign config values to the object
+ foreach ($config as $key => $value)
+ {
+ if (property_exists($this, $key))
+ {
+ $this->$key = $value;
+ }
+ }
+
+ // Clean view directory
+ $this->directory = trim($this->directory, '/').'/';
+
+ // Build generic URL with page in query string
+ if ($this->query_string !== '')
+ {
+ // Extract current page
+ $this->current_page = isset($_GET[$this->query_string]) ? (int) $_GET[$this->query_string] : 1;
+
+ // Insert {page} placeholder
+ $_GET[$this->query_string] = '{page}';
+
+ // Create full URL
+ $base_url = ($this->base_url === '') ? Router::$current_uri : $this->base_url;
+ $this->url = url::site($base_url).'?'.str_replace('%7Bpage%7D', '{page}', http_build_query($_GET));
+
+ // Reset page number
+ $_GET[$this->query_string] = $this->current_page;
+ }
+
+ // Build generic URL with page as URI segment
+ else
+ {
+ // Use current URI if no base_url set
+ $this->url = ($this->base_url === '') ? Router::$segments : explode('/', trim($this->base_url, '/'));
+
+ // Convert uri 'label' to corresponding integer if needed
+ if (is_string($this->uri_segment))
+ {
+ if (($key = array_search($this->uri_segment, $this->url)) === FALSE)
+ {
+ // If uri 'label' is not found, auto add it to base_url
+ $this->url[] = $this->uri_segment;
+ $this->uri_segment = count($this->url) + 1;
+ }
+ else
+ {
+ $this->uri_segment = $key + 2;
+ }
+ }
+
+ // Insert {page} placeholder
+ $this->url[$this->uri_segment - 1] = '{page}';
+
+ // Create full URL
+ $this->url = url::site(implode('/', $this->url)).Router::$query_string;
+
+ // Extract current page
+ $this->current_page = URI::instance()->segment($this->uri_segment);
+ }
+
+ // Core pagination values
+ $this->total_items = (int) max(0, $this->total_items);
+ $this->items_per_page = (int) max(1, $this->items_per_page);
+ $this->total_pages = (int) ceil($this->total_items / $this->items_per_page);
+ $this->current_page = (int) min(max(1, $this->current_page), max(1, $this->total_pages));
+ $this->current_first_item = (int) min((($this->current_page - 1) * $this->items_per_page) + 1, $this->total_items);
+ $this->current_last_item = (int) min($this->current_first_item + $this->items_per_page - 1, $this->total_items);
+
+ // If there is no first/last/previous/next page, relative to the
+ // current page, value is set to FALSE. Valid page number otherwise.
+ $this->first_page = ($this->current_page === 1) ? FALSE : 1;
+ $this->last_page = ($this->current_page >= $this->total_pages) ? FALSE : $this->total_pages;
+ $this->previous_page = ($this->current_page > 1) ? $this->current_page - 1 : FALSE;
+ $this->next_page = ($this->current_page < $this->total_pages) ? $this->current_page + 1 : FALSE;
+
+ // SQL values
+ $this->sql_offset = (int) ($this->current_page - 1) * $this->items_per_page;
+ $this->sql_limit = sprintf(' LIMIT %d OFFSET %d ', $this->items_per_page, $this->sql_offset);
+ }
+
+ /**
+ * Generates the HTML for the chosen pagination style.
+ *
+ * @param string pagination style
+ * @return string pagination html
+ */
+ public function render($style = NULL)
+ {
+ // Hide single page pagination
+ if ($this->auto_hide === TRUE AND $this->total_pages <= 1)
+ return '';
+
+ if ($style === NULL)
+ {
+ // Use default style
+ $style = $this->style;
+ }
+
+ // Return rendered pagination view
+ return View::factory($this->directory.$style, get_object_vars($this))->render();
+ }
+
+ /**
+ * Magically converts Pagination object to string.
+ *
+ * @return string pagination html
+ */
+ public function __toString()
+ {
+ return $this->render();
+ }
+
+ /**
+ * Magically gets a pagination variable.
+ *
+ * @param string variable key
+ * @return mixed variable value if the key is found
+ * @return void if the key is not found
+ */
+ public function __get($key)
+ {
+ if (isset($this->$key))
+ return $this->$key;
+ }
+
+ /**
+ * Adds a secondary interface for accessing properties, e.g. $pagination->total_pages().
+ * Note that $pagination->total_pages is the recommended way to access properties.
+ *
+ * @param string function name
+ * @return string
+ */
+ public function __call($func, $args = NULL)
+ {
+ return $this->__get($func);
+ }
+
+} // End Pagination Class \ No newline at end of file
diff --git a/modules/notification/helpers/notification.php b/modules/notification/helpers/notification.php
index 9a40b0b9..e9fc3f33 100644
--- a/modules/notification/helpers/notification.php
+++ b/modules/notification/helpers/notification.php
@@ -24,8 +24,8 @@ class notification {
}
return ORM::factory("subscription")
- ->where("item_id", $item_id)
- ->where("user_id", $user->id)
+ ->where("item_id", "=", $item_id)
+ ->where("user_id", "=", $user->id)
->find();
}
@@ -35,10 +35,10 @@ class notification {
}
return ORM::factory("subscription")
- ->where("item_id", $item->id)
- ->where("user_id", $user->id)
+ ->where("item_id", "=", $item->id)
+ ->where("user_id", "=", $user->id)
->find()
- ->loaded;
+ ->loaded();
}
static function add_watch($item, $user=null) {
@@ -60,8 +60,8 @@ class notification {
}
$subscription = ORM::factory("subscription")
- ->where("item_id", $item->id)
- ->where("user_id", $user->id)
+ ->where("item_id", "=", $item->id)
+ ->where("user_id", "=", $user->id)
->find()->delete();
}
}
@@ -71,8 +71,8 @@ class notification {
foreach (ORM::factory("subscription")
->select("user_id")
->join("items", "subscriptions.item_id", "items.id")
- ->where("items.left_ptr <=", $item->left_ptr)
- ->where("items.right_ptr >", $item->right_ptr)
+ ->where("items.left_ptr", "<=", $item->left_ptr)
+ ->where("items.right_ptr", ">", $item->right_ptr)
->find_all()
->as_array() as $subscriber) {
$subscriber_ids[] = $subscriber->user_id;
@@ -170,13 +170,13 @@ class notification {
}
static function send_pending_notifications() {
- foreach (Database::instance()
- ->select("DISTINCT email")
+ foreach (db::build()
+ ->select(new Database_Expression("DISTINCT `email`"))
->from("pending_notifications")
- ->get() as $row) {
+ ->execute() as $row) {
$email = $row->email;
$result = ORM::factory("pending_notification")
- ->where("email", $email)
+ ->where("email", "=", $email)
->find_all();
if ($result->count() == 1) {
$pending = $result->current();
diff --git a/modules/notification/helpers/notification_event.php b/modules/notification/helpers/notification_event.php
index 6b2df574..2c7ede27 100644
--- a/modules/notification/helpers/notification_event.php
+++ b/modules/notification/helpers/notification_event.php
@@ -25,8 +25,8 @@ class notification_event_Core {
try {
notification::send_item_updated($new);
} catch (Exception $e) {
- Kohana::log("error", "@todo notification_event::item_updated() failed");
- Kohana::Log("error", $e->getMessage() . "\n" . $e->getTraceAsString());
+ Kohana_Log::add("error", "@todo notification_event::item_updated() failed");
+ Kohana_Log::add("error", $e->getMessage() . "\n" . $e->getTraceAsString());
}
}
@@ -34,8 +34,8 @@ class notification_event_Core {
try {
notification::send_item_add($item);
} catch (Exception $e) {
- Kohana::log("error", "@todo notification_event::item_created() failed");
- Kohana::Log("error", $e->getMessage() . "\n" . $e->getTraceAsString());
+ Kohana_Log::add("error", "@todo notification_event::item_created() failed");
+ Kohana_Log::add("error", $e->getMessage() . "\n" . $e->getTraceAsString());
}
}
@@ -47,20 +47,22 @@ class notification_event_Core {
notification::remove_watch($item);
}
} catch (Exception $e) {
- Kohana::log("error", "@todo notification_event::item_deleted() failed");
- Kohana::Log("error", $e->getMessage() . "\n" . $e->getTraceAsString());
+ Kohana_Log::add("error", "@todo notification_event::item_deleted() failed");
+ Kohana_Log::add("error", $e->getMessage() . "\n" . $e->getTraceAsString());
}
}
static function user_deleted($user) {
- ORM::factory("subscriptions")
- ->where(array("user_id", $user->id))
- ->delete_all();
+ db::build()
+ ->delete("subscriptions")
+ ->where("user_id", "=", $user->id)
+ ->execute();
}
static function identity_provider_changed($old_provider, $new_provider) {
- ORM::factory("subscriptions")
- ->delete_all();
+ db::build()
+ ->delete("subscriptions")
+ ->execute();
}
static function comment_created($comment) {
@@ -69,8 +71,8 @@ class notification_event_Core {
notification::send_comment_published($comment);
}
} catch (Exception $e) {
- Kohana::log("error", "@todo notification_event::comment_created() failed");
- Kohana::Log("error", $e->getMessage() . "\n" . $e->getTraceAsString());
+ Kohana_Log::add("error", "@todo notification_event::comment_created() failed");
+ Kohana_Log::add("error", $e->getMessage() . "\n" . $e->getTraceAsString());
}
}
@@ -80,19 +82,19 @@ class notification_event_Core {
notification::send_comment_published($new);
}
} catch (Exception $e) {
- Kohana::log("error", "@todo notification_event::comment_updated() failed");
- Kohana::Log("error", $e->getMessage() . "\n" . $e->getTraceAsString());
+ Kohana_Log::add("error", "@todo notification_event::comment_updated() failed");
+ Kohana_Log::add("error", $e->getMessage() . "\n" . $e->getTraceAsString());
}
}
static function user_before_delete($user) {
try {
ORM::factory("subscription")
- ->where("user_id", $user->id)
+ ->where("user_id", "=", $user->id)
->delete_all();
} catch (Exception $e) {
- Kohana::log("error", "@todo notification_event::user_before_delete() failed");
- Kohana::Log("error", $e->getMessage() . "\n" . $e->getTraceAsString());
+ Kohana_Log::add("error", "@todo notification_event::user_before_delete() failed");
+ Kohana_Log::add("error", $e->getMessage() . "\n" . $e->getTraceAsString());
}
}
@@ -100,8 +102,8 @@ class notification_event_Core {
try {
notification::send_pending_notifications();
} catch (Exception $e) {
- Kohana::log("error", "@todo notification_event::batch_complete() failed");
- Kohana::Log("error", $e->getMessage() . "\n" . $e->getTraceAsString());
+ Kohana_Log::add("error", "@todo notification_event::batch_complete() failed");
+ Kohana_Log::add("error", $e->getMessage() . "\n" . $e->getTraceAsString());
}
}
diff --git a/modules/organize/controllers/organize.php b/modules/organize/controllers/organize.php
index 08c80de3..201ced30 100644
--- a/modules/organize/controllers/organize.php
+++ b/modules/organize/controllers/organize.php
@@ -48,7 +48,7 @@ class Organize_Controller extends Controller {
access::required("view", $target_album);
access::required("add", $target_album);
- foreach ($this->input->post("source_ids") as $source_id) {
+ foreach (Input::instance()->post("source_ids") as $source_id) {
$source = ORM::factory("item", $source_id);
if (!$source->contains($target_album)) {
access::required("edit", $source);
@@ -69,13 +69,17 @@ class Organize_Controller extends Controller {
access::required("view", $album);
access::required("edit", $album);
- $source_ids = $this->input->post("source_ids", array());
+ $source_ids = Input::instance()->post("source_ids", array());
if ($album->sort_column != "weight") {
$i = 0;
foreach ($album->children() as $child) {
// Do this directly in the database to avoid sending notifications
- Database::Instance()->update("items", array("weight" => ++$i), array("id" => $child->id));
+ db::build()
+ ->update("items")
+ ->set("weight", ++$i)
+ ->where("id", "=", $child->id)
+ ->execute();
}
$album->sort_column = "weight";
$album->sort_order = "ASC";
@@ -91,15 +95,20 @@ class Organize_Controller extends Controller {
// Make a hole
$count = count($source_ids);
- Database::Instance()->query(
- "UPDATE {items} " .
- "SET `weight` = `weight` + $count " .
- "WHERE `weight` >= $target_weight AND `parent_id` = {$album->id}");
+ db::build()
+ ->update("items")
+ ->set("weight", new Database_Expression("`weight` + $count"))
+ ->where("weight", ">=", $target_weight)
+ ->where("parent_id", "=", $album->id)
+ ->execute();
// Insert source items into the hole
foreach ($source_ids as $source_id) {
- Database::Instance()->update(
- "items", array("weight" => $target_weight++), array("id" => $source_id));
+ db::build()
+ ->update("items")
+ ->set("weight", $target_weight++)
+ ->where("id", "=", $source_id)
+ ->execute();
}
module::event("album_rearrange", $album);
diff --git a/modules/organize/js/organize.js b/modules/organize/js/organize.js
index 3dbf9a55..556aa7e7 100644
--- a/modules/organize/js/organize.js
+++ b/modules/organize/js/organize.js
@@ -149,7 +149,7 @@
window.location.reload();
});
- $("#g-dialog #g-organize-close").click(function(event) {
+ $("#g-organize-close").click(function(event) {
$("#g-dialog").dialog("close");
});
diff --git a/modules/organize/views/organize_tree.html.php b/modules/organize/views/organize_tree.html.php
index 50c8c351..513c0625 100644
--- a/modules/organize/views/organize_tree.html.php
+++ b/modules/organize/views/organize_tree.html.php
@@ -8,7 +8,7 @@
<?= html::clean($album->title) ?>
</span>
<ul>
- <? foreach ($album->children(null, 0, array("type" => "album")) as $child): ?>
+ <? foreach ($album->children(null, null, array(array("type", "=", "album"))) as $child): ?>
<? if ($selected && $child->contains($selected)): ?>
<?= View::factory("organize_tree.html", array("selected" => $selected, "album" => $child)); ?>
<? else: ?>
diff --git a/modules/rss/controllers/rss.php b/modules/rss/controllers/rss.php
index ed2acef8..41c781d9 100644
--- a/modules/rss/controllers/rss.php
+++ b/modules/rss/controllers/rss.php
@@ -21,13 +21,13 @@ class Rss_Controller extends Controller {
public static $page_size = 20;
public function feed($module_id, $feed_id, $id=null) {
- $page = (int) $this->input->get("page", 1);
+ $page = (int) Input::instance()->get("page", 1);
if ($page < 1) {
url::redirect(url::merge(array("page" => 1)));
}
// Configurable page size between 1 and 100, default 20
- $page_size = max(1, min(100, (int) $this->input->get("page_size", self::$page_size)));
+ $page_size = max(1, min(100, (int) Input::instance()->get("page_size", self::$page_size)));
// Run the appropriate feed callback
if (module::is_active($module_id)) {
@@ -39,7 +39,7 @@ class Rss_Controller extends Controller {
}
}
if (empty($feed)) {
- Kohana::show_404();
+ throw new Kohana_404_Exception();
}
if ($feed->max_pages && $page > $feed->max_pages) {
diff --git a/modules/search/controllers/search.php b/modules/search/controllers/search.php
index 2f1aeb76..ea870847 100644
--- a/modules/search/controllers/search.php
+++ b/modules/search/controllers/search.php
@@ -20,8 +20,8 @@
class Search_Controller extends Controller {
public function index() {
$page_size = module::get_var("gallery", "page_size", 9);
- $q = $this->input->get("q");
- $page = $this->input->get("page", 1);
+ $q = Input::instance()->get("q");
+ $page = Input::instance()->get("page", 1);
$offset = ($page - 1) * $page_size;
// Make sure that the page references a valid offset
diff --git a/modules/search/helpers/search.php b/modules/search/helpers/search.php
index 8c3bd3ab..b2497eae 100644
--- a/modules/search/helpers/search.php
+++ b/modules/search/helpers/search.php
@@ -20,7 +20,7 @@
class search_Core {
static function search($q, $limit, $offset) {
$db = Database::instance();
- $q = $db->escape_str($q);
+ $q = $db->escape($q);
if (!identity::active_user()->admin) {
foreach (identity::group_ids_for_active_user() as $id) {
@@ -60,8 +60,8 @@ class search_Core {
static function update($item) {
$data = new ArrayObject();
- $record = ORM::factory("search_record")->where("item_id", $item->id)->find();
- if (!$record->loaded) {
+ $record = ORM::factory("search_record")->where("item_id", "=", $item->id)->find();
+ if (!$record->loaded()) {
$record->item_id = $item->id;
}
@@ -72,16 +72,14 @@ class search_Core {
}
static function stats() {
- $remaining = Database::instance()
- ->select("items.id")
+ $remaining = db::build()
->from("items")
->join("search_records", "items.id", "search_records.item_id", "left")
- ->open_paren()
- ->where("search_records.item_id", null)
- ->orwhere("search_records.dirty", 1)
- ->close_paren()
- ->get()
- ->count();
+ ->and_open()
+ ->where("search_records.item_id", "IS", null)
+ ->or_where("search_records.dirty", "=", 1)
+ ->close()
+ ->count_records();
$total = ORM::factory("item")->count_all();
$percent = round(100 * ($total - $remaining) / $total);
diff --git a/modules/search/helpers/search_event.php b/modules/search/helpers/search_event.php
index 836bbe15..1add6e5f 100644
--- a/modules/search/helpers/search_event.php
+++ b/modules/search/helpers/search_event.php
@@ -28,7 +28,7 @@ class search_event_Core {
static function item_deleted($item) {
ORM::factory("search_record")
- ->where("item_id", $item->id)
+ ->where("item_id", "=", $item->id)
->delete_all();
}
diff --git a/modules/search/helpers/search_task.php b/modules/search/helpers/search_task.php
index 9508f420..e039e493 100644
--- a/modules/search/helpers/search_task.php
+++ b/modules/search/helpers/search_task.php
@@ -20,10 +20,10 @@
class search_task_Core {
static function available_tasks() {
// Delete extra search_records
- Database::instance()->query(
- "DELETE FROM {search_records} " .
- "WHERE {search_records}.`item_id` NOT IN " .
- "(SELECT `id` FROM {items})");
+ db::build()
+ ->delete("search_records")
+ ->where("item_id", "NOT IN", db::build()->select("id")->from("items"))
+ ->execute();
list ($remaining, $total, $percent) = search::stats();
return array(Task_Definition::factory()
@@ -45,8 +45,8 @@ class search_task_Core {
$start = microtime(true);
foreach (ORM::factory("item")
->join("search_records", "items.id", "search_records.item_id", "left")
- ->where("search_records.item_id", null)
- ->orwhere("search_records.dirty", 1)
+ ->where("search_records.item_id", "IS", null)
+ ->or_where("search_records.dirty", "=", 1)
->find_all() as $item) {
// The query above can take a long time, so start the timer after its done
// to give ourselves a little time to actually process rows.
diff --git a/modules/server_add/controllers/admin_server_add.php b/modules/server_add/controllers/admin_server_add.php
index f32bb834..17c3f68b 100644
--- a/modules/server_add/controllers/admin_server_add.php
+++ b/modules/server_add/controllers/admin_server_add.php
@@ -58,7 +58,7 @@ class Admin_Server_Add_Controller extends Admin_Controller {
public function remove_path() {
access::verify_csrf();
- $path = $this->input->get("path");
+ $path = Input::instance()->get("path");
$paths = unserialize(module::get_var("server_add", "authorized_paths"));
if (isset($paths[$path])) {
unset($paths[$path]);
@@ -71,7 +71,7 @@ class Admin_Server_Add_Controller extends Admin_Controller {
public function autocomplete() {
$directories = array();
- $path_prefix = $this->input->get("q");
+ $path_prefix = Input::instance()->get("q");
foreach (glob("{$path_prefix}*") as $file) {
if (is_dir($file) && !is_link($file)) {
$directories[] = $file;
diff --git a/modules/server_add/controllers/server_add.php b/modules/server_add/controllers/server_add.php
index 53a3d091..6ff00812 100644
--- a/modules/server_add/controllers/server_add.php
+++ b/modules/server_add/controllers/server_add.php
@@ -34,7 +34,7 @@ class Server_Add_Controller extends Admin_Controller {
}
public function children() {
- $path = $this->input->get("path");
+ $path = Input::instance()->get("path");
$tree = new View("server_add_tree.html");
$tree->files = array();
@@ -103,7 +103,7 @@ class Server_Add_Controller extends Admin_Controller {
access::verify_csrf();
$task = ORM::factory("task", $task_id);
- if (!$task->loaded || $task->owner_id != identity::active_user()->id) {
+ if (!$task->loaded() || $task->owner_id != identity::active_user()->id) {
access::forbidden();
}
@@ -175,16 +175,15 @@ class Server_Add_Controller extends Admin_Controller {
// over 10% in percent_complete.
$task->set("queue", $queue);
$task->percent_complete = min($task->percent_complete + 0.1, 10);
- $task->status = t2("Found one file", "Found %count files",
- Database::instance()
- ->where("task_id", $task->id)
- ->count_records("server_add_files"));
+ $task->status = t2(
+ "Found one file", "Found %count files",
+ ORM::factory("server_add_file")->where("task_id", "=", $task->id)->count_all());
if (!$queue) {
$task->set("mode", "add-files");
$task->set(
- "total_files", database::instance()->count_records(
- "server_add_files", array("task_id" => $task->id)));
+ "total_files",
+ ORM::factory("server_add_file")->where("task_id", "=", $task->id)->count_all());
$task->percent_complete = 10;
}
break;
@@ -197,9 +196,9 @@ class Server_Add_Controller extends Admin_Controller {
// will create albums first. Ignore entries which already have an Item_Model attached,
// they're done.
$entries = ORM::factory("server_add_file")
- ->where("task_id", $task->id)
- ->where("item_id", null)
- ->orderby("id", "ASC")
+ ->where("task_id", "=", $task->id)
+ ->where("item_id", "IS", null)
+ ->order_by("id", "ASC")
->limit(10)
->find_all();
if ($entries->count() == 0) {
@@ -216,7 +215,7 @@ class Server_Add_Controller extends Admin_Controller {
// Look up the parent item for this entry. By now it should exist, but if none was
// specified, then this belongs as a child of the current item.
$parent_entry = ORM::factory("server_add_file", $entry->parent_id);
- if (!$parent_entry->loaded) {
+ if (!$parent_entry->loaded()) {
$parent = ORM::factory("item", $task->get("item_id"));
} else {
$parent = ORM::factory("item", $parent_entry->item_id);
@@ -257,7 +256,7 @@ class Server_Add_Controller extends Admin_Controller {
$task->status = t("Adding photos / albums (%completed of %total)",
array("completed" => $completed_files,
"total" => $total_files));
- $task->percent_complete = 10 + 100 * ($completed_files / $total_files);
+ $task->percent_complete = $total_files ? 10 + 100 * ($completed_files / $total_files) : 100;
break;
case "done":
@@ -265,7 +264,7 @@ class Server_Add_Controller extends Admin_Controller {
$task->done = true;
$task->state = "success";
$task->percent_complete = 100;
- ORM::factory("server_add_file")->where("task_id", $task->id)->delete_all();
+ ORM::factory("server_add_file")->where("task_id", "=", $task->id)->delete_all();
message::info(t2("Successfully added one photo / album",
"Successfully added %count photos / albums",
$task->get("completed_files")));
diff --git a/modules/slideshow/helpers/slideshow_event.php b/modules/slideshow/helpers/slideshow_event.php
index 0afe8126..9b77dd42 100644
--- a/modules/slideshow/helpers/slideshow_event.php
+++ b/modules/slideshow/helpers/slideshow_event.php
@@ -32,7 +32,7 @@ class slideshow_event_Core {
static function album_menu($menu, $theme) {
$descendants_count = ORM::factory("item", $theme->item()->id)
- ->descendants_count(array("type" => "photo"));
+ ->descendants_count(array(array("type", "=", "photo")));
if ($descendants_count > 1) {
$menu->append(Menu::factory("link")
->id("slideshow")
diff --git a/modules/tag/controllers/admin_tags.php b/modules/tag/controllers/admin_tags.php
index 67587c2e..e20b8ac8 100644
--- a/modules/tag/controllers/admin_tags.php
+++ b/modules/tag/controllers/admin_tags.php
@@ -19,7 +19,7 @@
*/
class Admin_Tags_Controller extends Admin_Controller {
public function index() {
- $filter = $this->input->get("filter");
+ $filter = Input::instance()->get("filter");
$view = new Admin_View("admin.html");
$view->content = new View("admin_tags.html");
@@ -29,13 +29,13 @@ class Admin_Tags_Controller extends Admin_Controller {
if ($filter) {
$query->like("name", $filter);
}
- $view->content->tags = $query->orderby("name", "ASC")->find_all();
+ $view->content->tags = $query->order_by("name", "ASC")->find_all();
print $view;
}
public function form_delete($id) {
$tag = ORM::factory("tag", $id);
- if ($tag->loaded) {
+ if ($tag->loaded()) {
print tag::get_delete_form($tag);
}
}
@@ -44,14 +44,14 @@ class Admin_Tags_Controller extends Admin_Controller {
access::verify_csrf();
$tag = ORM::factory("tag", $id);
- if (!$tag->loaded) {
- kohana::show_404();
+ if (!$tag->loaded()) {
+ throw new Kohana_404_Exception();
}
$form = tag::get_delete_form($tag);
if ($form->validate()) {
$name = $tag->name;
- Database::instance()->delete("items_tags", array("tag_id" => "$tag->id"));
+ db::build()->delete("items_tags")->where("tag_id", "=", $tag->id)->execute();
$tag->delete();
message::success(t("Deleted tag %tag_name", array("tag_name" => $name)));
log::success("tags", t("Deleted tag %tag_name", array("tag_name" => $name)));
@@ -68,7 +68,7 @@ class Admin_Tags_Controller extends Admin_Controller {
public function form_rename($id) {
$tag = ORM::factory("tag", $id);
- if ($tag->loaded) {
+ if ($tag->loaded()) {
print InPlaceEdit::factory($tag->name)
->action("admin/tags/rename/$id")
->render();
@@ -79,8 +79,8 @@ class Admin_Tags_Controller extends Admin_Controller {
access::verify_csrf();
$tag = ORM::factory("tag", $id);
- if (!$tag->loaded) {
- kohana::show_404();
+ if (!$tag->loaded()) {
+ throw new Kohana_404_Exception();
}
$in_place_edit = InPlaceEdit::factory($tag->name)
@@ -106,7 +106,7 @@ class Admin_Tags_Controller extends Admin_Controller {
}
public function check_for_duplicate(Validation $post_data, $field) {
- $tag_exists = ORM::factory("tag")->where("name", $post_data[$field])->count_all();
+ $tag_exists = ORM::factory("tag")->where("name", "=", $post_data[$field])->count_all();
if ($tag_exists) {
$post_data->add_error($field, "in_use");
}
diff --git a/modules/tag/controllers/tags.php b/modules/tag/controllers/tags.php
index 9f9e45d9..992c7411 100644
--- a/modules/tag/controllers/tags.php
+++ b/modules/tag/controllers/tags.php
@@ -21,7 +21,7 @@ class Tags_Controller extends Controller {
public function show($tag_id) {
$tag = ORM::factory("tag", $tag_id);
$page_size = module::get_var("gallery", "page_size", 9);
- $page = (int) $this->input->get("page", "1");
+ $page = (int) Input::instance()->get("page", "1");
$children_count = $tag->items_count();
$offset = ($page-1) * $page_size;
$max_pages = max(ceil($children_count / $page_size), 1);
@@ -79,12 +79,12 @@ class Tags_Controller extends Controller {
public function autocomplete() {
$tags = array();
- $tag_parts = preg_split("#,#", $this->input->get("q"));
- $limit = $this->input->get("limit");
+ $tag_parts = preg_split("#,#", Input::instance()->get("q"));
+ $limit = Input::instance()->get("limit");
$tag_part = end($tag_parts);
$tag_list = ORM::factory("tag")
- ->like("name", "{$tag_part}%", false)
- ->orderby("name", "ASC")
+ ->where("name", "LIKE", "{$tag_part}%")
+ ->order_by("name", "ASC")
->limit($limit)
->find_all();
foreach ($tag_list as $tag) {
diff --git a/modules/tag/helpers/tag.php b/modules/tag/helpers/tag.php
index 89a27034..8075afe4 100644
--- a/modules/tag/helpers/tag.php
+++ b/modules/tag/helpers/tag.php
@@ -33,8 +33,8 @@ class tag_Core {
throw new exception("@todo MISSING_TAG_NAME");
}
- $tag = ORM::factory("tag")->where("name", $tag_name)->find();
- if (!$tag->loaded) {
+ $tag = ORM::factory("tag")->where("name", "=", $tag_name)->find();
+ if (!$tag->loaded()) {
$tag->name = $tag_name;
$tag->count = 0;
$tag->save();
@@ -57,7 +57,7 @@ class tag_Core {
*/
static function popular_tags($count) {
return ORM::factory("tag")
- ->orderby("count", "DESC")
+ ->order_by("count", "DESC")
->limit($count)
->find_all();
}
@@ -89,12 +89,12 @@ class tag_Core {
*/
static function item_tags($item) {
$tags = array();
- foreach (Database::instance()
+ foreach (db::build()
->select("name")
->from("tags")
->join("items_tags", "tags.id", "items_tags.tag_id", "left")
- ->where("items_tags.item_id", $item->id)
- ->get() as $row) {
+ ->where("items_tags.item_id", "=", $item->id)
+ ->execute() as $row) {
$tags[] = $row->name;
}
return $tags;
@@ -125,10 +125,16 @@ class tag_Core {
* Delete all tags associated with an item
*/
static function clear_all($item) {
- $db = Database::instance();
- $db->query("UPDATE {tags} SET `count` = `count` - 1 WHERE `count` > 0 " .
- "AND `id` IN (SELECT `tag_id` from {items_tags} WHERE `item_id` = $item->id)");
- $db->delete("items_tags", array("item_id" => "$item->id"));
+ db::build()
+ ->update("tags")
+ ->set("count", new Database_Expression("`count` - 1"))
+ ->where("count", ">", 0)
+ ->where("id", "IN", db::build()->select("tag_id")->from("items_tags")->where("item_id", "=", $item->id))
+ ->execute();
+ db::build()
+ ->delete("items_tags")
+ ->where("item_id", "=", $item->id)
+ ->execute();
}
/**
@@ -138,6 +144,6 @@ class tag_Core {
// @todo There's a potential race condition here which we can solve by adding a lock around
// this and all the cases where we create/update tags. I'm loathe to do that since it's an
// extremely rare case.
- Database::instance() ->delete("tags", array("count" => 0));
+ db::build()->delete("tags")->where("count", "=", 0)->execute();
}
} \ No newline at end of file
diff --git a/modules/tag/helpers/tag_event.php b/modules/tag/helpers/tag_event.php
index a857a99d..6ee8e708 100644
--- a/modules/tag/helpers/tag_event.php
+++ b/modules/tag/helpers/tag_event.php
@@ -51,7 +51,7 @@ class tag_event_Core {
try {
tag::add($photo, $tag);
} catch (Exception $e) {
- Kohana::log("error", "Error adding tag: $tag\n" .
+ Kohana_Log::add("error", "Error adding tag: $tag\n" .
$e->getMessage() . "\n" . $e->getTraceAsString());
}
}
diff --git a/modules/tag/helpers/tag_rss.php b/modules/tag/helpers/tag_rss.php
index de5d6c72..f09a4530 100644
--- a/modules/tag/helpers/tag_rss.php
+++ b/modules/tag/helpers/tag_rss.php
@@ -31,8 +31,8 @@ class tag_rss_Core {
static function feed($feed_id, $offset, $limit, $id) {
if ($feed_id == "tag") {
$tag = ORM::factory("tag", $id);
- if (!$tag->loaded) {
- Kohana::show_404();
+ if (!$tag->loaded()) {
+ throw new Kohana_404_Exception();
}
$feed->children = $tag->items($limit, $offset, "photo");
$feed->max_pages = ceil($tag->count / $limit);
diff --git a/modules/tag/models/tag.php b/modules/tag/models/tag.php
index be020f5f..b2ce9eda 100644
--- a/modules/tag/models/tag.php
+++ b/modules/tag/models/tag.php
@@ -31,9 +31,9 @@ class Tag_Model extends ORM {
$model = ORM::factory("item")
->viewable()
->join("items_tags", "items.id", "items_tags.item_id")
- ->where("items_tags.tag_id", $this->id);
+ ->where("items_tags.tag_id", "=", $this->id);
if ($type) {
- $model->where("items.type", $type);
+ $model->where("items.type", "=", $type);
}
return $model->find_all($limit, $offset);
}
@@ -47,10 +47,10 @@ class Tag_Model extends ORM {
$model = ORM::factory("item")
->viewable()
->join("items_tags", "items.id", "items_tags.item_id")
- ->where("items_tags.tag_id", $this->id);
+ ->where("items_tags.tag_id", "=", $this->id);
if ($type) {
- $model->where("items.type", $type);
+ $model->where("items.type", "=", $type);
}
return $model->count_all();
}
@@ -61,20 +61,29 @@ class Tag_Model extends ORM {
* event for the union of all related items before and after the save.
*/
public function save() {
- $db = Database::instance();
$related_item_ids = array();
- foreach ($db->getwhere("items_tags", array("tag_id" => $this->id)) as $row) {
+ foreach (db::build()
+ ->select("item_id")
+ ->from("items_tags")
+ ->where("tag_id", "=", $this->id)
+ ->execute() as $row) {
$related_item_ids[$row->item_id] = 1;
}
$result = parent::save();
- foreach ($db->getwhere("items_tags", array("tag_id" => $this->id)) as $row) {
+ foreach (db::build()
+ ->select("item_id")
+ ->from("items_tags")
+ ->where("tag_id", "=", $this->id)
+ ->execute() as $row) {
$related_item_ids[$row->item_id] = 1;
}
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);
}
}
@@ -88,8 +97,11 @@ class Tag_Model extends ORM {
*/
public function delete() {
$related_item_ids = array();
- $db = Database::Instance();
- foreach ($db->getwhere("items_tags", array("tag_id" => $this->id)) as $row) {
+ foreach (db::build()
+ ->select("item_id")
+ ->from("items_tags")
+ ->where("tag_id", "=", $this->id)
+ ->execute() as $row) {
$related_item_ids[$row->item_id] = 1;
}
diff --git a/modules/tag/tests/Tag_Test.php b/modules/tag/tests/Tag_Test.php
index c9a96286..c96e7f2b 100644
--- a/modules/tag/tests/Tag_Test.php
+++ b/modules/tag/tests/Tag_Test.php
@@ -25,18 +25,18 @@ class Tag_Test extends Unit_Test_Case {
$tag1 = "tag1";
tag::add($album, $tag1);
- $tag = ORM::factory("tag")->where("name", $tag1)->find();
+ $tag = ORM::factory("tag")->where("name", "=", $tag1)->find();
$this->assert_true(1, $tag->count);
// Make sure adding the tag again doesn't increase the count
tag::add($album, $tag1);
- $tag = ORM::factory("tag")->where("name", $tag1)->find();
+ $tag = ORM::factory("tag")->where("name", "=", $tag1)->find();
$this->assert_true(1, $tag->count);
$rand = rand();
$album = album::create($root, $rand, $rand, $rand);
tag::add($album, $tag1);
- $tag = ORM::factory("tag")->where("name", $tag1)->find();
+ $tag = ORM::factory("tag")->where("name", "=", $tag1)->find();
$this->assert_true(2, $tag->count);
}
} \ No newline at end of file
diff --git a/modules/unit_test/libraries/Unit_Test.php b/modules/unit_test/libraries/Unit_Test.php
index 7558759c..46a926d8 100644
--- a/modules/unit_test/libraries/Unit_Test.php
+++ b/modules/unit_test/libraries/Unit_Test.php
@@ -20,6 +20,48 @@ class Unit_Test_Core {
// Statistics for every test class
protected $stats = array();
+ public static $lang = array(
+ 'class' => 'Class',
+ 'method' => 'Method',
+ 'invalid_test_path' => 'Failed to open test path: %s.',
+ 'duplicate_test_class' => 'Duplicate test class named %s found in %s.',
+ 'test_class_not_found' => 'No test class by the name of %s found in %s.',
+ 'test_class_extends' => '%s must extend Unit_Test_Case.',
+ 'no_tests_found' => 'No tests found',
+ 'score' => 'Score',
+ 'total' => 'Total',
+ 'passed' => 'Passed',
+ 'failed' => 'Failed',
+ 'error' => 'Error',
+ 'errors' => 'Errors',
+ 'line' => 'line',
+ 'assert_true' => 'assert_true: Expected true, but was given (%s) %s.',
+ 'assert_true_strict' => 'assert_true_strict: Expected (boolean) true, but was given (%s) %s.',
+ 'assert_false' => 'assert_false: Expected false, but was given (%s) %s.',
+ 'assert_false_strict' => 'assert_false_strict: Expected (boolean) false, but was given (%s) %s.',
+ 'assert_equal' => 'assert_equal: Expected (%s) %s, but was given (%s) %s.',
+ 'assert_not_equal' => 'assert_not_equal: Expected not (%s) %s, but was given (%s) %s.',
+ 'assert_same' => 'assert_same: Expected (%s) %s, but was given (%s) %s.',
+ 'assert_not_same' => 'assert_not_same: Expected not (%s) %s, but was given (%s) %s.',
+ 'assert_boolean' => 'assert_boolean: Expected a boolean, but was given (%s) %s.',
+ 'assert_not_boolean' => 'assert_not_boolean: Expected not a boolean, but was given (%s) %s.',
+ 'assert_integer' => 'assert_integer: Expected an integer, but was given (%s) %s.',
+ 'assert_not_integer' => 'assert_not_integer: Expected not an integer, but was given (%s) %s.',
+ 'assert_float' => 'assert_float: Expected a float, but was given (%s) %s.',
+ 'assert_not_float' => 'assert_not_float: Expected not a float, but was given (%s) %s.',
+ 'assert_array' => 'assert_array: Expected an array, but was given (%s) %s.',
+ 'assert_array_key' => 'assert_array_key: Expected a valid key, but was given (%s) %s.',
+ 'assert_in_array' => 'assert_in_array: Expected a valid value, but was given (%s) %s.',
+ 'assert_not_array' => 'assert_not_array: Expected not an array, but was given (%s) %s.',
+ 'assert_object' => 'assert_object: Expected an object, but was given (%s) %s.',
+ 'assert_not_object' => 'assert_not_object: Expected not an object, but was given (%s) %s.',
+ 'assert_null' => 'assert_null: Expected null, but was given (%s) %s.',
+ 'assert_not_null' => 'assert_not_null: Expected not null, but was given (%s) %s.',
+ 'assert_empty' => 'assert_empty: Expected an empty value, but was given (%s) %s.',
+ 'assert_not_empty' => 'assert_not_empty: Expected not an empty value, but was given (%s) %s.',
+ 'assert_pattern' => 'assert_pattern: Expected %s to match %s.',
+ 'assert_not_pattern' => 'assert_not_pattern: Expected %s to not match %s.'
+ );
/**
* Sets the test path(s), runs the tests inside and stores the results.
*
@@ -207,7 +249,7 @@ class Unit_Test_Core {
{
// No tests found
if (empty($this->results))
- return Kohana::lang('unit_test.no_tests_found');
+ return sprintf(self::$lang['no_tests_found']);
// Hide passed tests from the report?
$hide_passed = (bool) (($hide_passed !== NULL) ? $hide_passed : Kohana::config('unit_test.hide_passed', FALSE, FALSE));
@@ -259,7 +301,7 @@ abstract class Unit_Test_Case {
public function assert_true($value, $debug = NULL)
{
if ($value != TRUE)
- throw new Kohana_Unit_Test_Exception(Kohana::lang('unit_test.assert_true', gettype($value), var_export($value, TRUE)), $debug);
+ throw new Kohana_Unit_Test_Exception(sprintf(Unit_Test::$lang['assert_true'], gettype($value), var_export($value, TRUE)), $debug);
return $this;
}
@@ -267,7 +309,7 @@ abstract class Unit_Test_Case {
public function assert_true_strict($value, $debug = NULL)
{
if ($value !== TRUE)
- throw new Kohana_Unit_Test_Exception(Kohana::lang('unit_test.assert_true_strict', gettype($value), var_export($value, TRUE)), $debug);
+ throw new Kohana_Unit_Test_Exception(sprintf(Unit_Test::$lang['assert_true_strict'], gettype($value), var_export($value, TRUE)), $debug);
return $this;
}
@@ -275,7 +317,7 @@ abstract class Unit_Test_Case {
public function assert_false($value, $debug = NULL)
{
if ($value != FALSE)
- throw new Kohana_Unit_Test_Exception(Kohana::lang('unit_test.assert_false', gettype($value), var_export($value, TRUE)), $debug);
+ throw new Kohana_Unit_Test_Exception(sprintf(Unit_Test::$lang['assert_false'], gettype($value), var_export($value, TRUE)), $debug);
return $this;
}
@@ -283,7 +325,7 @@ abstract class Unit_Test_Case {
public function assert_false_strict($value, $debug = NULL)
{
if ($value !== FALSE)
- throw new Kohana_Unit_Test_Exception(Kohana::lang('unit_test.assert_false_strict', gettype($value), var_export($value, TRUE)), $debug);
+ throw new Kohana_Unit_Test_Exception(sprintf(Unit_Test::$lang['assert_false_strict'], gettype($value), var_export($value, TRUE)), $debug);
return $this;
}
@@ -291,7 +333,7 @@ abstract class Unit_Test_Case {
public function assert_equal($expected, $actual, $debug = NULL)
{
if ($expected != $actual)
- throw new Kohana_Unit_Test_Exception(Kohana::lang('unit_test.assert_equal', gettype($expected), var_export($expected, TRUE), gettype($actual), var_export($actual, TRUE)), $debug);
+ throw new Kohana_Unit_Test_Exception(sprintf(Unit_Test::$lang['assert_equal'], gettype($expected), var_export($expected, TRUE), gettype($actual), var_export($actual, TRUE)), $debug);
return $this;
}
@@ -299,7 +341,7 @@ abstract class Unit_Test_Case {
public function assert_not_equal($expected, $actual, $debug = NULL)
{
if ($expected == $actual)
- throw new Kohana_Unit_Test_Exception(Kohana::lang('unit_test.assert_not_equal', gettype($expected), var_export($expected, TRUE), gettype($actual), var_export($actual, TRUE)), $debug);
+ throw new Kohana_Unit_Test_Exception(sprintf(Unit_Test::$lang['assert_not_equal'], gettype($expected), var_export($expected, TRUE), gettype($actual), var_export($actual, TRUE)), $debug);
return $this;
}
@@ -307,7 +349,7 @@ abstract class Unit_Test_Case {
public function assert_same($expected, $actual, $debug = NULL)
{
if ($expected !== $actual)
- throw new Kohana_Unit_Test_Exception(Kohana::lang('unit_test.assert_same', gettype($expected), var_export($expected, TRUE), gettype($actual), var_export($actual, TRUE)), $debug);
+ throw new Kohana_Unit_Test_Exception(sprintf(Unit_Test::$lang['assert_same'], gettype($expected), var_export($expected, TRUE), gettype($actual), var_export($actual, TRUE)), $debug);
return $this;
}
@@ -315,7 +357,7 @@ abstract class Unit_Test_Case {
public function assert_not_same($expected, $actual, $debug = NULL)
{
if ($expected === $actual)
- throw new Kohana_Unit_Test_Exception(Kohana::lang('unit_test.assert_not_same', gettype($expected), var_export($expected, TRUE), gettype($actual), var_export($actual, TRUE)), $debug);
+ throw new Kohana_Unit_Test_Exception(sprintf(Unit_Test::$lang['assert_not_same'], gettype($expected), var_export($expected, TRUE), gettype($actual), var_export($actual, TRUE)), $debug);
return $this;
}
@@ -323,7 +365,7 @@ abstract class Unit_Test_Case {
public function assert_boolean($value, $debug = NULL)
{
if ( ! is_bool($value))
- throw new Kohana_Unit_Test_Exception(Kohana::lang('unit_test.assert_boolean', gettype($value), var_export($value, TRUE)), $debug);
+ throw new Kohana_Unit_Test_Exception(sprintf(Unit_Test::$lang['assert_boolean'], gettype($value), var_export($value, TRUE)), $debug);
return $this;
}
@@ -331,7 +373,7 @@ abstract class Unit_Test_Case {
public function assert_not_boolean($value, $debug = NULL)
{
if (is_bool($value))
- throw new Kohana_Unit_Test_Exception(Kohana::lang('unit_test.assert_not_boolean', gettype($value), var_export($value, TRUE)), $debug);
+ throw new Kohana_Unit_Test_Exception(sprintf(Unit_Test::$lang['assert_not_boolean'], gettype($value), var_export($value, TRUE)), $debug);
return $this;
}
@@ -339,7 +381,7 @@ abstract class Unit_Test_Case {
public function assert_integer($value, $debug = NULL)
{
if ( ! is_int($value))
- throw new Kohana_Unit_Test_Exception(Kohana::lang('unit_test.assert_integer', gettype($value), var_export($value, TRUE)), $debug);
+ throw new Kohana_Unit_Test_Exception(sprintf(Unit_Test::$lang['assert_integer'], gettype($value), var_export($value, TRUE)), $debug);
return $this;
}
@@ -347,7 +389,7 @@ abstract class Unit_Test_Case {
public function assert_not_integer($value, $debug = NULL)
{
if (is_int($value))
- throw new Kohana_Unit_Test_Exception(Kohana::lang('unit_test.assert_not_integer', gettype($value), var_export($value, TRUE)), $debug);
+ throw new Kohana_Unit_Test_Exception(sprintf(Unit_Test::$lang['assert_not_integer'], gettype($value), var_export($value, TRUE)), $debug);
return $this;
}
@@ -355,7 +397,7 @@ abstract class Unit_Test_Case {
public function assert_float($value, $debug = NULL)
{
if ( ! is_float($value))
- throw new Kohana_Unit_Test_Exception(Kohana::lang('unit_test.assert_float', gettype($value), var_export($value, TRUE)), $debug);
+ throw new Kohana_Unit_Test_Exception(sprintf(Unit_Test::$lang['assert_float'], gettype($value), var_export($value, TRUE)), $debug);
return $this;
}
@@ -363,7 +405,7 @@ abstract class Unit_Test_Case {
public function assert_not_float($value, $debug = NULL)
{
if (is_float($value))
- throw new Kohana_Unit_Test_Exception(Kohana::lang('unit_test.assert_not_float', gettype($value), var_export($value, TRUE)), $debug);
+ throw new Kohana_Unit_Test_Exception(sprintf(Unit_Test::$lang['assert_not_float'], gettype($value), var_export($value, TRUE)), $debug);
return $this;
}
@@ -371,7 +413,7 @@ abstract class Unit_Test_Case {
public function assert_array($value, $debug = NULL)
{
if ( ! is_array($value))
- throw new Kohana_Unit_Test_Exception(Kohana::lang('unit_test.assert_array', gettype($value), var_export($value, TRUE)), $debug);
+ throw new Kohana_Unit_Test_Exception(sprintf(Unit_Test::$lang['assert_array'], gettype($value), var_export($value, TRUE)), $debug);
return $this;
}
@@ -379,7 +421,7 @@ abstract class Unit_Test_Case {
public function assert_array_key($key, $array, $debug = NULL)
{
if ( ! array_key_exists($key, $array)) {
- throw new Kohana_Unit_Test_Exception(Kohana::lang('unit_test.assert_array_key', gettype($key), var_export($key, TRUE)), $debug);
+ throw new Kohana_Unit_Test_Exception(sprintf(Unit_Test::$lang['assert_array_key'], gettype($key), var_export($key, TRUE)), $debug);
}
return $this;
@@ -388,7 +430,7 @@ abstract class Unit_Test_Case {
public function assert_in_array($value, $array, $debug = NULL)
{
if ( ! in_array($value, $array)) {
- throw new Kohana_Unit_Test_Exception(Kohana::lang('unit_test.assert_in_array', gettype($value), var_export($value, TRUE)), $debug);
+ throw new Kohana_Unit_Test_Exception(sprintf(Unit_Test::$lang['assert_in_array'], gettype($value), var_export($value, TRUE)), $debug);
}
return $this;
@@ -397,7 +439,7 @@ abstract class Unit_Test_Case {
public function assert_not_array($value, $debug = NULL)
{
if (is_array($value))
- throw new Kohana_Unit_Test_Exception(Kohana::lang('unit_test.assert_not_array', gettype($value), var_export($value, TRUE)), $debug);
+ throw new Kohana_Unit_Test_Exception(sprintf(Unit_Test::$lang['assert_not_array'], gettype($value), var_export($value, TRUE)), $debug);
return $this;
}
@@ -405,7 +447,7 @@ abstract class Unit_Test_Case {
public function assert_object($value, $debug = NULL)
{
if ( ! is_object($value))
- throw new Kohana_Unit_Test_Exception(Kohana::lang('unit_test.assert_object', gettype($value), var_export($value, TRUE)), $debug);
+ throw new Kohana_Unit_Test_Exception(sprintf(Unit_Test::$lang['assert_object'], gettype($value), var_export($value, TRUE)), $debug);
return $this;
}
@@ -413,7 +455,7 @@ abstract class Unit_Test_Case {
public function assert_not_object($value, $debug = NULL)
{
if (is_object($value))
- throw new Kohana_Unit_Test_Exception(Kohana::lang('unit_test.assert_not_object', gettype($value), var_export($value, TRUE)), $debug);
+ throw new Kohana_Unit_Test_Exception(sprintf(Unit_Test::$lang['assert_not_object'], gettype($value), var_export($value, TRUE)), $debug);
return $this;
}
@@ -421,7 +463,7 @@ abstract class Unit_Test_Case {
public function assert_null($value, $debug = NULL)
{
if ($value !== NULL)
- throw new Kohana_Unit_Test_Exception(Kohana::lang('unit_test.assert_null', gettype($value), var_export($value, TRUE)), $debug);
+ throw new Kohana_Unit_Test_Exception(sprintf(Unit_Test::$lang['assert_null'], gettype($value), var_export($value, TRUE)), $debug);
return $this;
}
@@ -429,7 +471,7 @@ abstract class Unit_Test_Case {
public function assert_not_null($value, $debug = NULL)
{
if ($value === NULL)
- throw new Kohana_Unit_Test_Exception(Kohana::lang('unit_test.assert_not_null', gettype($value), var_export($value, TRUE)), $debug);
+ throw new Kohana_Unit_Test_Exception(sprintf(Unit_Test::$lang['assert_not_null'], gettype($value), var_export($value, TRUE)), $debug);
return $this;
}
@@ -437,7 +479,7 @@ abstract class Unit_Test_Case {
public function assert_empty($value, $debug = NULL)
{
if ( ! empty($value))
- throw new Kohana_Unit_Test_Exception(Kohana::lang('unit_test.assert_empty', gettype($value), var_export($value, TRUE)), $debug);
+ throw new Kohana_Unit_Test_Exception(sprintf(Unit_Test::$lang['assert_empty'], gettype($value), var_export($value, TRUE)), $debug);
return $this;
}
@@ -445,7 +487,7 @@ abstract class Unit_Test_Case {
public function assert_not_empty($value, $debug = NULL)
{
if (empty($value))
- throw new Kohana_Unit_Test_Exception(Kohana::lang('unit_test.assert_empty', gettype($value), var_export($value, TRUE)), $debug);
+ throw new Kohana_Unit_Test_Exception(sprintf(Unit_Test::$lang['assert_empty'], gettype($value), var_export($value, TRUE)), $debug);
return $this;
}
@@ -453,7 +495,7 @@ abstract class Unit_Test_Case {
public function assert_pattern($value, $regex, $debug = NULL)
{
if ( ! is_string($value) OR ! is_string($regex) OR ! preg_match($regex, $value))
- throw new Kohana_Unit_Test_Exception(Kohana::lang('unit_test.assert_pattern', var_export($value, TRUE), var_export($regex, TRUE)), $debug);
+ throw new Kohana_Unit_Test_Exception(sprintf(Unit_Test::$lang['assert_pattern'], var_export($value, TRUE), var_export($regex, TRUE)), $debug);
return $this;
}
@@ -461,7 +503,7 @@ abstract class Unit_Test_Case {
public function assert_not_pattern($value, $regex, $debug = NULL)
{
if ( ! is_string($value) OR ! is_string($regex) OR preg_match($regex, $value))
- throw new Kohana_Unit_Test_Exception(Kohana::lang('unit_test.assert_not_pattern', var_export($value, TRUE), var_export($regex, TRUE)), $debug);
+ throw new Kohana_Unit_Test_Exception(sprintf(Unit_Test::$lang['assert_not_pattern'], var_export($value, TRUE), var_export($regex, TRUE)), $debug);
return $this;
}
diff --git a/modules/user/controllers/admin_users.php b/modules/user/controllers/admin_users.php
index b3284385..96b86fff 100644
--- a/modules/user/controllers/admin_users.php
+++ b/modules/user/controllers/admin_users.php
@@ -22,10 +22,10 @@ class Admin_Users_Controller extends Admin_Controller {
$view = new Admin_View("admin.html");
$view->content = new View("admin_users.html");
$view->content->users = ORM::factory("user")
- ->orderby("name", "ASC")
+ ->order_by("name", "ASC")
->find_all();
$view->content->groups = ORM::factory("group")
- ->orderby("name", "ASC")
+ ->order_by("name", "ASC")
->find_all();
print $view;
}
@@ -77,7 +77,7 @@ class Admin_Users_Controller extends Admin_Controller {
$user = user::lookup($id);
if (empty($user)) {
- kohana::show_404();
+ throw new Kohana_404_Exception();
}
$form = $this->_get_user_delete_form_admin($user);
@@ -98,7 +98,7 @@ class Admin_Users_Controller extends Admin_Controller {
public function delete_user_form($id) {
$user = user::lookup($id);
if (empty($user)) {
- kohana::show_404();
+ throw new Kohana_404_Exception();
}
print $this->_get_user_delete_form_admin($user);
}
@@ -108,7 +108,7 @@ class Admin_Users_Controller extends Admin_Controller {
$user = user::lookup($id);
if (empty($user)) {
- kohana::show_404();
+ throw new Kohana_404_Exception();
}
$form = $this->_get_user_edit_form_admin($user);
@@ -155,7 +155,7 @@ class Admin_Users_Controller extends Admin_Controller {
public function edit_user_form($id) {
$user = user::lookup($id);
if (empty($user)) {
- kohana::show_404();
+ throw new Kohana_404_Exception();
}
$v = new View("user_form.html");
@@ -224,7 +224,7 @@ class Admin_Users_Controller extends Admin_Controller {
$group = group::lookup($id);
if (empty($group)) {
- kohana::show_404();
+ throw new Kohana_404_Exception();
}
$form = $this->_get_group_delete_form_admin($group);
@@ -245,7 +245,7 @@ class Admin_Users_Controller extends Admin_Controller {
public function delete_group_form($id) {
$group = group::lookup($id);
if (empty($group)) {
- kohana::show_404();
+ throw new Kohana_404_Exception();
}
print $this->_get_group_delete_form_admin($group);
@@ -256,7 +256,7 @@ class Admin_Users_Controller extends Admin_Controller {
$group = group::lookup($id);
if (empty($group)) {
- kohana::show_404();
+ throw new Kohana_404_Exception();
}
$form = $this->_get_group_edit_form_admin($group);
@@ -265,7 +265,7 @@ class Admin_Users_Controller extends Admin_Controller {
if ($valid) {
$new_name = $form->edit_group->inputs["name"]->value;
$group = group::lookup_by_name($name);
- if ($group->loaded) {
+ if ($group->loaded()) {
$form->edit_group->inputs["name"]->add_error("in_use", 1);
$valid = false;
}
@@ -288,7 +288,7 @@ class Admin_Users_Controller extends Admin_Controller {
public function edit_group_form($id) {
$group = group::lookup($id);
if (empty($group)) {
- kohana::show_404();
+ throw new Kohana_404_Exception();
}
print $this->_get_group_edit_form_admin($group);
diff --git a/modules/user/controllers/password.php b/modules/user/controllers/password.php
index e18e76b6..8309d2cc 100644
--- a/modules/user/controllers/password.php
+++ b/modules/user/controllers/password.php
@@ -47,7 +47,7 @@ class Password_Controller extends Controller {
$valid = $form->validate();
if ($valid) {
$user = user::lookup_by_name($form->reset->inputs["name"]->value);
- if (!$user->loaded || empty($user->email)) {
+ if (!$user->loaded() || empty($user->email)) {
$form->reset->inputs["name"]->add_error("no_email", 1);
$valid = false;
}
diff --git a/modules/user/helpers/group.php b/modules/user/helpers/group.php
index 3aaf1b11..2ada0ac1 100644
--- a/modules/user/helpers/group.php
+++ b/modules/user/helpers/group.php
@@ -31,8 +31,8 @@ class group_Core {
* @return Group_Definition the group object
*/
static function create($name) {
- $group = ORM::factory("group")->where("name", $name)->find();
- if ($group->loaded) {
+ $group = ORM::factory("group")->where("name", "=", $name)->find();
+ if ($group->loaded()) {
throw new Exception("@todo GROUP_ALREADY_EXISTS $name");
}
@@ -86,7 +86,7 @@ class group_Core {
private static function _lookup_by_field($field_name, $value) {
try {
$user = model_cache::get("group", $value, $field_name);
- if ($user->loaded) {
+ if ($user->loaded()) {
return $user;
}
} catch (Exception $e) {
diff --git a/modules/user/helpers/user.php b/modules/user/helpers/user.php
index f9f16da5..e092aecc 100644
--- a/modules/user/helpers/user.php
+++ b/modules/user/helpers/user.php
@@ -44,8 +44,8 @@ class user_Core {
* @return User_Model
*/
static function create($name, $full_name, $password) {
- $user = ORM::factory("user")->where("name", $name)->find();
- if ($user->loaded) {
+ $user = ORM::factory("user")->where("name", "=", $name)->find();
+ if ($user->loaded()) {
throw new Exception("@todo USER_ALREADY_EXISTS $name");
}
@@ -86,7 +86,7 @@ class user_Core {
}
// Passwords with <&"> created by G2 prior to 2.1 were hashed with entities
- $sanitizedPassword = html::specialchars($password, false);
+ $sanitizedPassword = html::chars($password, false);
$guess = (strlen($valid) == 32) ? md5($sanitizedPassword)
: ($salt . md5($salt . $sanitizedPassword));
if (!strcmp($guess, $valid)) {
@@ -163,7 +163,7 @@ class user_Core {
private static function _lookup_user_by_field($field_name, $value) {
try {
$user = model_cache::get("user", $value, $field_name);
- if ($user->loaded) {
+ if ($user->loaded()) {
return $user;
}
} catch (Exception $e) {
diff --git a/modules/user/libraries/drivers/IdentityProvider/Gallery.php b/modules/user/libraries/drivers/IdentityProvider/Gallery.php
index f02c53a2..50064287 100644
--- a/modules/user/libraries/drivers/IdentityProvider/Gallery.php
+++ b/modules/user/libraries/drivers/IdentityProvider/Gallery.php
@@ -63,7 +63,7 @@ class IdentityProvider_Gallery_Driver implements IdentityProvider_Driver {
}
// Passwords with <&"> created by G2 prior to 2.1 were hashed with entities
- $sanitizedPassword = html::specialchars($password, false);
+ $sanitizedPassword = html::chars($password, false);
$guess = (strlen($valid) == 32) ? md5($sanitizedPassword)
: ($salt . md5($salt . $sanitizedPassword));
if (!strcmp($guess, $valid)) {
diff --git a/modules/user/models/group.php b/modules/user/models/group.php
index 4432fc69..515788a3 100644
--- a/modules/user/models/group.php
+++ b/modules/user/models/group.php
@@ -20,7 +20,7 @@
class Group_Model extends ORM implements Group_Definition {
protected $has_and_belongs_to_many = array("users");
- var $rules = array(
+ var $form_rules = array(
"name" => "required|length[4,255]");
/**
@@ -33,8 +33,12 @@ class Group_Model extends ORM implements Group_Definition {
module::event("group_deleted", $old);
}
+ public function users() {
+ return $this->users->find_all();
+ }
+
public function save() {
- if (!$this->loaded) {
+ if (!$this->loaded()) {
$created = 1;
}
parent::save();
diff --git a/modules/user/models/user.php b/modules/user/models/user.php
index bd61def8..7d5bf413 100644
--- a/modules/user/models/user.php
+++ b/modules/user/models/user.php
@@ -20,7 +20,7 @@
class User_Model extends ORM implements User_Definition {
protected $has_and_belongs_to_many = array("groups");
- var $rules = array(
+ var $form_rules = array(
"name" => "required|length[1,32]",
"full_name" => "length[0,255]",
"email" => "required|valid_email|length[1,255]",
@@ -61,8 +61,12 @@ class User_Model extends ORM implements User_Definition {
md5($this->email), $size, $default ? "&d=" . urlencode($default) : "");
}
+ public function groups() {
+ return $this->groups->find_all();
+ }
+
public function save() {
- if (!$this->loaded) {
+ if (!$this->loaded()) {
$created = 1;
}
parent::save();
diff --git a/modules/user/tests/User_Groups_Test.php b/modules/user/tests/User_Groups_Test.php
index 3da8dd34..163b7d79 100644
--- a/modules/user/tests/User_Groups_Test.php
+++ b/modules/user/tests/User_Groups_Test.php
@@ -21,15 +21,15 @@
class User_Groups_Test extends Unit_Test_Case {
public function teardown() {
try {
- $group = ORM::factory("group")->where("name", "user_groups_test")->find();
- if ($group->loaded) {
+ $group = ORM::factory("group")->where("name", "=", "user_groups_test")->find();
+ if ($group->loaded()) {
$group->delete();
}
} catch (Exception $e) { }
try {
- $user = ORM::factory("user")->where("name", "user_groups_test")->find();
- if ($user->loaded) {
+ $user = ORM::factory("user")->where("name", "=", "user_groups_test")->find();
+ if ($user->loaded()) {
$user->delete();
}
} catch (Exception $e) { }
diff --git a/modules/user/views/admin_users_group.html.php b/modules/user/views/admin_users_group.html.php
index b7e573b3..6c6c341e 100644
--- a/modules/user/views/admin_users_group.html.php
+++ b/modules/user/views/admin_users_group.html.php
@@ -13,9 +13,9 @@
<? endif ?>
</h4>
-<? if ($group->users->count() > 0): ?>
+<? if ($group->users->count_all() > 0): ?>
<ul class="g-member-list">
- <? foreach ($group->users as $i => $user): ?>
+ <? foreach ($group->users->find_all() as $i => $user): ?>
<li class="g-user">
<?= html::clean($user->name) ?>
<? if (!$group->special): ?>