diff --git a/contrib/bookmarks/main.php b/contrib/bookmarks/main.php index 4efd5d28..916fa996 100644 --- a/contrib/bookmarks/main.php +++ b/contrib/bookmarks/main.php @@ -38,10 +38,11 @@ class Bookmarks implements Extension { if($config->get_int("ext_bookmarks_version") < 1) { $database->create_table("bookmark", " id SCORE_AIPK, - owner_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE, + owner_id INTEGER NOT NULL, url TEXT NOT NULL, title TET NOT NULL, - INDEX (owner_id) + INDEX (owner_id), + FOREIGN KEY (owner_id) REFERENCES users(id) ON DELETE CASCADE "); $config->set_int("ext_bookmarks_version", 1); } diff --git a/contrib/event_log/main.php b/contrib/event_log/main.php index e78e682c..053696d7 100644 --- a/contrib/event_log/main.php +++ b/contrib/event_log/main.php @@ -106,11 +106,12 @@ class EventLog implements Extension { if($config->get_int("ext_event_log_version", 0) < 1) { $database->create_table("event_log", " id SCORE_AIPK, - owner_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE, + owner_id INTEGER NOT NULL, owner_ip SCORE_INET NOT NULL, date DATETIME NOT NULL, event VARCHAR(32) NOT NULL, - entry TEXT NOT NULL + entry TEXT NOT NULL, + FOREIGN KEY (owner_id) REFERENCES users(id) ON DELETE CASCADE "); $config->set_int("ext_event_log_version", 1); } diff --git a/contrib/image_hash_ban/main.php b/contrib/image_hash_ban/main.php index 81ddde37..7c5736a1 100644 --- a/contrib/image_hash_ban/main.php +++ b/contrib/image_hash_ban/main.php @@ -119,8 +119,8 @@ class ImageBan implements Extension { $database->create_table("image_bans", " id SCORE_AIPK, hash CHAR(32) NOT NULL, - date DATETIME DEFAULT now(), - reason TEXT NOT NULL, + date DATETIME DEFAULT SCORE_NOW, + reason TEXT NOT NULL "); $config->set_int("ext_imageban_version", 1); } diff --git a/contrib/numeric_score/main.php b/contrib/numeric_score/main.php index 555ad4cf..393112c2 100644 --- a/contrib/numeric_score/main.php +++ b/contrib/numeric_score/main.php @@ -93,11 +93,13 @@ class NumericScore implements Extension { $database->Execute("ALTER TABLE images ADD COLUMN numeric_score INTEGER NOT NULL DEFAULT 0"); $database->Execute("CREATE INDEX images__numeric_score ON images(numeric_score)"); $database->create_table("numeric_score_votes", " - image_id INTEGER NOT NULL REFERENCES images(id) ON DELETE CASCADE, - user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE, + image_id INTEGER NOT NULL, + user_id INTEGER NOT NULL, score INTEGER NOT NULL, UNIQUE(image_id, user_id), - INDEX(image_id) + INDEX(image_id), + FOREIGN KEY (image_id) REFERENCES images(id) ON DELETE CASCADE, + FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE "); $config->set_int("ext_numeric_score_version", 1); } diff --git a/contrib/report_image/main.php b/contrib/report_image/main.php index 1bec2480..5025d621 100755 --- a/contrib/report_image/main.php +++ b/contrib/report_image/main.php @@ -117,9 +117,11 @@ class ReportImage implements Extension { if($config->get_int("ext_report_image_version") < 1) { $database->create_table("image_reports", " id SCORE_AIPK, - image_id INTEGER NOT NULL REFERENCES images(id) ON DELETE CASCADE, - reporter_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE, - reason TEXT NOT NULL + image_id INTEGER NOT NULL, + reporter_id INTEGER NOT NULL, + reason TEXT NOT NULL, + FOREIGN KEY (image_id) REFERENCES images(id) ON DELETE CASCADE, + FOREIGN KEY (reporter_id) REFERENCES users(id) ON DELETE CASCADE "); $config->set_int("ext_report_image_version", 1); } diff --git a/contrib/tag_history/main.php b/contrib/tag_history/main.php index 4f952d39..1a7ab8d6 100644 --- a/contrib/tag_history/main.php +++ b/contrib/tag_history/main.php @@ -69,10 +69,16 @@ class Tag_History implements Extension { if($config->get_int("ext_tag_history_version") < 1) { $database->create_table("tag_histories", " id SCORE_AIPK, - image_id INTEGER NOT NULL REFERENCES images(id) ON DELETE CASCADE, - tags TEXT NOT NULL + image_id INTEGER NOT NULL, + user_id INTEGER NOT NULL, + user_ip SCORE_INET NOT NULL, + tags TEXT NOT NULL, + date_set DATETIME NOT NULL, + INDEX(image_id), + FOREIGN KEY (image_id) REFERENCES images(id) ON DELETE CASCADE, + FOREIGN KEY (user_id) REFERENCES images(id) ON DELETE CASCADE "); - $config->set_int("ext_tag_history_version", 1); + $config->set_int("ext_tag_history_version", 3); } if($config->get_int("ext_tag_history_version") == 1) { diff --git a/contrib/text_score/main.php b/contrib/text_score/main.php index 361490a9..f28ee838 100644 --- a/contrib/text_score/main.php +++ b/contrib/text_score/main.php @@ -82,11 +82,13 @@ class TextScore implements Extension { $database->Execute("ALTER TABLE images ADD COLUMN text_score INTEGER NOT NULL DEFAULT 0"); $database->Execute("CREATE INDEX images__text_score ON images(text_score)"); $database->create_table("text_score_votes", " - image_id INTEGER NOT NULL REFERENCES images(id) ON DELETE CASCADE, - user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE, + image_id INTEGER NOT NULL, + user_id INTEGER NOT NULL, score INTEGER NOT NULL, UNIQUE(image_id, user_id), - INDEX(image_id) + INDEX(image_id), + FOREIGN KEY (image_id) REFERENCES images(id) ON DELETE CASCADE, + FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE "); $config->set_int("ext_text_score_version", 1); } diff --git a/contrib/wiki/main.php b/contrib/wiki/main.php index b9fd174a..8e5be4c1 100644 --- a/contrib/wiki/main.php +++ b/contrib/wiki/main.php @@ -149,14 +149,15 @@ class Wiki implements Extension { if($config->get_int("ext_wiki_version", 0) < 1) { $database->create_table("wiki_pages", " id SCORE_AIPK, - owner_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE, + owner_id INTEGER NOT NULL, owner_ip SCORE_INET NOT NULL, date DATETIME DEFAULT NULL, title VARCHAR(255) NOT NULL, revision INTEGER NOT NULL DEFAULT 1, locked SCORE_BOOL NOT NULL DEFAULT SCORE_BOOL_N, body TEXT NOT NULL, - UNIQUE (title, revision) + UNIQUE (title, revision), + FOREIGN KEY (owner_id) REFERENCES users(id) ON DELETE CASCADE "); $config->set_int("ext_wiki_version", 2); } diff --git a/ext/comment/main.php b/ext/comment/main.php index a5d48b51..258e293a 100644 --- a/ext/comment/main.php +++ b/ext/comment/main.php @@ -162,14 +162,16 @@ class CommentList implements Extension { if($config->get_int("ext_comments_version") < 1) { $database->create_table("comments", " id SCORE_AIPK, - image_id INTEGER NOT NULL REFERENCES images(id) ON DELETE CASCADE, - owner_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE, + image_id INTEGER NOT NULL, + owner_id INTEGER NOT NULL, owner_ip SCORE_INET NOT NULL, posted DATETIME DEFAULT NULL, comment TEXT NOT NULL, INDEX (image_id), INDEX (owner_ip), - INDEX (posted) + INDEX (posted), + FOREIGN KEY (image_id) REFERENCES images(id) ON DELETE CASCADE, + FOREIGN KEY (owner_id) REFERENCES users(id) ON DELETE CASCADE "); $config->set_int("ext_comments_version", 2); } diff --git a/ext/index/main.php b/ext/index/main.php index 7d96f2e5..aed557ca 100644 --- a/ext/index/main.php +++ b/ext/index/main.php @@ -30,8 +30,9 @@ class PostListBuildingEvent extends Event { var $page = null; var $search_terms = null; - public function PostListBuildingEvent($page, $search) { - $this->page = $page; + public function __construct(RequestContext $context, $search) { + parent::__construct($context); + $this->page = $context->page; $this->search_terms = $search; } } @@ -83,7 +84,7 @@ class Index implements Extension { $count = $config->get_int('index_width') * $config->get_int('index_height'); $images = Image::find_images($config, $database, ($page_number-1)*$count, $count, $search_terms); - send_event(new PostListBuildingEvent($event->page, $search_terms)); + send_event(new PostListBuildingEvent($event->context, $search_terms)); if(!(count($search_terms) == 0 && count($images) == 0)) { $this->theme->set_page($page_number, $total_pages, $search_terms); diff --git a/ext/user/main.php b/ext/user/main.php index ea7e12aa..224ce9fd 100644 --- a/ext/user/main.php +++ b/ext/user/main.php @@ -4,8 +4,9 @@ class UserBlockBuildingEvent extends Event { var $parts = array(); var $user = null; - public function UserBlockBuildingEvent($user) { - $this->user = $user; + public function __construct(RequestContext $context) { + parent::__construct($context); + $this->user = $context->user; } public function add_link($name, $link, $position=50) { @@ -121,7 +122,7 @@ class UserPage implements Extension { global $config; $this->theme->display_user_page($event->context->page, $event->display_user, $user); if($user->id == $event->display_user->id) { - $ubbe = new UserBlockBuildingEvent($event->display_user); + $ubbe = new UserBlockBuildingEvent($event->context); send_event($ubbe); ksort($ubbe->parts); $this->theme->display_user_links($event->context->page, $event->context->user, $ubbe->parts); @@ -141,7 +142,7 @@ class UserPage implements Extension { $this->theme->display_login_block($page); } else { - $ubbe = new UserBlockBuildingEvent($user); + $ubbe = new UserBlockBuildingEvent($event->context); send_event($ubbe); ksort($ubbe->parts); $this->theme->display_user_block($page, $user, $ubbe->parts); diff --git a/install.php b/install.php index 0b1164c0..8e0a3c48 100644 --- a/install.php +++ b/install.php @@ -160,9 +160,18 @@ function create_tables($dsn) { // {{{ name VARCHAR(128) NOT NULL PRIMARY KEY, value TEXT ")); + $db->execute($engine->create_table_sql("users", " + id SCORE_AIPK, + name VARCHAR(32) NOT NULL, + pass CHAR(32), + joindate DATETIME NOT NULL DEFAULT SCORE_NOW, + admin SCORE_BOOL NOT NULL DEFAULT SCORE_BOOL_N, + email VARCHAR(128), + INDEX(name) + ")); $db->execute($engine->create_table_sql("images", " id SCORE_AIPK, - owner_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE, + owner_id INTEGER NOT NULL, owner_ip SCORE_INET NOT NULL, filename VARCHAR(64) NOT NULL, filesize INTEGER NOT NULL, @@ -175,29 +184,23 @@ function create_tables($dsn) { // {{{ INDEX(owner_id), INDEX(hash), INDEX(width), - INDEX(height) - ")); - $db->execute($engine->create_table_sql("users", " - id SCORE_AIPK, - name VARCHAR(32) NOT NULL, - pass CHAR(32), - joindate DATETIME NOT NULL DEFAULT SCORE_NOW, - admin SCORE_BOOL NOT NULL DEFAULT SCORE_BOOL_N, - email VARCHAR(128), - INDEX(name) + INDEX(height), + FOREIGN KEY (owner_id) REFERENCES users(id) ON DELETE CASCADE ")); $db->execute($engine->create_table_sql("tags", " id SCORE_AIPK, tag VARCHAR(64) NOT NULL, count INTEGER NOT NULL DEFAULT 0, - INDEX(tag) + UNIQUE(tag) ")); $db->execute($engine->create_table_sql("image_tags", " - image_id INTEGER REFERENCES images(id) ON DELETE CASCADE, - tag_id INTEGER REFERENCES tags(id) ON DELETE CASCADE, + image_id INTEGER NOT NULL, + tag_id INTEGER NOT NULL, INDEX(image_id), INDEX(tag_id), - INDEX(image_id, tag_id) + INDEX(image_id, tag_id), + FOREIGN KEY (image_id) REFERENCES images(id) ON DELETE CASCADE, + FOREIGN KEY (tag_id) REFERENCES tags(id) ON DELETE CASCADE ")); $db->execute("INSERT INTO config(name, value) VALUES('db_version', 7)"); }