2008-11-02 23:55:09 +00:00
|
|
|
<?php defined("SYSPATH") or die("No direct script access.");
|
|
|
|
|
/**
|
|
|
|
|
* Gallery - a web based photo album viewer and editor
|
2013-01-21 01:22:01 -05:00
|
|
|
* Copyright (C) 2000-2013 Bharat Mediratta
|
2008-11-02 23:55:09 +00:00
|
|
|
*
|
|
|
|
|
* 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.
|
|
|
|
|
*/
|
2009-05-27 19:59:34 -07:00
|
|
|
class gallery_installer {
|
2009-06-23 12:00:49 -07:00
|
|
|
static function install() {
|
2008-11-02 23:55:09 +00:00
|
|
|
$db = Database::instance();
|
2009-06-23 12:00:49 -07:00
|
|
|
$db->query("CREATE TABLE {access_caches} (
|
|
|
|
|
`id` int(9) NOT NULL auto_increment,
|
|
|
|
|
`item_id` int(9),
|
2010-08-14 15:10:07 -07:00
|
|
|
PRIMARY KEY (`id`),
|
|
|
|
|
KEY (`item_id`))
|
2009-08-27 15:47:54 -07:00
|
|
|
DEFAULT CHARSET=utf8;");
|
2008-11-02 23:55:09 +00:00
|
|
|
|
2009-06-23 12:00:49 -07:00
|
|
|
$db->query("CREATE TABLE {access_intents} (
|
|
|
|
|
`id` int(9) NOT NULL auto_increment,
|
|
|
|
|
`item_id` int(9),
|
|
|
|
|
PRIMARY KEY (`id`))
|
2009-08-27 15:47:54 -07:00
|
|
|
DEFAULT CHARSET=utf8;");
|
2008-12-23 04:14:07 +00:00
|
|
|
|
2010-02-22 00:30:54 -08:00
|
|
|
// Using a simple index instead of a unique key for the
|
|
|
|
|
// key column to avoid handling of concurrency issues
|
|
|
|
|
// on insert. Thus allowing concurrent inserts on the
|
|
|
|
|
// same cache key, as does Memcache / xcache.
|
2009-06-28 16:24:51 -07:00
|
|
|
$db->query("CREATE TABLE {caches} (
|
2009-06-28 16:48:29 -07:00
|
|
|
`id` int(9) NOT NULL auto_increment,
|
|
|
|
|
`key` varchar(255) NOT NULL,
|
2009-06-28 16:24:51 -07:00
|
|
|
`tags` varchar(255),
|
|
|
|
|
`expiration` int(9) NOT NULL,
|
|
|
|
|
`cache` longblob,
|
|
|
|
|
PRIMARY KEY (`id`),
|
2011-01-03 12:25:51 -08:00
|
|
|
UNIQUE KEY (`key`),
|
2009-06-28 16:24:51 -07:00
|
|
|
KEY (`tags`))
|
2009-08-27 15:47:54 -07:00
|
|
|
DEFAULT CHARSET=utf8;");
|
2009-06-28 16:24:51 -07:00
|
|
|
|
2010-02-07 15:02:41 -08:00
|
|
|
$db->query("CREATE TABLE {failed_auths} (
|
2010-01-30 19:48:57 -08:00
|
|
|
`id` int(9) NOT NULL auto_increment,
|
|
|
|
|
`count` int(9) NOT NULL,
|
|
|
|
|
`name` varchar(255) NOT NULL,
|
|
|
|
|
`time` int(9) NOT NULL,
|
|
|
|
|
PRIMARY KEY (`id`))
|
|
|
|
|
DEFAULT CHARSET=utf8;");
|
|
|
|
|
|
2009-06-23 12:00:49 -07:00
|
|
|
$db->query("CREATE TABLE {graphics_rules} (
|
|
|
|
|
`id` int(9) NOT NULL auto_increment,
|
|
|
|
|
`active` BOOLEAN default 0,
|
|
|
|
|
`args` varchar(255) default NULL,
|
|
|
|
|
`module_name` varchar(64) NOT NULL,
|
|
|
|
|
`operation` varchar(64) NOT NULL,
|
|
|
|
|
`priority` int(9) NOT NULL,
|
|
|
|
|
`target` varchar(32) NOT NULL,
|
|
|
|
|
PRIMARY KEY (`id`))
|
2009-08-27 15:47:54 -07:00
|
|
|
DEFAULT CHARSET=utf8;");
|
2009-06-20 01:24:21 -07:00
|
|
|
|
2009-06-23 12:00:49 -07:00
|
|
|
$db->query("CREATE TABLE {incoming_translations} (
|
|
|
|
|
`id` int(9) NOT NULL auto_increment,
|
|
|
|
|
`key` char(32) NOT NULL,
|
|
|
|
|
`locale` char(10) NOT NULL,
|
|
|
|
|
`message` text NOT NULL,
|
|
|
|
|
`revision` int(9) DEFAULT NULL,
|
|
|
|
|
`translation` text,
|
|
|
|
|
PRIMARY KEY (`id`),
|
|
|
|
|
UNIQUE KEY(`key`, `locale`),
|
|
|
|
|
KEY `locale_key` (`locale`, `key`))
|
2009-08-27 15:47:54 -07:00
|
|
|
DEFAULT CHARSET=utf8;");
|
2008-11-03 02:08:07 +00:00
|
|
|
|
2009-06-23 12:00:49 -07:00
|
|
|
$db->query("CREATE TABLE {items} (
|
|
|
|
|
`id` int(9) NOT NULL auto_increment,
|
|
|
|
|
`album_cover_item_id` int(9) default NULL,
|
2009-09-21 13:56:52 -07:00
|
|
|
`captured` int(9) default NULL,
|
2009-06-23 12:00:49 -07:00
|
|
|
`created` int(9) default NULL,
|
2011-01-03 12:25:51 -08:00
|
|
|
`description` text default NULL,
|
2009-06-23 12:00:49 -07:00
|
|
|
`height` int(9) default NULL,
|
2009-07-25 19:06:54 +02:00
|
|
|
`left_ptr` int(9) NOT NULL,
|
2009-06-23 12:00:49 -07:00
|
|
|
`level` int(9) NOT NULL,
|
|
|
|
|
`mime_type` varchar(64) default NULL,
|
|
|
|
|
`name` varchar(255) default NULL,
|
|
|
|
|
`owner_id` int(9) default NULL,
|
|
|
|
|
`parent_id` int(9) NOT NULL,
|
2011-01-15 21:49:22 +01:00
|
|
|
`rand_key` decimal(11,10) default NULL,
|
2009-06-23 12:00:49 -07:00
|
|
|
`relative_path_cache` varchar(255) default NULL,
|
2009-09-07 15:41:03 -07:00
|
|
|
`relative_url_cache` varchar(255) default NULL,
|
2009-06-23 12:00:49 -07:00
|
|
|
`resize_dirty` boolean default 1,
|
|
|
|
|
`resize_height` int(9) default NULL,
|
|
|
|
|
`resize_width` int(9) default NULL,
|
2009-07-25 19:06:54 +02:00
|
|
|
`right_ptr` int(9) NOT NULL,
|
2009-09-07 15:41:03 -07:00
|
|
|
`slug` varchar(255) default NULL,
|
2009-06-23 12:00:49 -07:00
|
|
|
`sort_column` varchar(64) default NULL,
|
|
|
|
|
`sort_order` char(4) default 'ASC',
|
|
|
|
|
`thumb_dirty` boolean default 1,
|
|
|
|
|
`thumb_height` int(9) default NULL,
|
|
|
|
|
`thumb_width` int(9) default NULL,
|
|
|
|
|
`title` varchar(255) default NULL,
|
|
|
|
|
`type` varchar(32) NOT NULL,
|
|
|
|
|
`updated` int(9) default NULL,
|
|
|
|
|
`view_count` int(9) default 0,
|
|
|
|
|
`weight` int(9) NOT NULL default 0,
|
|
|
|
|
`width` int(9) default NULL,
|
|
|
|
|
PRIMARY KEY (`id`),
|
|
|
|
|
KEY `parent_id` (`parent_id`),
|
|
|
|
|
KEY `type` (`type`),
|
2009-07-30 01:55:56 +08:00
|
|
|
KEY `random` (`rand_key`),
|
2010-08-07 12:18:43 -07:00
|
|
|
KEY `weight` (`weight` DESC),
|
2013-01-27 15:35:42 -05:00
|
|
|
KEY `left_ptr` (`left_ptr`),
|
|
|
|
|
KEY `relative_path_cache` (`relative_path_cache`))
|
2009-08-27 15:47:54 -07:00
|
|
|
DEFAULT CHARSET=utf8;");
|
2008-12-21 03:50:11 +00:00
|
|
|
|
2009-06-23 12:00:49 -07:00
|
|
|
$db->query("CREATE TABLE {logs} (
|
|
|
|
|
`id` int(9) NOT NULL auto_increment,
|
|
|
|
|
`category` varchar(64) default NULL,
|
|
|
|
|
`html` varchar(255) default NULL,
|
|
|
|
|
`message` text default NULL,
|
|
|
|
|
`referer` varchar(255) default NULL,
|
|
|
|
|
`severity` int(9) default 0,
|
|
|
|
|
`timestamp` int(9) default 0,
|
|
|
|
|
`url` varchar(255) default NULL,
|
|
|
|
|
`user_id` int(9) default 0,
|
|
|
|
|
PRIMARY KEY (`id`))
|
2009-08-27 15:47:54 -07:00
|
|
|
DEFAULT CHARSET=utf8;");
|
2008-12-26 05:43:06 +00:00
|
|
|
|
2009-06-23 12:00:49 -07:00
|
|
|
$db->query("CREATE TABLE {messages} (
|
|
|
|
|
`id` int(9) NOT NULL auto_increment,
|
|
|
|
|
`key` varchar(255) default NULL,
|
|
|
|
|
`severity` varchar(32) default NULL,
|
2011-01-16 21:46:03 -08:00
|
|
|
`value` text default NULL,
|
2009-06-23 12:00:49 -07:00
|
|
|
PRIMARY KEY (`id`),
|
|
|
|
|
UNIQUE KEY(`key`))
|
2009-08-27 15:47:54 -07:00
|
|
|
DEFAULT CHARSET=utf8;");
|
2008-11-29 22:47:15 +00:00
|
|
|
|
2009-06-23 12:00:49 -07:00
|
|
|
$db->query("CREATE TABLE {modules} (
|
|
|
|
|
`id` int(9) NOT NULL auto_increment,
|
|
|
|
|
`active` BOOLEAN default 0,
|
|
|
|
|
`name` varchar(64) default NULL,
|
|
|
|
|
`version` int(9) default NULL,
|
2010-08-06 10:41:38 -07:00
|
|
|
`weight` int(9) default NULL,
|
2009-06-23 12:00:49 -07:00
|
|
|
PRIMARY KEY (`id`),
|
2010-08-06 10:41:38 -07:00
|
|
|
UNIQUE KEY(`name`),
|
|
|
|
|
KEY (`weight`))
|
2009-08-27 15:47:54 -07:00
|
|
|
DEFAULT CHARSET=utf8;");
|
2009-01-08 06:52:18 +00:00
|
|
|
|
2009-06-23 12:00:49 -07:00
|
|
|
$db->query("CREATE TABLE {outgoing_translations} (
|
|
|
|
|
`id` int(9) NOT NULL auto_increment,
|
|
|
|
|
`base_revision` int(9) DEFAULT NULL,
|
|
|
|
|
`key` char(32) NOT NULL,
|
|
|
|
|
`locale` char(10) NOT NULL,
|
|
|
|
|
`message` text NOT NULL,
|
|
|
|
|
`translation` text,
|
|
|
|
|
PRIMARY KEY (`id`),
|
|
|
|
|
UNIQUE KEY(`key`, `locale`),
|
|
|
|
|
KEY `locale_key` (`locale`, `key`))
|
2009-08-27 15:47:54 -07:00
|
|
|
DEFAULT CHARSET=utf8;");
|
2009-02-09 08:42:13 +00:00
|
|
|
|
2009-06-23 12:00:49 -07:00
|
|
|
$db->query("CREATE TABLE {permissions} (
|
|
|
|
|
`id` int(9) NOT NULL auto_increment,
|
|
|
|
|
`display_name` varchar(64) default NULL,
|
|
|
|
|
`name` varchar(64) default NULL,
|
|
|
|
|
PRIMARY KEY (`id`),
|
|
|
|
|
UNIQUE KEY(`name`))
|
2009-08-27 15:47:54 -07:00
|
|
|
DEFAULT CHARSET=utf8;");
|
2008-12-17 18:32:08 +00:00
|
|
|
|
2009-06-23 12:00:49 -07:00
|
|
|
$db->query("CREATE TABLE {sessions} (
|
|
|
|
|
`session_id` varchar(127) NOT NULL,
|
|
|
|
|
`data` text NOT NULL,
|
|
|
|
|
`last_activity` int(10) UNSIGNED NOT NULL,
|
|
|
|
|
PRIMARY KEY (`session_id`))
|
2009-08-27 15:47:54 -07:00
|
|
|
DEFAULT CHARSET=utf8;");
|
2008-12-28 10:12:41 +00:00
|
|
|
|
2009-06-23 12:00:49 -07:00
|
|
|
$db->query("CREATE TABLE {tasks} (
|
|
|
|
|
`id` int(9) NOT NULL auto_increment,
|
|
|
|
|
`callback` varchar(128) default NULL,
|
|
|
|
|
`context` text NOT NULL,
|
|
|
|
|
`done` boolean default 0,
|
|
|
|
|
`name` varchar(128) default NULL,
|
|
|
|
|
`owner_id` int(9) default NULL,
|
|
|
|
|
`percent_complete` int(9) default 0,
|
|
|
|
|
`state` varchar(32) default NULL,
|
|
|
|
|
`status` varchar(255) default NULL,
|
|
|
|
|
`updated` int(9) default NULL,
|
|
|
|
|
PRIMARY KEY (`id`),
|
|
|
|
|
KEY (`owner_id`))
|
2009-08-27 15:47:54 -07:00
|
|
|
DEFAULT CHARSET=utf8;");
|
2009-06-20 01:24:21 -07:00
|
|
|
|
2009-06-23 12:00:49 -07:00
|
|
|
$db->query("CREATE TABLE {themes} (
|
|
|
|
|
`id` int(9) NOT NULL auto_increment,
|
|
|
|
|
`name` varchar(64) default NULL,
|
|
|
|
|
`version` int(9) default NULL,
|
|
|
|
|
PRIMARY KEY (`id`),
|
|
|
|
|
UNIQUE KEY(`name`))
|
2009-08-27 15:47:54 -07:00
|
|
|
DEFAULT CHARSET=utf8;");
|
2008-12-10 19:44:58 +00:00
|
|
|
|
2009-06-23 12:00:49 -07:00
|
|
|
$db->query("CREATE TABLE {vars} (
|
|
|
|
|
`id` int(9) NOT NULL auto_increment,
|
|
|
|
|
`module_name` varchar(64) NOT NULL,
|
|
|
|
|
`name` varchar(64) NOT NULL,
|
|
|
|
|
`value` text,
|
|
|
|
|
PRIMARY KEY (`id`),
|
|
|
|
|
UNIQUE KEY(`module_name`, `name`))
|
2009-08-27 15:47:54 -07:00
|
|
|
DEFAULT CHARSET=utf8;");
|
2008-11-03 02:08:07 +00:00
|
|
|
|
2009-06-23 12:00:49 -07:00
|
|
|
foreach (array("albums", "logs", "modules", "resizes", "thumbs", "tmp", "uploads") as $dir) {
|
|
|
|
|
@mkdir(VARPATH . $dir);
|
2010-01-30 21:07:03 -08:00
|
|
|
if (in_array($dir, array("logs", "tmp", "uploads"))) {
|
|
|
|
|
self::_protect_directory(VARPATH . $dir);
|
|
|
|
|
}
|
2009-06-23 12:00:49 -07:00
|
|
|
}
|
2008-12-01 08:50:00 +00:00
|
|
|
|
2009-06-23 12:00:49 -07:00
|
|
|
access::register_permission("view", "View");
|
2009-10-28 12:15:52 -07:00
|
|
|
access::register_permission("view_full", "View full size");
|
2009-06-23 12:00:49 -07:00
|
|
|
access::register_permission("edit", "Edit");
|
|
|
|
|
access::register_permission("add", "Add");
|
2008-12-01 08:50:00 +00:00
|
|
|
|
2009-09-17 01:17:30 -07:00
|
|
|
// Mark for translation (must be the same strings as used above)
|
2009-10-28 12:15:52 -07:00
|
|
|
t("View full size");
|
2009-09-17 01:17:30 -07:00
|
|
|
t("View");
|
|
|
|
|
t("Edit");
|
|
|
|
|
t("Add");
|
|
|
|
|
|
2010-01-17 13:28:24 -08:00
|
|
|
// Hardcode the first item to sidestep ORM validation rules
|
|
|
|
|
$now = time();
|
|
|
|
|
db::build()->insert(
|
|
|
|
|
"items",
|
|
|
|
|
array("created" => $now,
|
|
|
|
|
"description" => "",
|
|
|
|
|
"left_ptr" => 1,
|
|
|
|
|
"level" => 1,
|
|
|
|
|
"parent_id" => 0,
|
|
|
|
|
"resize_dirty" => 1,
|
|
|
|
|
"right_ptr" => 2,
|
|
|
|
|
"sort_column" => "weight",
|
|
|
|
|
"sort_order" => "ASC",
|
|
|
|
|
"thumb_dirty" => 1,
|
|
|
|
|
"title" => "Gallery",
|
|
|
|
|
"type" => "album",
|
|
|
|
|
"updated" => $now,
|
|
|
|
|
"weight" => 1))
|
|
|
|
|
->execute();
|
2010-01-27 22:34:11 -08:00
|
|
|
$root = ORM::factory("item", 1);
|
2009-06-23 12:00:49 -07:00
|
|
|
access::add_item($root);
|
2008-12-23 04:14:07 +00:00
|
|
|
|
2009-09-24 14:24:43 -07:00
|
|
|
module::set_var("gallery", "active_site_theme", "wind");
|
|
|
|
|
module::set_var("gallery", "active_admin_theme", "admin_wind");
|
2009-11-19 11:44:01 -08:00
|
|
|
module::set_var("gallery", "page_size", 9);
|
|
|
|
|
module::set_var("gallery", "thumb_size", 200);
|
|
|
|
|
module::set_var("gallery", "resize_size", 640);
|
2009-06-23 12:00:49 -07:00
|
|
|
module::set_var("gallery", "default_locale", "en_US");
|
|
|
|
|
module::set_var("gallery", "image_quality", 75);
|
2009-08-29 15:20:27 -07:00
|
|
|
module::set_var("gallery", "image_sharpen", 15);
|
2011-01-16 22:16:09 -08:00
|
|
|
module::set_var("gallery", "upgrade_checker_auto_enabled", true);
|
2008-12-23 04:14:07 +00:00
|
|
|
|
2009-06-23 12:00:49 -07:00
|
|
|
// Add rules for generating our thumbnails and resizes
|
|
|
|
|
graphics::add_rule(
|
2009-09-27 15:24:51 -07:00
|
|
|
"gallery", "thumb", "gallery_graphics::resize",
|
2009-06-23 12:00:49 -07:00
|
|
|
array("width" => 200, "height" => 200, "master" => Image::AUTO),
|
|
|
|
|
100);
|
|
|
|
|
graphics::add_rule(
|
2009-09-27 15:24:51 -07:00
|
|
|
"gallery", "resize", "gallery_graphics::resize",
|
2010-01-11 10:42:39 -08:00
|
|
|
array("width" => 640, "height" => 640, "master" => Image::AUTO),
|
2009-06-23 12:00:49 -07:00
|
|
|
100);
|
2009-01-12 07:39:53 +00:00
|
|
|
|
2009-06-23 12:00:49 -07:00
|
|
|
// Instantiate default themes (site and admin)
|
2009-09-27 11:25:03 -07:00
|
|
|
foreach (array("wind", "admin_wind") as $theme_name) {
|
2009-10-04 10:04:35 -07:00
|
|
|
$theme_info = new ArrayObject(parse_ini_file(THEMEPATH . $theme_name . "/theme.info"),
|
|
|
|
|
ArrayObject::ARRAY_AS_PROPS);
|
2009-06-23 12:00:49 -07:00
|
|
|
$theme = ORM::factory("theme");
|
|
|
|
|
$theme->name = $theme_name;
|
|
|
|
|
$theme->version = $theme_info->version;
|
|
|
|
|
$theme->save();
|
|
|
|
|
}
|
2009-05-27 16:15:00 -07:00
|
|
|
|
2009-06-23 12:00:49 -07:00
|
|
|
block_manager::add("dashboard_sidebar", "gallery", "block_adder");
|
|
|
|
|
block_manager::add("dashboard_sidebar", "gallery", "stats");
|
|
|
|
|
block_manager::add("dashboard_sidebar", "gallery", "platform_info");
|
|
|
|
|
block_manager::add("dashboard_sidebar", "gallery", "project_news");
|
|
|
|
|
block_manager::add("dashboard_center", "gallery", "welcome");
|
2011-01-16 22:16:09 -08:00
|
|
|
block_manager::add("dashboard_center", "gallery", "upgrade_checker");
|
2009-06-23 12:00:49 -07:00
|
|
|
block_manager::add("dashboard_center", "gallery", "photo_stream");
|
|
|
|
|
block_manager::add("dashboard_center", "gallery", "log_entries");
|
2009-05-29 20:24:42 -07:00
|
|
|
|
2009-06-23 12:00:49 -07:00
|
|
|
module::set_var("gallery", "choose_default_tookit", 1);
|
|
|
|
|
module::set_var("gallery", "date_format", "Y-M-d");
|
|
|
|
|
module::set_var("gallery", "date_time_format", "Y-M-d H:i:s");
|
|
|
|
|
module::set_var("gallery", "time_format", "H:i:s");
|
2009-11-19 11:44:01 -08:00
|
|
|
module::set_var("gallery", "show_credits", 1);
|
2010-02-14 18:33:38 -08:00
|
|
|
// Mark string for translation
|
|
|
|
|
$powered_by_string = t("Powered by <a href=\"%url\">%gallery_version</a>",
|
|
|
|
|
array("locale" => "root"));
|
2010-02-15 13:12:38 -08:00
|
|
|
module::set_var("gallery", "credits", (string) $powered_by_string);
|
2009-12-05 21:08:10 -08:00
|
|
|
module::set_var("gallery", "simultaneous_upload_limit", 5);
|
2010-02-08 22:15:38 -08:00
|
|
|
module::set_var("gallery", "admin_area_timeout", 90 * 60);
|
2010-08-01 21:00:30 -07:00
|
|
|
module::set_var("gallery", "maintenance_mode", 0);
|
2010-08-28 21:57:54 -07:00
|
|
|
module::set_var("gallery", "visible_title_length", 15);
|
2010-08-29 16:26:27 -07:00
|
|
|
module::set_var("gallery", "favicon_url", "lib/images/favicon.ico");
|
2011-04-22 12:50:21 -04:00
|
|
|
module::set_var("gallery", "apple_touch_icon_url", "lib/images/apple-touch-icon.png");
|
2010-09-01 23:19:43 -07:00
|
|
|
module::set_var("gallery", "email_from", "");
|
|
|
|
|
module::set_var("gallery", "email_reply_to", "");
|
2010-08-31 20:39:25 -07:00
|
|
|
module::set_var("gallery", "email_line_length", 70);
|
|
|
|
|
module::set_var("gallery", "email_header_separator", serialize("\n"));
|
2010-09-16 15:17:00 -07:00
|
|
|
module::set_var("gallery", "show_user_profiles_to", "registered_users");
|
2010-09-16 20:43:48 -07:00
|
|
|
module::set_var("gallery", "extra_binary_paths", "/usr/local/bin:/opt/local/bin:/opt/bin");
|
2011-04-23 12:48:04 -07:00
|
|
|
module::set_var("gallery", "timezone", null);
|
2012-11-13 13:17:45 -05:00
|
|
|
module::set_var("gallery", "lock_timeout", 1);
|
2012-12-18 15:58:13 +01:00
|
|
|
module::set_var("gallery", "movie_extract_frame_time", 3);
|
2013-02-12 00:30:30 +01:00
|
|
|
module::set_var("gallery", "movie_allow_uploads", "autodetect");
|
2009-06-23 12:00:49 -07:00
|
|
|
}
|
2009-06-20 01:24:21 -07:00
|
|
|
|
2009-06-23 12:00:49 -07:00
|
|
|
static function upgrade($version) {
|
2009-06-27 23:30:02 -07:00
|
|
|
$db = Database::instance();
|
2009-06-20 01:24:21 -07:00
|
|
|
if ($version == 1) {
|
2009-06-12 23:05:13 -07:00
|
|
|
module::set_var("gallery", "date_format", "Y-M-d");
|
|
|
|
|
module::set_var("gallery", "date_time_format", "Y-M-d H:i:s");
|
|
|
|
|
module::set_var("gallery", "time_format", "H:i:s");
|
2009-06-20 01:24:21 -07:00
|
|
|
module::set_version("gallery", $version = 2);
|
2008-11-02 23:55:09 +00:00
|
|
|
}
|
2009-06-23 16:05:32 -07:00
|
|
|
|
|
|
|
|
if ($version == 2) {
|
|
|
|
|
module::set_var("gallery", "show_credits", 1);
|
|
|
|
|
module::set_version("gallery", $version = 3);
|
|
|
|
|
}
|
2009-06-27 23:30:02 -07:00
|
|
|
|
|
|
|
|
if ($version == 3) {
|
|
|
|
|
$db->query("CREATE TABLE {caches} (
|
2009-06-28 16:24:51 -07:00
|
|
|
`id` varchar(255) NOT NULL,
|
|
|
|
|
`tags` varchar(255),
|
|
|
|
|
`expiration` int(9) NOT NULL,
|
|
|
|
|
`cache` text,
|
|
|
|
|
PRIMARY KEY (`id`),
|
|
|
|
|
KEY (`tags`))
|
2009-08-27 15:47:54 -07:00
|
|
|
DEFAULT CHARSET=utf8;");
|
2009-06-27 23:30:02 -07:00
|
|
|
module::set_version("gallery", $version = 4);
|
|
|
|
|
}
|
2009-06-28 16:48:29 -07:00
|
|
|
|
2009-06-28 13:14:47 -07:00
|
|
|
if ($version == 4) {
|
|
|
|
|
Cache::instance()->delete_all();
|
2009-06-28 16:48:29 -07:00
|
|
|
$db->query("ALTER TABLE {caches} MODIFY COLUMN `cache` LONGBLOB");
|
2009-06-28 13:14:47 -07:00
|
|
|
module::set_version("gallery", $version = 5);
|
|
|
|
|
}
|
2009-06-28 16:48:29 -07:00
|
|
|
|
|
|
|
|
if ($version == 5) {
|
|
|
|
|
Cache::instance()->delete_all();
|
|
|
|
|
$db->query("ALTER TABLE {caches} DROP COLUMN `id`");
|
|
|
|
|
$db->query("ALTER TABLE {caches} ADD COLUMN `key` varchar(255) NOT NULL");
|
|
|
|
|
$db->query("ALTER TABLE {caches} ADD COLUMN `id` int(9) NOT NULL auto_increment PRIMARY KEY");
|
|
|
|
|
module::set_version("gallery", $version = 6);
|
|
|
|
|
}
|
2009-07-14 10:56:10 -07:00
|
|
|
|
|
|
|
|
if ($version == 6) {
|
|
|
|
|
module::clear_var("gallery", "version");
|
|
|
|
|
module::set_version("gallery", $version = 7);
|
|
|
|
|
}
|
2009-07-22 15:40:49 +02:00
|
|
|
|
|
|
|
|
if ($version == 7) {
|
2009-10-22 13:09:20 -07:00
|
|
|
$groups = identity::groups();
|
2009-07-22 15:40:49 +02:00
|
|
|
$permissions = ORM::factory("permission")->find_all();
|
|
|
|
|
foreach($groups as $group) {
|
|
|
|
|
foreach($permissions as $permission) {
|
|
|
|
|
// Update access intents
|
|
|
|
|
$db->query("ALTER TABLE {access_intents} MODIFY COLUMN {$permission->name}_{$group->id} BINARY(1) DEFAULT NULL");
|
|
|
|
|
// Update access cache
|
|
|
|
|
if ($permission->name === "view") {
|
|
|
|
|
$db->query("ALTER TABLE {items} MODIFY COLUMN {$permission->name}_{$group->id} BINARY(1) DEFAULT FALSE");
|
|
|
|
|
} else {
|
|
|
|
|
$db->query("ALTER TABLE {access_caches} MODIFY COLUMN {$permission->name}_{$group->id} BINARY(1) NOT NULL DEFAULT FALSE");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
module::set_version("gallery", $version = 8);
|
|
|
|
|
}
|
2009-07-25 19:06:54 +02:00
|
|
|
|
|
|
|
|
if ($version == 8) {
|
|
|
|
|
$db->query("ALTER TABLE {items} CHANGE COLUMN `left` `left_ptr` INT(9) NOT NULL;");
|
|
|
|
|
$db->query("ALTER TABLE {items} CHANGE COLUMN `right` `right_ptr` INT(9) NOT NULL;");
|
|
|
|
|
module::set_version("gallery", $version = 9);
|
|
|
|
|
}
|
2009-07-30 01:55:56 +08:00
|
|
|
|
|
|
|
|
if ($version == 9) {
|
|
|
|
|
$db->query("ALTER TABLE {items} ADD KEY `weight` (`weight` DESC);");
|
|
|
|
|
|
|
|
|
|
module::set_version("gallery", $version = 10);
|
|
|
|
|
}
|
2009-08-29 15:20:27 -07:00
|
|
|
|
|
|
|
|
if ($version == 10) {
|
|
|
|
|
module::set_var("gallery", "image_sharpen", 15);
|
|
|
|
|
|
|
|
|
|
module::set_version("gallery", $version = 11);
|
|
|
|
|
}
|
2009-09-07 15:41:03 -07:00
|
|
|
|
|
|
|
|
if ($version == 11) {
|
|
|
|
|
$db->query("ALTER TABLE {items} ADD COLUMN `relative_url_cache` varchar(255) DEFAULT NULL");
|
|
|
|
|
$db->query("ALTER TABLE {items} ADD COLUMN `slug` varchar(255) DEFAULT NULL");
|
|
|
|
|
|
|
|
|
|
// This is imperfect since some of the slugs may contain invalid characters, but it'll do
|
|
|
|
|
// for now because we don't want a lengthy operation here.
|
|
|
|
|
$db->query("UPDATE {items} SET `slug` = `name`");
|
2009-09-08 20:59:39 -07:00
|
|
|
|
2012-07-21 11:11:16 -07:00
|
|
|
// Flush all path caches because we're going to start urlencoding them.
|
2009-09-08 20:59:39 -07:00
|
|
|
$db->query("UPDATE {items} SET `relative_url_cache` = NULL, `relative_path_cache` = NULL");
|
2009-09-07 15:41:03 -07:00
|
|
|
module::set_version("gallery", $version = 12);
|
|
|
|
|
}
|
2009-09-23 17:03:25 -07:00
|
|
|
|
|
|
|
|
if ($version == 12) {
|
|
|
|
|
if (module::get_var("gallery", "active_site_theme") == "default") {
|
|
|
|
|
module::set_var("gallery", "active_site_theme", "wind");
|
|
|
|
|
}
|
|
|
|
|
if (module::get_var("gallery", "active_admin_theme") == "admin_default") {
|
|
|
|
|
module::set_var("gallery", "active_admin_theme", "admin_wind");
|
|
|
|
|
}
|
|
|
|
|
module::set_version("gallery", $version = 13);
|
|
|
|
|
}
|
|
|
|
|
|
2009-09-27 15:24:51 -07:00
|
|
|
if ($version == 13) {
|
|
|
|
|
// Add rules for generating our thumbnails and resizes
|
2009-09-28 08:03:14 -07:00
|
|
|
Database::instance()->query(
|
|
|
|
|
"UPDATE {graphics_rules} SET `operation` = CONCAT('gallery_graphics::', `operation`);");
|
2009-09-27 15:24:51 -07:00
|
|
|
module::set_version("gallery", $version = 14);
|
|
|
|
|
}
|
|
|
|
|
|
2009-09-30 17:02:48 -07:00
|
|
|
if ($version == 14) {
|
2009-11-13 13:56:05 -08:00
|
|
|
$sidebar_blocks = block_manager::get_active("site_sidebar");
|
2009-09-30 17:02:48 -07:00
|
|
|
if (empty($sidebar_blocks)) {
|
|
|
|
|
$available_blocks = block_manager::get_available_site_blocks();
|
2009-09-30 17:30:01 -07:00
|
|
|
foreach (array_keys(block_manager::get_available_site_blocks()) as $id) {
|
2009-09-30 17:02:48 -07:00
|
|
|
$sidebar_blocks[] = explode(":", $id);
|
|
|
|
|
}
|
2009-11-13 13:56:05 -08:00
|
|
|
block_manager::set_active("site_sidebar", $sidebar_blocks);
|
2009-09-30 17:02:48 -07:00
|
|
|
}
|
|
|
|
|
module::set_version("gallery", $version = 15);
|
|
|
|
|
}
|
2009-10-26 09:36:51 -07:00
|
|
|
|
|
|
|
|
if ($version == 15) {
|
|
|
|
|
module::set_var("gallery", "identity_provider", "user");
|
|
|
|
|
module::set_version("gallery", $version = 16);
|
|
|
|
|
}
|
2009-11-12 09:29:17 -08:00
|
|
|
|
2009-11-14 12:03:41 -08:00
|
|
|
// Convert block keys to an md5 hash of the module and block name
|
2009-11-12 09:29:17 -08:00
|
|
|
if ($version == 16) {
|
2009-11-14 12:03:41 -08:00
|
|
|
foreach (array("dashboard_sidebar", "dashboard_center", "site_sidebar") as $location) {
|
|
|
|
|
$blocks = block_manager::get_active($location);
|
|
|
|
|
$new_blocks = array();
|
|
|
|
|
foreach ($blocks as $block) {
|
|
|
|
|
$new_blocks[md5("{$block[0]}:{$block[1]}")] = $block;
|
|
|
|
|
}
|
|
|
|
|
block_manager::set_active($location, $new_blocks);
|
2009-11-12 09:29:17 -08:00
|
|
|
}
|
|
|
|
|
module::set_version("gallery", $version = 17);
|
|
|
|
|
}
|
2009-11-13 09:14:39 -08:00
|
|
|
|
2009-11-14 12:03:41 -08:00
|
|
|
// We didn't like md5 hashes so convert block keys back to random keys to allow duplicates.
|
2009-11-13 09:14:39 -08:00
|
|
|
if ($version == 17) {
|
2009-11-13 13:56:05 -08:00
|
|
|
foreach (array("dashboard_sidebar", "dashboard_center", "site_sidebar") as $location) {
|
2009-11-13 09:14:39 -08:00
|
|
|
$blocks = block_manager::get_active($location);
|
|
|
|
|
$new_blocks = array();
|
|
|
|
|
foreach ($blocks as $block) {
|
2010-12-15 14:57:00 -08:00
|
|
|
$new_blocks[random::int()] = $block;
|
2009-11-13 09:14:39 -08:00
|
|
|
}
|
|
|
|
|
block_manager::set_active($location, $new_blocks);
|
|
|
|
|
}
|
|
|
|
|
module::set_version("gallery", $version = 18);
|
|
|
|
|
}
|
2009-11-13 13:56:05 -08:00
|
|
|
|
2009-11-14 12:03:41 -08:00
|
|
|
// Rename blocks_site.sidebar to blocks_site_sidebar
|
2009-11-13 13:56:05 -08:00
|
|
|
if ($version == 18) {
|
2009-11-14 12:03:41 -08:00
|
|
|
$blocks = block_manager::get_active("site.sidebar");
|
|
|
|
|
block_manager::set_active("site_sidebar", $blocks);
|
|
|
|
|
module::clear_var("gallery", "blocks_site.sidebar");
|
2009-11-13 13:56:05 -08:00
|
|
|
module::set_version("gallery", $version = 19);
|
|
|
|
|
}
|
2009-12-02 19:08:13 -08:00
|
|
|
|
|
|
|
|
// Set a default for the number of simultaneous uploads
|
|
|
|
|
// Version 20 was reverted in 57adefc5baa7a2b0dfcd3e736e80c2fa86d3bfa2, so skip it.
|
|
|
|
|
if ($version == 19 || $version == 20) {
|
|
|
|
|
module::set_var("gallery", "simultaneous_upload_limit", 5);
|
|
|
|
|
module::set_version("gallery", $version = 21);
|
|
|
|
|
}
|
2010-01-11 10:42:39 -08:00
|
|
|
|
|
|
|
|
// Update the graphics rules table so that the maximum height for resizes is 640 not 480.
|
|
|
|
|
// Fixes ticket #671
|
2010-01-29 14:20:34 -08:00
|
|
|
if ($version == 21) {
|
2010-01-11 10:42:39 -08:00
|
|
|
$resize_rule = ORM::factory("graphics_rule")
|
|
|
|
|
->where("id", "=", "2")
|
|
|
|
|
->find();
|
|
|
|
|
// make sure it hasn't been changed already
|
|
|
|
|
$args = unserialize($resize_rule->args);
|
|
|
|
|
if ($args["height"] == 480 && $args["width"] == 640) {
|
|
|
|
|
$args["height"] = 640;
|
|
|
|
|
$resize_rule->args = serialize($args);
|
|
|
|
|
$resize_rule->save();
|
|
|
|
|
}
|
|
|
|
|
module::set_version("gallery", $version = 22);
|
|
|
|
|
}
|
2010-01-29 14:20:34 -08:00
|
|
|
|
|
|
|
|
// Update slug values to be legal. We should have done this in the 11->12 upgrader, but I was
|
|
|
|
|
// lazy. Mea culpa!
|
|
|
|
|
if ($version == 22) {
|
|
|
|
|
foreach (db::build()
|
|
|
|
|
->from("items")
|
|
|
|
|
->select("id", "slug")
|
2010-12-28 23:10:05 -08:00
|
|
|
->where(db::expr("`slug` REGEXP '[^_A-Za-z0-9-]'"), "=", 1)
|
2010-01-29 14:20:34 -08:00
|
|
|
->execute() as $row) {
|
|
|
|
|
$new_slug = item::convert_filename_to_slug($row->slug);
|
|
|
|
|
if (empty($new_slug)) {
|
2010-12-15 14:57:00 -08:00
|
|
|
$new_slug = random::int();
|
2010-01-29 14:20:34 -08:00
|
|
|
}
|
|
|
|
|
db::build()
|
|
|
|
|
->update("items")
|
|
|
|
|
->set("slug", $new_slug)
|
2010-01-29 14:25:57 -08:00
|
|
|
->set("relative_url_cache", null)
|
2010-01-29 14:20:34 -08:00
|
|
|
->where("id", "=", $row->id)
|
|
|
|
|
->execute();
|
|
|
|
|
}
|
|
|
|
|
module::set_version("gallery", $version = 23);
|
|
|
|
|
}
|
2010-01-30 19:48:57 -08:00
|
|
|
|
2010-01-30 21:07:03 -08:00
|
|
|
if ($version == 23) {
|
2010-01-30 19:48:57 -08:00
|
|
|
$db->query("CREATE TABLE {failed_logins} (
|
|
|
|
|
`id` int(9) NOT NULL auto_increment,
|
|
|
|
|
`count` int(9) NOT NULL,
|
|
|
|
|
`name` varchar(255) NOT NULL,
|
|
|
|
|
`time` int(9) NOT NULL,
|
|
|
|
|
PRIMARY KEY (`id`))
|
|
|
|
|
DEFAULT CHARSET=utf8;");
|
|
|
|
|
module::set_version("gallery", $version = 24);
|
|
|
|
|
}
|
2010-01-30 21:07:03 -08:00
|
|
|
|
|
|
|
|
if ($version == 24) {
|
|
|
|
|
foreach (array("logs", "tmp", "uploads") as $dir) {
|
|
|
|
|
self::_protect_directory(VARPATH . $dir);
|
|
|
|
|
}
|
|
|
|
|
module::set_version("gallery", $version = 25);
|
|
|
|
|
}
|
2010-02-02 20:50:34 -08:00
|
|
|
|
|
|
|
|
if ($version == 25) {
|
|
|
|
|
db::build()
|
|
|
|
|
->update("items")
|
2010-12-28 23:10:05 -08:00
|
|
|
->set("title", db::expr("`name`"))
|
2010-02-02 20:50:34 -08:00
|
|
|
->and_open()
|
|
|
|
|
->where("title", "IS", null)
|
|
|
|
|
->or_where("title", "=", "")
|
|
|
|
|
->close()
|
|
|
|
|
->execute();
|
|
|
|
|
module::set_version("gallery", $version = 26);
|
|
|
|
|
}
|
2010-02-07 08:45:10 -08:00
|
|
|
|
|
|
|
|
if ($version == 26) {
|
2010-09-01 22:19:44 -07:00
|
|
|
if (in_array("failed_logins", Database::instance()->list_tables())) {
|
|
|
|
|
$db->query("RENAME TABLE {failed_logins} TO {failed_auths}");
|
|
|
|
|
}
|
2010-02-07 08:45:10 -08:00
|
|
|
module::set_version("gallery", $version = 27);
|
|
|
|
|
}
|
2010-02-07 15:02:41 -08:00
|
|
|
|
|
|
|
|
if ($version == 27) {
|
2010-02-08 22:15:38 -08:00
|
|
|
// Set the admin area timeout to 90 minutes
|
|
|
|
|
module::set_var("gallery", "admin_area_timeout", 90 * 60);
|
2010-02-07 15:02:41 -08:00
|
|
|
module::set_version("gallery", $version = 28);
|
|
|
|
|
}
|
2010-02-14 18:33:38 -08:00
|
|
|
|
|
|
|
|
if ($version == 28) {
|
|
|
|
|
module::set_var("gallery", "credits", "Powered by <a href=\"%url\">%gallery_version</a>");
|
|
|
|
|
module::set_version("gallery", $version = 29);
|
|
|
|
|
}
|
2010-02-22 00:30:54 -08:00
|
|
|
|
|
|
|
|
if ($version == 29) {
|
|
|
|
|
$db->query("ALTER TABLE {caches} ADD KEY (`key`);");
|
|
|
|
|
module::set_version("gallery", $version = 30);
|
2010-08-01 21:00:30 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ($version == 30) {
|
|
|
|
|
module::set_var("gallery", "maintenance_mode", 0);
|
|
|
|
|
module::set_version("gallery", $version = 31);
|
|
|
|
|
}
|
2010-08-06 10:41:38 -07:00
|
|
|
|
|
|
|
|
if ($version == 31) {
|
2010-08-07 10:57:18 -07:00
|
|
|
$db->query("ALTER TABLE {modules} ADD COLUMN `weight` int(9) DEFAULT NULL");
|
|
|
|
|
$db->query("ALTER TABLE {modules} ADD KEY (`weight`)");
|
2010-08-06 10:41:38 -07:00
|
|
|
db::update("modules")
|
2010-12-28 23:10:05 -08:00
|
|
|
->set("weight", db::expr("`id`"))
|
2010-08-06 10:41:38 -07:00
|
|
|
->execute();
|
|
|
|
|
module::set_version("gallery", $version = 32);
|
|
|
|
|
}
|
2010-08-07 12:18:43 -07:00
|
|
|
|
|
|
|
|
if ($version == 32) {
|
|
|
|
|
$db->query("ALTER TABLE {items} ADD KEY (`left_ptr`)");
|
|
|
|
|
module::set_version("gallery", $version = 33);
|
|
|
|
|
}
|
2010-08-14 15:10:07 -07:00
|
|
|
|
|
|
|
|
if ($version == 33) {
|
|
|
|
|
$db->query("ALTER TABLE {access_caches} ADD KEY (`item_id`)");
|
|
|
|
|
module::set_version("gallery", $version = 34);
|
|
|
|
|
}
|
2010-08-28 21:57:54 -07:00
|
|
|
|
|
|
|
|
if ($version == 34) {
|
|
|
|
|
module::set_var("gallery", "visible_title_length", 15);
|
|
|
|
|
module::set_version("gallery", $version = 35);
|
|
|
|
|
}
|
2010-08-29 16:26:27 -07:00
|
|
|
|
|
|
|
|
if ($version == 35) {
|
|
|
|
|
module::set_var("gallery", "favicon_url", "lib/images/favicon.ico");
|
|
|
|
|
module::set_version("gallery", $version = 36);
|
|
|
|
|
}
|
2010-08-31 20:39:25 -07:00
|
|
|
|
|
|
|
|
if ($version == 36) {
|
2010-08-31 21:07:43 -07:00
|
|
|
module::set_var("gallery", "email_from", "admin@example.com");
|
|
|
|
|
module::set_var("gallery", "email_reply_to", "public@example.com");
|
2010-08-31 20:39:25 -07:00
|
|
|
module::set_var("gallery", "email_line_length", 70);
|
|
|
|
|
module::set_var("gallery", "email_header_separator", serialize("\n"));
|
|
|
|
|
module::set_version("gallery", $version = 37);
|
|
|
|
|
}
|
2010-09-01 23:19:43 -07:00
|
|
|
|
|
|
|
|
// Changed our minds and decided that the initial value should be empty
|
|
|
|
|
// But don't just reset it blindly, only do it if the value is version 37 default
|
|
|
|
|
if ($version == 37) {
|
|
|
|
|
$email = module::get_var("gallery", "email_from", "");
|
|
|
|
|
if ($email == "admin@example.com") {
|
|
|
|
|
module::set_var("gallery", "email_from", "");
|
|
|
|
|
}
|
|
|
|
|
$email = module::get_var("gallery", "email_reply_to", "");
|
|
|
|
|
if ($email == "admin@example.com") {
|
|
|
|
|
module::set_var("gallery", "email_reply_to", "");
|
|
|
|
|
}
|
|
|
|
|
module::set_version("gallery", $version = 38);
|
|
|
|
|
}
|
2010-09-16 15:17:00 -07:00
|
|
|
|
|
|
|
|
if ($version == 38) {
|
|
|
|
|
module::set_var("gallery", "show_user_profiles_to", "registered_users");
|
|
|
|
|
module::set_version("gallery", $version = 39);
|
|
|
|
|
}
|
2010-09-16 20:43:48 -07:00
|
|
|
|
|
|
|
|
if ($version == 39) {
|
|
|
|
|
module::set_var("gallery", "extra_binary_paths", "/usr/local/bin:/opt/local/bin:/opt/bin");
|
|
|
|
|
module::set_version("gallery", $version = 40);
|
|
|
|
|
}
|
2010-09-29 20:47:43 -07:00
|
|
|
|
|
|
|
|
if ($version == 40) {
|
|
|
|
|
module::clear_var("gallery", "_cache");
|
|
|
|
|
module::set_version("gallery", $version = 41);
|
|
|
|
|
}
|
2010-12-27 22:16:29 +01:00
|
|
|
|
|
|
|
|
if ($version == 41) {
|
2010-12-28 18:42:43 +01:00
|
|
|
$db->query("TRUNCATE TABLE {caches}");
|
2010-12-27 22:16:29 +01:00
|
|
|
$db->query("ALTER TABLE {caches} DROP INDEX `key`, ADD UNIQUE `key` (`key`)");
|
|
|
|
|
module::set_version("gallery", $version = 42);
|
|
|
|
|
}
|
2011-01-03 15:44:36 +01:00
|
|
|
|
|
|
|
|
if ($version == 42) {
|
2011-01-03 20:07:12 +01:00
|
|
|
$db->query("ALTER TABLE {items} CHANGE `description` `description` text DEFAULT NULL");
|
2011-01-03 15:44:36 +01:00
|
|
|
module::set_version("gallery", $version = 43);
|
|
|
|
|
}
|
2011-01-15 21:49:22 +01:00
|
|
|
|
|
|
|
|
if ($version == 43) {
|
|
|
|
|
$db->query("ALTER TABLE {items} CHANGE `rand_key` `rand_key` DECIMAL(11, 10)");
|
|
|
|
|
module::set_version("gallery", $version = 44);
|
|
|
|
|
}
|
2011-01-16 21:46:03 -08:00
|
|
|
|
|
|
|
|
if ($version == 44) {
|
|
|
|
|
$db->query("ALTER TABLE {messages} CHANGE `value` `value` text default NULL");
|
|
|
|
|
module::set_version("gallery", $version = 45);
|
|
|
|
|
}
|
2011-01-16 22:16:09 -08:00
|
|
|
|
|
|
|
|
if ($version == 45) {
|
|
|
|
|
// Splice the upgrade_checker block into the admin dashboard at the top
|
|
|
|
|
// of the page, but under the welcome block if it's in the first position.
|
|
|
|
|
$blocks = block_manager::get_active("dashboard_center");
|
|
|
|
|
$index = count($blocks) && current($blocks) == array("gallery", "welcome") ? 1 : 0;
|
|
|
|
|
array_splice($blocks, $index, 0, array(random::int() => array("gallery", "upgrade_checker")));
|
|
|
|
|
block_manager::set_active("dashboard_center", $blocks);
|
|
|
|
|
|
|
|
|
|
module::set_var("gallery", "upgrade_checker_auto_enabled", true);
|
|
|
|
|
module::set_version("gallery", $version = 46);
|
|
|
|
|
}
|
2011-04-22 12:37:28 -04:00
|
|
|
|
|
|
|
|
if ($version == 46) {
|
2011-04-22 12:50:21 -04:00
|
|
|
module::set_var("gallery", "apple_touch_icon_url", "lib/images/apple-touch-icon.png");
|
2011-04-22 12:37:28 -04:00
|
|
|
module::set_version("gallery", $version = 47);
|
|
|
|
|
}
|
2011-04-22 18:15:17 -04:00
|
|
|
|
2011-04-23 12:48:04 -07:00
|
|
|
if ($version == 47 || $version == 48) {
|
2011-04-22 18:15:17 -04:00
|
|
|
// Add configuration variable to set timezone. Defaults to the currently
|
2012-12-16 18:11:01 +01:00
|
|
|
// used timezone (from PHP configuration). Note that in v48 we were
|
2011-04-23 12:48:04 -07:00
|
|
|
// setting this value incorrectly, so we're going to stomp this value for v49.
|
|
|
|
|
module::set_var("gallery", "timezone", null);
|
|
|
|
|
module::set_version("gallery", $version = 49);
|
2011-04-22 18:15:17 -04:00
|
|
|
}
|
2012-07-21 15:11:27 -07:00
|
|
|
|
|
|
|
|
if ($version == 49) {
|
|
|
|
|
// In v49 we changed the Item_Model validation code to disallow files with two dots in them,
|
|
|
|
|
// but we didn't rename any files which fail to validate, so as soon as you do anything to
|
|
|
|
|
// change those files (eg. as a side effect of getting the url or file path) it fails to
|
|
|
|
|
// validate. Fix those here. This might be slow, but if it times out it can just pick up
|
|
|
|
|
// where it left off.
|
|
|
|
|
foreach (db::build()
|
|
|
|
|
->from("items")
|
|
|
|
|
->select("id")
|
|
|
|
|
->where("type", "<>", "album")
|
|
|
|
|
->where(db::expr("`name` REGEXP '\\\\..*\\\\.'"), "=", 1)
|
|
|
|
|
->order_by("id", "asc")
|
|
|
|
|
->execute() as $row) {
|
|
|
|
|
set_time_limit(30);
|
|
|
|
|
$item = ORM::factory("item", $row->id);
|
|
|
|
|
$item->name = legal_file::smash_extensions($item->name);
|
|
|
|
|
$item->save();
|
|
|
|
|
}
|
|
|
|
|
module::set_version("gallery", $version = 50);
|
|
|
|
|
}
|
2012-11-13 13:17:45 -05:00
|
|
|
|
|
|
|
|
if ($version == 50) {
|
2012-12-16 18:11:01 +01:00
|
|
|
// In v51, we added a lock_timeout variable so that administrators could edit the time out
|
2013-01-24 12:03:05 +01:00
|
|
|
// from 1 second to a higher variable if their system runs concurrent parallel uploads for
|
2012-11-13 13:17:45 -05:00
|
|
|
// instance.
|
|
|
|
|
module::set_var("gallery", "lock_timeout", 1);
|
|
|
|
|
module::set_version("gallery", $version = 51);
|
|
|
|
|
}
|
2012-12-16 18:11:01 +01:00
|
|
|
|
|
|
|
|
if ($version == 51) {
|
2013-01-24 12:03:05 +01:00
|
|
|
// In v52, we added functions to the legal_file helper that map photo and movie file
|
2012-12-16 18:11:01 +01:00
|
|
|
// extensions to their mime types (and allow extension of the list by other modules). During
|
|
|
|
|
// this process, we correctly mapped m4v files to video/x-m4v, correcting a previous error
|
|
|
|
|
// where they were mapped to video/mp4. This corrects the existing items.
|
|
|
|
|
db::build()
|
|
|
|
|
->update("items")
|
|
|
|
|
->set("mime_type", "video/x-m4v")
|
|
|
|
|
->where("name", "REGEXP", "\.m4v$") // case insensitive since name column is utf8_general_ci
|
|
|
|
|
->execute();
|
|
|
|
|
module::set_version("gallery", $version = 52);
|
|
|
|
|
}
|
2013-01-24 12:03:05 +01:00
|
|
|
|
2012-12-18 15:58:13 +01:00
|
|
|
if ($version == 52) {
|
|
|
|
|
// In v53, we added the ability to change the default time used when extracting frames from
|
|
|
|
|
// movies. Previously we hard-coded this at 3 seconds, so we use that as the default.
|
|
|
|
|
module::set_var("gallery", "movie_extract_frame_time", 3);
|
|
|
|
|
module::set_version("gallery", $version = 53);
|
|
|
|
|
}
|
2013-01-26 08:38:31 +01:00
|
|
|
|
|
|
|
|
if ($version == 53) {
|
|
|
|
|
// In v54, we changed how we check for name and slug conflicts in Item_Model. Previously,
|
|
|
|
|
// we checked the whole filename. As a result, "foo.jpg" and "foo.png" were not considered
|
|
|
|
|
// conflicting if their slugs were different (a rare case in practice since server_add and
|
|
|
|
|
// uploader would give them both the same slug "foo"). Now, we check the filename without its
|
|
|
|
|
// extension. This upgrade stanza fixes any conflicts where they were previously allowed.
|
|
|
|
|
|
|
|
|
|
// This might be slow, but if it times out it can just pick up where it left off.
|
|
|
|
|
|
|
|
|
|
// Find and loop through each conflict (e.g. "foo.jpg", "foo.png", and "foo.flv" are one
|
|
|
|
|
// conflict; "bar.jpg", "bar.png", and "bar.flv" are another)
|
|
|
|
|
foreach (db::build()
|
|
|
|
|
->select_distinct(array("parent_base_name" =>
|
|
|
|
|
db::expr("CONCAT(`parent_id`, ':', LOWER(SUBSTR(`name`, 1, LOCATE('.', `name`) - 1)))")))
|
|
|
|
|
->select(array("C" => "COUNT(\"*\")"))
|
|
|
|
|
->from("items")
|
|
|
|
|
->where("type", "<>", "album")
|
|
|
|
|
->having("C", ">", 1)
|
|
|
|
|
->group_by("parent_base_name")
|
|
|
|
|
->execute() as $conflict) {
|
|
|
|
|
list ($parent_id, $base_name) = explode(":", $conflict->parent_base_name, 2);
|
|
|
|
|
$base_name_escaped = Database::escape_for_like($base_name);
|
|
|
|
|
// Loop through the items for each conflict
|
|
|
|
|
foreach (db::build()
|
|
|
|
|
->from("items")
|
|
|
|
|
->select("id")
|
|
|
|
|
->where("type", "<>", "album")
|
|
|
|
|
->where("parent_id", "=", $parent_id)
|
|
|
|
|
->where("name", "LIKE", "{$base_name_escaped}.%")
|
|
|
|
|
->limit(1000000) // required to satisfy SQL syntax (no offset without limit)
|
|
|
|
|
->offset(1) // skips the 0th item
|
|
|
|
|
->execute() as $row) {
|
|
|
|
|
set_time_limit(30);
|
|
|
|
|
$item = ORM::factory("item", $row->id);
|
|
|
|
|
$item->name = $item->name; // this will force Item_Model to check for conflicts on save
|
|
|
|
|
$item->save();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
module::set_version("gallery", $version = 54);
|
|
|
|
|
}
|
2013-01-27 15:35:42 -05:00
|
|
|
|
|
|
|
|
if ($version == 54) {
|
|
|
|
|
$db->query("ALTER TABLE {items} ADD KEY `relative_path_cache` (`relative_path_cache`)");
|
|
|
|
|
module::set_version("gallery", $version = 55);
|
|
|
|
|
}
|
|
|
|
|
|
2013-02-12 00:30:30 +01:00
|
|
|
if ($version == 55) {
|
|
|
|
|
// In v56, we added the ability to change the default behavior regarding movie uploads. It
|
|
|
|
|
// can be set to "always", "never", or "autodetect" to match the previous behavior where they
|
|
|
|
|
// are allowed only if FFmpeg is found.
|
|
|
|
|
module::set_var("gallery", "movie_allow_uploads", "autodetect");
|
|
|
|
|
module::set_version("gallery", $version = 56);
|
|
|
|
|
}
|
2013-02-27 07:11:52 +01:00
|
|
|
|
|
|
|
|
if ($version == 56) {
|
|
|
|
|
// Cleanup possible instances where resize_dirty of albums or movies was set to 0. This is
|
|
|
|
|
// unlikely to have occurred, and doesn't currently matter much since albums and movies don't
|
|
|
|
|
// have resize images anyway. However, it may be useful to be consistent here going forward.
|
|
|
|
|
db::build()
|
|
|
|
|
->update("items")
|
|
|
|
|
->set("resize_dirty", 1)
|
|
|
|
|
->where("type", "<>", "photo")
|
|
|
|
|
->execute();
|
|
|
|
|
module::set_version("gallery", $version = 57);
|
|
|
|
|
}
|
2013-03-12 12:14:34 +01:00
|
|
|
|
|
|
|
|
if ($version == 57) {
|
|
|
|
|
// In v58 we changed the Item_Model validation code to disallow files or directories with
|
|
|
|
|
// backslashes in them, and we need to fix any existing items that have them. This is
|
|
|
|
|
// pretty unlikely, as having backslashes would have probably already caused other issues for
|
|
|
|
|
// users, but we should check anyway. This might be slow, but if it times out it can just
|
|
|
|
|
// pick up where it left off.
|
|
|
|
|
foreach (db::build()
|
|
|
|
|
->from("items")
|
|
|
|
|
->select("id")
|
|
|
|
|
->where(db::expr("`name` REGEXP '\\\\\\\\'"), "=", 1) // one \, 3x escaped
|
|
|
|
|
->order_by("id", "asc")
|
|
|
|
|
->execute() as $row) {
|
|
|
|
|
set_time_limit(30);
|
|
|
|
|
$item = ORM::factory("item", $row->id);
|
|
|
|
|
$item->name = str_replace("\\", "_", $item->name);
|
|
|
|
|
$item->save();
|
|
|
|
|
}
|
|
|
|
|
module::set_version("gallery", $version = 58);
|
|
|
|
|
}
|
2009-09-07 15:41:03 -07:00
|
|
|
}
|
2008-11-02 23:55:09 +00:00
|
|
|
|
2009-01-14 04:12:02 +00:00
|
|
|
static function uninstall() {
|
2008-11-02 23:55:09 +00:00
|
|
|
$db = Database::instance();
|
2009-03-18 03:36:18 +00:00
|
|
|
$db->query("DROP TABLE IF EXISTS {access_caches}");
|
|
|
|
|
$db->query("DROP TABLE IF EXISTS {access_intents}");
|
|
|
|
|
$db->query("DROP TABLE IF EXISTS {graphics_rules}");
|
2009-06-20 01:24:21 -07:00
|
|
|
$db->query("DROP TABLE IF EXISTS {incoming_translations}");
|
2010-02-07 08:45:10 -08:00
|
|
|
$db->query("DROP TABLE IF EXISTS {failed_auths}");
|
2009-03-18 03:36:18 +00:00
|
|
|
$db->query("DROP TABLE IF EXISTS {items}");
|
|
|
|
|
$db->query("DROP TABLE IF EXISTS {logs}");
|
|
|
|
|
$db->query("DROP TABLE IF EXISTS {modules}");
|
|
|
|
|
$db->query("DROP TABLE IF EXISTS {outgoing_translations}");
|
|
|
|
|
$db->query("DROP TABLE IF EXISTS {permissions}");
|
|
|
|
|
$db->query("DROP TABLE IF EXISTS {sessions}");
|
|
|
|
|
$db->query("DROP TABLE IF EXISTS {tasks}");
|
2009-06-20 01:24:21 -07:00
|
|
|
$db->query("DROP TABLE IF EXISTS {themes}");
|
2009-03-18 03:36:18 +00:00
|
|
|
$db->query("DROP TABLE IF EXISTS {vars}");
|
2009-06-27 23:30:02 -07:00
|
|
|
$db->query("DROP TABLE IF EXISTS {caches}");
|
2009-03-19 02:35:51 +00:00
|
|
|
foreach (array("albums", "resizes", "thumbs", "uploads",
|
|
|
|
|
"modules", "logs", "database.php") as $entry) {
|
|
|
|
|
system("/bin/rm -rf " . VARPATH . $entry);
|
2009-01-08 06:52:18 +00:00
|
|
|
}
|
2008-11-02 23:55:09 +00:00
|
|
|
}
|
2010-01-30 21:07:03 -08:00
|
|
|
|
|
|
|
|
static function _protect_directory($dir) {
|
|
|
|
|
$fp = @fopen("$dir/.htaccess", "w+");
|
|
|
|
|
fwrite($fp, "DirectoryIndex .htaccess\nSetHandler Gallery_Security_Do_Not_Remove\n" .
|
|
|
|
|
"Options None\n<IfModule mod_rewrite.c>\nRewriteEngine off\n</IfModule>\n" .
|
|
|
|
|
"Order allow,deny\nDeny from all\n");
|
|
|
|
|
fclose($fp);
|
|
|
|
|
}
|
2008-11-02 23:55:09 +00:00
|
|
|
}
|