static function upgrade($version) { if ($version == 1) { block_manager::add("site.sidebar", "image_block", "random_image"); module::set_version("image_block", 2); } }
static function install() { $db = Database::instance(); $db->query("CREATE TABLE IF NOT EXISTS {comments} (\n `author_id` int(9) default NULL,\n `created` int(9) NOT NULL,\n `guest_email` varchar(128) default NULL,\n `guest_name` varchar(128) default NULL,\n `guest_url` varchar(255) default NULL,\n `id` int(9) NOT NULL auto_increment,\n `item_id` int(9) NOT NULL,\n `server_http_accept_charset` varchar(64) default NULL,\n `server_http_accept_encoding` varchar(64) default NULL,\n `server_http_accept_language` varchar(64) default NULL,\n `server_http_accept` varchar(128) default NULL,\n `server_http_connection` varchar(64) default NULL,\n `server_http_host` varchar(64) default NULL,\n `server_http_referer` varchar(255) default NULL,\n `server_http_user_agent` varchar(128) default NULL,\n `server_query_string` varchar(64) default NULL,\n `server_remote_addr` varchar(32) default NULL,\n `server_remote_host` varchar(64) default NULL,\n `server_remote_port` varchar(16) default NULL,\n `state` varchar(15) default 'unpublished',\n `text` text,\n `updated` int(9) NOT NULL,\n PRIMARY KEY (`id`))\n DEFAULT CHARSET=utf8;"); block_manager::add("dashboard_center", "comment", "recent_comments"); module::set_var("comment", "spam_caught", 0); module::set_version("comment", 2); }
static function get_add_block_form() { $form = new Forge("admin/dashboard/add_block", "", "post", array("id" => "gAddDashboardBlockForm")); $group = $form->group("add_block")->label(t("Add Block")); $group->dropdown("id")->label(t("Available Blocks"))->options(block_manager::get_available()); $group->submit("center")->value(t("Add to center")); $group->submit("sidebar")->value(t("Add to sidebar")); return $form; }
private function _get_blocks() { $active_blocks = array(); $available_blocks = block_manager::get_available_site_blocks(); foreach (block_manager::get_active("site.sidebar") as $block) { $id = "{$block[0]}:{$block[1]}"; if (!empty($available_blocks[$id])) { $active_blocks[$id] = $available_blocks[$id]; unset($available_blocks[$id]); } } return array($available_blocks, $active_blocks); }
public function reorder() { access::verify_csrf(); $active_set = array(); foreach (array("dashboard_sidebar", "dashboard_center") as $location) { foreach (block_manager::get_active($location) as $id => $info) { $active_set[$id] = $info; } } foreach (array("dashboard_sidebar", "dashboard_center") as $location) { $new_blocks = array(); foreach (Input::instance()->get($location, array()) as $id) { $new_blocks[$id] = $active_set[$id]; } block_manager::set_active($location, $new_blocks); } }
static function install() { $db = Database::instance(); $db->query("CREATE TABLE {access_caches} (\n `id` int(9) NOT NULL auto_increment,\n `item_id` int(9),\n PRIMARY KEY (`id`))\n ENGINE=InnoDB DEFAULT CHARSET=utf8;"); $db->query("CREATE TABLE {access_intents} (\n `id` int(9) NOT NULL auto_increment,\n `item_id` int(9),\n PRIMARY KEY (`id`))\n ENGINE=InnoDB DEFAULT CHARSET=utf8;"); $db->query("CREATE TABLE {caches} (\n `id` int(9) NOT NULL auto_increment,\n `key` varchar(255) NOT NULL,\n `tags` varchar(255),\n `expiration` int(9) NOT NULL,\n `cache` longblob,\n PRIMARY KEY (`id`),\n KEY (`tags`))\n ENGINE=InnoDB DEFAULT CHARSET=utf8;"); $db->query("CREATE TABLE {graphics_rules} (\n `id` int(9) NOT NULL auto_increment,\n `active` BOOLEAN default 0,\n `args` varchar(255) default NULL,\n `module_name` varchar(64) NOT NULL,\n `operation` varchar(64) NOT NULL,\n `priority` int(9) NOT NULL,\n `target` varchar(32) NOT NULL,\n PRIMARY KEY (`id`))\n ENGINE=InnoDB DEFAULT CHARSET=utf8;"); $db->query("CREATE TABLE {incoming_translations} (\n `id` int(9) NOT NULL auto_increment,\n `key` char(32) NOT NULL,\n `locale` char(10) NOT NULL,\n `message` text NOT NULL,\n `revision` int(9) DEFAULT NULL,\n `translation` text,\n PRIMARY KEY (`id`),\n UNIQUE KEY(`key`, `locale`),\n KEY `locale_key` (`locale`, `key`))\n ENGINE=InnoDB DEFAULT CHARSET=utf8;"); $db->query("CREATE TABLE {items} (\n `id` int(9) NOT NULL auto_increment,\n `album_cover_item_id` int(9) default NULL,\n `captured` int(9) default NULL,\n `created` int(9) default NULL,\n `description` varchar(2048) default NULL,\n `height` int(9) default NULL,\n `left` int(9) NOT NULL,\n `level` int(9) NOT NULL,\n `mime_type` varchar(64) default NULL,\n `name` varchar(255) default NULL,\n `owner_id` int(9) default NULL,\n `parent_id` int(9) NOT NULL,\n `rand_key` float default NULL,\n `relative_path_cache` varchar(255) default NULL,\n `resize_dirty` boolean default 1,\n `resize_height` int(9) default NULL,\n `resize_width` int(9) default NULL,\n `right` int(9) NOT NULL,\n `sort_column` varchar(64) default NULL,\n `sort_order` char(4) default 'ASC',\n `thumb_dirty` boolean default 1,\n `thumb_height` int(9) default NULL,\n `thumb_width` int(9) default NULL,\n `title` varchar(255) default NULL,\n `type` varchar(32) NOT NULL,\n `updated` int(9) default NULL,\n `view_count` int(9) default 0,\n `weight` int(9) NOT NULL default 0,\n `width` int(9) default NULL,\n PRIMARY KEY (`id`),\n KEY `parent_id` (`parent_id`),\n KEY `type` (`type`),\n KEY `random` (`rand_key`))\n ENGINE=InnoDB DEFAULT CHARSET=utf8;"); $db->query("CREATE TABLE {logs} (\n `id` int(9) NOT NULL auto_increment,\n `category` varchar(64) default NULL,\n `html` varchar(255) default NULL,\n `message` text default NULL,\n `referer` varchar(255) default NULL,\n `severity` int(9) default 0,\n `timestamp` int(9) default 0,\n `url` varchar(255) default NULL,\n `user_id` int(9) default 0,\n PRIMARY KEY (`id`))\n ENGINE=InnoDB DEFAULT CHARSET=utf8;"); $db->query("CREATE TABLE {messages} (\n `id` int(9) NOT NULL auto_increment,\n `key` varchar(255) default NULL,\n `severity` varchar(32) default NULL,\n `value` varchar(255) default NULL,\n PRIMARY KEY (`id`),\n UNIQUE KEY(`key`))\n ENGINE=InnoDB DEFAULT CHARSET=utf8;"); $db->query("CREATE TABLE {modules} (\n `id` int(9) NOT NULL auto_increment,\n `active` BOOLEAN default 0,\n `name` varchar(64) default NULL,\n `version` int(9) default NULL,\n PRIMARY KEY (`id`),\n UNIQUE KEY(`name`))\n ENGINE=InnoDB DEFAULT CHARSET=utf8;"); $db->query("CREATE TABLE {outgoing_translations} (\n `id` int(9) NOT NULL auto_increment,\n `base_revision` int(9) DEFAULT NULL,\n `key` char(32) NOT NULL,\n `locale` char(10) NOT NULL,\n `message` text NOT NULL,\n `translation` text,\n PRIMARY KEY (`id`),\n UNIQUE KEY(`key`, `locale`),\n KEY `locale_key` (`locale`, `key`))\n ENGINE=InnoDB DEFAULT CHARSET=utf8;"); $db->query("CREATE TABLE {permissions} (\n `id` int(9) NOT NULL auto_increment,\n `display_name` varchar(64) default NULL,\n `name` varchar(64) default NULL,\n PRIMARY KEY (`id`),\n UNIQUE KEY(`name`))\n ENGINE=InnoDB DEFAULT CHARSET=utf8;"); $db->query("CREATE TABLE {sessions} (\n `session_id` varchar(127) NOT NULL,\n `data` text NOT NULL,\n `last_activity` int(10) UNSIGNED NOT NULL,\n PRIMARY KEY (`session_id`))\n ENGINE=InnoDB DEFAULT CHARSET=utf8;"); $db->query("CREATE TABLE {tasks} (\n `id` int(9) NOT NULL auto_increment,\n `callback` varchar(128) default NULL,\n `context` text NOT NULL,\n `done` boolean default 0,\n `name` varchar(128) default NULL,\n `owner_id` int(9) default NULL,\n `percent_complete` int(9) default 0,\n `state` varchar(32) default NULL,\n `status` varchar(255) default NULL,\n `updated` int(9) default NULL,\n PRIMARY KEY (`id`),\n KEY (`owner_id`))\n ENGINE=InnoDB DEFAULT CHARSET=utf8;"); $db->query("CREATE TABLE {themes} (\n `id` int(9) NOT NULL auto_increment,\n `name` varchar(64) default NULL,\n `version` int(9) default NULL,\n PRIMARY KEY (`id`),\n UNIQUE KEY(`name`))\n ENGINE=InnoDB DEFAULT CHARSET=utf8;"); $db->query("CREATE TABLE {vars} (\n `id` int(9) NOT NULL auto_increment,\n `module_name` varchar(64) NOT NULL,\n `name` varchar(64) NOT NULL,\n `value` text,\n PRIMARY KEY (`id`),\n UNIQUE KEY(`module_name`, `name`))\n ENGINE=InnoDB DEFAULT CHARSET=utf8;"); foreach (array("albums", "logs", "modules", "resizes", "thumbs", "tmp", "uploads") as $dir) { @mkdir(VARPATH . $dir); } access::register_permission("view", "View"); access::register_permission("view_full", "View Full Size"); access::register_permission("edit", "Edit"); access::register_permission("add", "Add"); $root = ORM::factory("item"); $root->type = "album"; $root->title = "Gallery"; $root->description = ""; $root->left = 1; $root->right = 2; $root->parent_id = 0; $root->level = 1; $root->thumb_dirty = 1; $root->resize_dirty = 1; $root->sort_column = "weight"; $root->sort_order = "ASC"; $root->save(); access::add_item($root); module::set_var("gallery", "active_site_theme", "default"); module::set_var("gallery", "active_admin_theme", "admin_default"); module::set_var("gallery", "page_size", 9); module::set_var("gallery", "thumb_size", 200); module::set_var("gallery", "resize_size", 640); module::set_var("gallery", "default_locale", "en_US"); module::set_var("gallery", "image_quality", 75); // Add rules for generating our thumbnails and resizes graphics::add_rule("gallery", "thumb", "resize", array("width" => 200, "height" => 200, "master" => Image::AUTO), 100); graphics::add_rule("gallery", "resize", "resize", array("width" => 640, "height" => 480, "master" => Image::AUTO), 100); // Instantiate default themes (site and admin) foreach (array("default", "admin_default") as $theme_name) { $theme_info = new ArrayObject(parse_ini_file(THEMEPATH . $theme_name . "/theme.info"), ArrayObject::ARRAY_AS_PROPS); $theme = ORM::factory("theme"); $theme->name = $theme_name; $theme->version = $theme_info->version; $theme->save(); } 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"); block_manager::add("dashboard_center", "gallery", "photo_stream"); block_manager::add("dashboard_center", "gallery", "log_entries"); 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"); module::set_var("gallery", "show_credits", 1); // @todo this string needs to be picked up by l10n_scanner module::set_var("gallery", "credits", "Powered by <a href=\"%url\">Gallery %version</a>"); module::set_version("gallery", 7); }
/** * Inform a block_manager about the block regions this theme wants on this * type of page. * @param string $generaltype the general type of the page. * @param block_manager $blockmanager the block_manger to set up. * @return void */ public function setup_blocks($generaltype, $blockmanager) { // Legacy fallback. if (empty($this->layouts)) { if (!in_array($generaltype, array('form', 'popup', 'maintenance'))) { $blockmanager->add_regions(array(BLOCK_POS_LEFT, BLOCK_POS_RIGHT)); $blockmanager->set_default_region(BLOCK_POS_RIGHT); } return; } $layoutinfo = $this->layout_info_for_page($generaltype); if (!empty($layoutinfo['regions'])) { $blockmanager->add_regions($layoutinfo['regions']); $blockmanager->set_default_region($layoutinfo['defaultregion']); } }
public function test_create_all_block_instances() { global $CFG, $PAGE, $DB; $this->resetAfterTest(); $regionname = 'side-pre'; $context = context_system::instance(); $PAGE->reset_theme_and_output(); $CFG->theme = 'boost'; list($page, $blockmanager) = $this->get_a_page_and_block_manager(array($regionname), $context, 'page-type'); $blockmanager->load_blocks(); $blockmanager->create_all_block_instances(); $blocks = $blockmanager->get_blocks_for_region($regionname); $this->assertEmpty($blocks); // There should be no blocks in the DB. $PAGE->reset_theme_and_output(); // Change to a theme with undeletable blocks. $CFG->theme = 'clean'; list($page, $blockmanager) = $this->get_a_page_and_block_manager(array($regionname), $context, 'page-type'); $blockmanager->show_only_fake_blocks(true); $blockmanager->load_blocks(); $blockmanager->create_all_block_instances(); $blocks = $blockmanager->get_blocks_for_region($regionname); $this->assertEmpty($blocks); $PAGE->reset_theme_and_output(); list($page, $blockmanager) = $this->get_a_page_and_block_manager(array($regionname), $context, 'page-type'); $blockmanager->show_only_fake_blocks(false); $blockmanager->load_blocks(); $blockmanager->create_all_block_instances(); $blocks = $blockmanager->get_blocks_for_region($regionname); $this->assertCount(2, $blocks); $undeletable = block_manager::get_undeletable_block_types(); foreach ($undeletable as $blockname) { $instance = $DB->get_record('block_instances', array('blockname' => $blockname)); $this->assertEquals(1, $instance->requiredbytheme); } // Switch back and those auto blocks should not be returned. $PAGE->reset_theme_and_output(); $CFG->theme = 'boost'; list($page, $blockmanager) = $this->get_a_page_and_block_manager(array($regionname), $context, 'page-type'); $blockmanager->load_blocks(); $blockmanager->create_all_block_instances(); $blocks = $blockmanager->get_blocks_for_region($regionname); $this->assertEmpty($blocks); // But they should exist in the DB. foreach ($undeletable as $blockname) { $count = $DB->count_records('block_instances', array('blockname' => $blockname)); $this->assertEquals(1, $count); } }
static function install() { $db = Database::instance(); $version = 0; try { $version = module::get_version("core"); } catch (Exception $e) { if ($e->getCode() != E_DATABASE_ERROR) { Kohana::log("error", $e); throw $e; } } if ($version == 0) { $db->query("CREATE TABLE `access_caches` (\n `id` int(9) NOT NULL auto_increment,\n `item_id` int(9),\n PRIMARY KEY (`id`))\n ENGINE=InnoDB DEFAULT CHARSET=utf8;"); $db->query("CREATE TABLE `access_intents` (\n `id` int(9) NOT NULL auto_increment,\n `item_id` int(9),\n PRIMARY KEY (`id`))\n ENGINE=InnoDB DEFAULT CHARSET=utf8;"); $db->query("CREATE TABLE `graphics_rules` (\n `id` int(9) NOT NULL auto_increment,\n `priority` int(9) NOT NULL,\n `module_name` varchar(64) NOT NULL,\n `target` varchar(32) NOT NULL,\n `operation` varchar(64) NOT NULL,\n `args` varchar(255) default NULL,\n PRIMARY KEY (`id`))\n ENGINE=InnoDB DEFAULT CHARSET=utf8;"); $db->query("CREATE TABLE `items` (\n `album_cover_item_id` int(9) default NULL,\n `created` int(9) default NULL,\n `description` varchar(255) default NULL,\n `height` int(9) default NULL,\n `id` int(9) NOT NULL auto_increment,\n `left` int(9) NOT NULL,\n `level` int(9) NOT NULL,\n `mime_type` varchar(64) default NULL,\n `name` varchar(255) default NULL,\n `owner_id` int(9) default NULL,\n `parent_id` int(9) NOT NULL,\n `resize_height` int(9) default NULL,\n `resize_width` int(9) default NULL,\n `resize_dirty` boolean default 1,\n `right` int(9) NOT NULL,\n `thumb_height` int(9) default NULL,\n `thumb_width` int(9) default NULL,\n `thumb_dirty` boolean default 1,\n `title` varchar(255) default NULL,\n `type` varchar(32) NOT NULL,\n `updated` int(9) default NULL,\n `view_count` int(9) default 0,\n `width` int(9) default NULL,\n PRIMARY KEY (`id`),\n KEY `parent_id` (`parent_id`),\n KEY `type` (`type`))\n ENGINE=InnoDB DEFAULT CHARSET=utf8;"); $db->query("CREATE TABLE `logs` (\n `id` int(9) NOT NULL auto_increment,\n `category` varchar(64) default NULL,\n `html` varchar(255) default NULL,\n `message` text default NULL,\n `referer` varchar(255) default NULL,\n `severity` int(9) default 0,\n `timestamp` int(9) default 0,\n `url` varchar(255) default NULL,\n `user_id` int(9) default 0,\n PRIMARY KEY (`id`))\n ENGINE=InnoDB DEFAULT CHARSET=utf8;"); $db->query("CREATE TABLE `messages` (\n `id` int(9) NOT NULL auto_increment,\n `key` varchar(255) default NULL,\n `value` varchar(255) default NULL,\n `severity` varchar(32) default NULL,\n PRIMARY KEY (`id`),\n UNIQUE KEY(`key`))\n ENGINE=InnoDB DEFAULT CHARSET=utf8;"); $db->query("CREATE TABLE `modules` (\n `id` int(9) NOT NULL auto_increment,\n `name` varchar(64) default NULL,\n `version` int(9) default NULL,\n PRIMARY KEY (`id`),\n UNIQUE KEY(`name`))\n ENGINE=InnoDB DEFAULT CHARSET=utf8;"); $db->query("CREATE TABLE `themes` (\n `id` int(9) NOT NULL auto_increment,\n `name` varchar(64) default NULL,\n `version` int(9) default NULL,\n PRIMARY KEY (`id`),\n UNIQUE KEY(`name`))\n ENGINE=InnoDB DEFAULT CHARSET=utf8;"); $db->query("CREATE TABLE `permissions` (\n `id` int(9) NOT NULL auto_increment,\n `name` varchar(64) default NULL,\n `display_name` varchar(64) default NULL,\n PRIMARY KEY (`id`),\n UNIQUE KEY(`name`))\n ENGINE=InnoDB DEFAULT CHARSET=utf8;"); $db->query("CREATE TABLE `incoming_translations` (\n `id` int(9) NOT NULL auto_increment,\n `key` binary(16) NOT NULL,\n `locale` char(10) NOT NULL,\n `message` text NOT NULL,\n `translation` text,\n `revision` int(9) DEFAULT NULL,\n PRIMARY KEY (`id`),\n UNIQUE KEY(`key`, `locale`),\n KEY `locale_key` (`locale`, `key`))\n ENGINE=InnoDB DEFAULT CHARSET=utf8;"); $db->query("CREATE TABLE `sessions` (\n `session_id` varchar(127) NOT NULL,\n `last_activity` int(10) UNSIGNED NOT NULL,\n `data` text NOT NULL,\n PRIMARY KEY (`session_id`))\n ENGINE=InnoDB DEFAULT CHARSET=utf8;"); $db->query("CREATE TABLE `tasks` (\n `callback` varchar(128) default NULL,\n `context` text NOT NULL,\n `done` boolean default 0,\n `id` int(9) NOT NULL auto_increment,\n `updated` int(9) default NULL,\n `name` varchar(128) default NULL,\n `percent_complete` int(9) default 0,\n `state` varchar(32) default NULL,\n `status` varchar(255) default NULL,\n PRIMARY KEY (`id`))\n ENGINE=InnoDB DEFAULT CHARSET=utf8;"); $db->query("CREATE TABLE `vars` (\n `id` int(9) NOT NULL auto_increment,\n `module_name` varchar(64) NOT NULL,\n `name` varchar(64) NOT NULL,\n `value` text,\n PRIMARY KEY (`id`),\n UNIQUE KEY(`module_name`, `name`))\n ENGINE=InnoDB DEFAULT CHARSET=utf8;"); foreach (array("albums", "resizes", "thumbs", "uploads", "modules") as $dir) { @mkdir(VARPATH . $dir); } access::register_permission("view", "View"); access::register_permission("view_full", "View Full Size"); access::register_permission("edit", "Edit"); $root = ORM::factory("item"); $root->type = 'album'; $root->title = "Gallery"; $root->description = "Welcome to your Gallery3"; $root->left = 1; $root->right = 2; $root->parent_id = 0; $root->level = 1; $root->thumb_dirty = 1; $root->resize_dirty = 1; $root->save(); access::add_item($root); module::set_var("core", "active_site_theme", "default"); module::set_var("core", "active_admin_theme", "admin_default"); module::set_var("core", "page_size", 9); module::set_var("core", "thumb_size", 200); module::set_var("core", "resize_size", 640); // Add rules for generating our thumbnails and resizes graphics::add_rule("core", "thumb", "resize", array("width" => 200, "height" => 200, "master" => Image::AUTO), 100); graphics::add_rule("core", "resize", "resize", array("width" => 640, "height" => 480, "master" => Image::AUTO), 100); // Detect a graphics toolkit $toolkits = graphics::detect_toolkits(); foreach (array("imagemagick", "graphicsmagick", "gd") as $tk) { if ($toolkits[$tk]) { module::set_var("core", "graphics_toolkit", $tk); if ($tk != "gd") { module::set_var("core", "graphics_toolkit_path", $toolkits[$tk]); } break; } } if (!module::get_var("core", "graphics_toolkit")) { site_status::warning(t("Graphics toolkit missing! Please <a href=\"%url\">choose a toolkit</a>", array("url" => url::site("admin/graphics"))), "missing_graphics_toolkit"); } // Instantiate default themes (site and admin) foreach (array("default", "admin_default") as $theme_name) { $theme_info = new ArrayObject(parse_ini_file(THEMEPATH . $theme_name . "/theme.info"), ArrayObject::ARRAY_AS_PROPS); $theme = ORM::factory("theme"); $theme->name = $theme_name; $theme->version = $theme_info->version; $theme->save(); } block_manager::add("dashboard_sidebar", "core", "block_adder"); block_manager::add("dashboard_sidebar", "core", "stats"); block_manager::add("dashboard_sidebar", "core", "platform_info"); block_manager::add("dashboard_sidebar", "core", "project_news"); block_manager::add("dashboard_center", "core", "welcome"); block_manager::add("dashboard_center", "core", "photo_stream"); block_manager::add("dashboard_center", "core", "log_entries"); module::set_version("core", 1); module::set_var("core", "version", "3.0"); } }
static function upgrade($version) { $db = Database::instance(); if ($version == 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"); module::set_version("gallery", $version = 2); } if ($version == 2) { module::set_var("gallery", "show_credits", 1); module::set_version("gallery", $version = 3); } if ($version == 3) { $db->query("CREATE TABLE {caches} (\n `id` varchar(255) NOT NULL,\n `tags` varchar(255),\n `expiration` int(9) NOT NULL,\n `cache` text,\n PRIMARY KEY (`id`),\n KEY (`tags`))\n DEFAULT CHARSET=utf8;"); module::set_version("gallery", $version = 4); } if ($version == 4) { Cache::instance()->delete_all(); $db->query("ALTER TABLE {caches} MODIFY COLUMN `cache` LONGBLOB"); module::set_version("gallery", $version = 5); } 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); } if ($version == 6) { module::clear_var("gallery", "version"); module::set_version("gallery", $version = 7); } if ($version == 7) { $groups = identity::groups(); $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); } 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); } if ($version == 9) { $db->query("ALTER TABLE {items} ADD KEY `weight` (`weight` DESC);"); module::set_version("gallery", $version = 10); } if ($version == 10) { module::set_var("gallery", "image_sharpen", 15); module::set_version("gallery", $version = 11); } 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`"); // Flush all path caches because we're going to start urlencoding them. $db->query("UPDATE {items} SET `relative_url_cache` = NULL, `relative_path_cache` = NULL"); module::set_version("gallery", $version = 12); } 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); } if ($version == 13) { // Add rules for generating our thumbnails and resizes Database::instance()->query("UPDATE {graphics_rules} SET `operation` = CONCAT('gallery_graphics::', `operation`);"); module::set_version("gallery", $version = 14); } if ($version == 14) { $sidebar_blocks = block_manager::get_active("site_sidebar"); if (empty($sidebar_blocks)) { $available_blocks = block_manager::get_available_site_blocks(); foreach (array_keys(block_manager::get_available_site_blocks()) as $id) { $sidebar_blocks[] = explode(":", $id); } block_manager::set_active("site_sidebar", $sidebar_blocks); } module::set_version("gallery", $version = 15); } if ($version == 15) { module::set_var("gallery", "identity_provider", "user"); module::set_version("gallery", $version = 16); } // Convert block keys to an md5 hash of the module and block name if ($version == 16) { 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); } module::set_version("gallery", $version = 17); } // We didn't like md5 hashes so convert block keys back to random keys to allow duplicates. if ($version == 17) { 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[random::int()] = $block; } block_manager::set_active($location, $new_blocks); } module::set_version("gallery", $version = 18); } // Rename blocks_site.sidebar to blocks_site_sidebar if ($version == 18) { $blocks = block_manager::get_active("site.sidebar"); block_manager::set_active("site_sidebar", $blocks); module::clear_var("gallery", "blocks_site.sidebar"); module::set_version("gallery", $version = 19); } // 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); } // Update the graphics rules table so that the maximum height for resizes is 640 not 480. // Fixes ticket #671 if ($version == 21) { $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); } // 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")->where(db::expr("`slug` REGEXP '[^_A-Za-z0-9-]'"), "=", 1)->execute() as $row) { $new_slug = item::convert_filename_to_slug($row->slug); if (empty($new_slug)) { $new_slug = random::int(); } db::build()->update("items")->set("slug", $new_slug)->set("relative_url_cache", null)->where("id", "=", $row->id)->execute(); } module::set_version("gallery", $version = 23); } if ($version == 23) { $db->query("CREATE TABLE {failed_logins} (\n `id` int(9) NOT NULL auto_increment,\n `count` int(9) NOT NULL,\n `name` varchar(255) NOT NULL,\n `time` int(9) NOT NULL,\n PRIMARY KEY (`id`))\n DEFAULT CHARSET=utf8;"); module::set_version("gallery", $version = 24); } if ($version == 24) { foreach (array("logs", "tmp", "uploads") as $dir) { self::_protect_directory(VARPATH . $dir); } module::set_version("gallery", $version = 25); } if ($version == 25) { db::build()->update("items")->set("title", db::expr("`name`"))->and_open()->where("title", "IS", null)->or_where("title", "=", "")->close()->execute(); module::set_version("gallery", $version = 26); } if ($version == 26) { if (in_array("failed_logins", Database::instance()->list_tables())) { $db->query("RENAME TABLE {failed_logins} TO {failed_auths}"); } module::set_version("gallery", $version = 27); } if ($version == 27) { // Set the admin area timeout to 90 minutes module::set_var("gallery", "admin_area_timeout", 90 * 60); module::set_version("gallery", $version = 28); } if ($version == 28) { module::set_var("gallery", "credits", "Powered by <a href=\"%url\">%gallery_version</a>"); module::set_version("gallery", $version = 29); } if ($version == 29) { $db->query("ALTER TABLE {caches} ADD KEY (`key`);"); module::set_version("gallery", $version = 30); } if ($version == 30) { module::set_var("gallery", "maintenance_mode", 0); module::set_version("gallery", $version = 31); } if ($version == 31) { $db->query("ALTER TABLE {modules} ADD COLUMN `weight` int(9) DEFAULT NULL"); $db->query("ALTER TABLE {modules} ADD KEY (`weight`)"); db::update("modules")->set("weight", db::expr("`id`"))->execute(); module::set_version("gallery", $version = 32); } if ($version == 32) { $db->query("ALTER TABLE {items} ADD KEY (`left_ptr`)"); module::set_version("gallery", $version = 33); } if ($version == 33) { $db->query("ALTER TABLE {access_caches} ADD KEY (`item_id`)"); module::set_version("gallery", $version = 34); } if ($version == 34) { module::set_var("gallery", "visible_title_length", 15); module::set_version("gallery", $version = 35); } if ($version == 35) { module::set_var("gallery", "favicon_url", "lib/images/favicon.ico"); module::set_version("gallery", $version = 36); } if ($version == 36) { module::set_var("gallery", "email_from", "*****@*****.**"); module::set_var("gallery", "email_reply_to", "*****@*****.**"); module::set_var("gallery", "email_line_length", 70); module::set_var("gallery", "email_header_separator", serialize("\n")); module::set_version("gallery", $version = 37); } // 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 == "*****@*****.**") { module::set_var("gallery", "email_from", ""); } $email = module::get_var("gallery", "email_reply_to", ""); if ($email == "*****@*****.**") { module::set_var("gallery", "email_reply_to", ""); } module::set_version("gallery", $version = 38); } if ($version == 38) { module::set_var("gallery", "show_user_profiles_to", "registered_users"); module::set_version("gallery", $version = 39); } if ($version == 39) { module::set_var("gallery", "extra_binary_paths", "/usr/local/bin:/opt/local/bin:/opt/bin"); module::set_version("gallery", $version = 40); } if ($version == 40) { module::clear_var("gallery", "_cache"); module::set_version("gallery", $version = 41); } if ($version == 41) { $db->query("TRUNCATE TABLE {caches}"); $db->query("ALTER TABLE {caches} DROP INDEX `key`, ADD UNIQUE `key` (`key`)"); module::set_version("gallery", $version = 42); } if ($version == 42) { $db->query("ALTER TABLE {items} CHANGE `description` `description` text DEFAULT NULL"); module::set_version("gallery", $version = 43); } if ($version == 43) { $db->query("ALTER TABLE {items} CHANGE `rand_key` `rand_key` DECIMAL(11, 10)"); module::set_version("gallery", $version = 44); } if ($version == 44) { $db->query("ALTER TABLE {messages} CHANGE `value` `value` text default NULL"); module::set_version("gallery", $version = 45); } 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); } if ($version == 46) { module::set_var("gallery", "apple_touch_icon_url", "lib/images/apple-touch-icon.png"); module::set_version("gallery", $version = 47); } if ($version == 47 || $version == 48) { // Add configuration variable to set timezone. Defaults to the currently // used timezone (from PHP configuration). Note that in v48 we were // 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); } 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); } if ($version == 50) { // In v51, we added a lock_timeout variable so that administrators could edit the time out // from 1 second to a higher variable if their system runs concurrent parallel uploads for // instance. module::set_var("gallery", "lock_timeout", 1); module::set_version("gallery", $version = 51); } if ($version == 51) { // In v52, we added functions to the legal_file helper that map photo and movie file // 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\$")->execute(); module::set_version("gallery", $version = 52); } 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); } 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)->offset(1)->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); } if ($version == 54) { $db->query("ALTER TABLE {items} ADD KEY `relative_path_cache` (`relative_path_cache`)"); module::set_version("gallery", $version = 55); } 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); } 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); } 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)->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); } }
add_to_config_log('block_visibility', $block->visible, '1', $block->name); core_plugin_manager::reset_caches(); admin_get_root(true, false); // settings not required - only pages } if (!empty($protect) && confirm_sesskey()) { block_manager::protect_block((int) $protect); admin_get_root(true, false); // settings not required - only pages } if (!empty($unprotect) && confirm_sesskey()) { block_manager::unprotect_block((int) $unprotect); admin_get_root(true, false); // settings not required - only pages } $undeletableblocktypes = block_manager::get_undeletable_block_types(); echo $OUTPUT->header(); echo $OUTPUT->heading($strmanageblocks); /// Main display starts here /// Get and sort the existing blocks if (!($blocks = $DB->get_records('block', array(), 'name ASC'))) { print_error('noblocks', 'error'); // Should never happen } $incompatible = array(); /// Print the table of all blocks $table = new flexible_table('admin-blocks-compatible'); $table->define_columns(array('name', 'instances', 'version', 'hideshow', 'undeletable', 'settings', 'uninstall')); $table->define_headers(array($strname, $strcourses, $strversion, $strhide . '/' . $strshow, $strprotecthdr, $strsettings, $struninstall)); $table->define_baseurl($CFG->wwwroot . '/' . $CFG->admin . '/blocks.php'); $table->set_attribute('class', 'admintable blockstable generaltable');
/** * Inform a block_manager about the block regions this theme wants on this * page layout. * * @param string $pagelayout the general type of the page. * @param block_manager $blockmanager the block_manger to set up. */ public function setup_blocks($pagelayout, $blockmanager) { $layoutinfo = $this->layout_info_for_page($pagelayout); if (!empty($layoutinfo['regions'])) { $blockmanager->add_regions($layoutinfo['regions'], false); $blockmanager->set_default_region($layoutinfo['defaultregion']); } }
static function upgrade($version) { $db = Database::instance(); if ($version == 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"); module::set_version("gallery", $version = 2); } if ($version == 2) { module::set_var("gallery", "show_credits", 1); module::set_version("gallery", $version = 3); } if ($version == 3) { $db->query("CREATE TABLE {caches} (\n `id` varchar(255) NOT NULL,\n `tags` varchar(255),\n `expiration` int(9) NOT NULL,\n `cache` text,\n PRIMARY KEY (`id`),\n KEY (`tags`))\n DEFAULT CHARSET=utf8;"); module::set_version("gallery", $version = 4); } if ($version == 4) { Cache::instance()->delete_all(); $db->query("ALTER TABLE {caches} MODIFY COLUMN `cache` LONGBLOB"); module::set_version("gallery", $version = 5); } 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); } if ($version == 6) { module::clear_var("gallery", "version"); module::set_version("gallery", $version = 7); } if ($version == 7) { $groups = ORM::factory("group")->find_all(); $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); } 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); } if ($version == 9) { $db->query("ALTER TABLE {items} ADD KEY `weight` (`weight` DESC);"); module::set_version("gallery", $version = 10); } if ($version == 10) { module::set_var("gallery", "image_sharpen", 15); module::set_version("gallery", $version = 11); } 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`"); // Flush all path caches becuase we're going to start urlencoding them. $db->query("UPDATE {items} SET `relative_url_cache` = NULL, `relative_path_cache` = NULL"); module::set_version("gallery", $version = 12); } 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); } if ($version == 13) { // Add rules for generating our thumbnails and resizes Database::instance()->query("UPDATE {graphics_rules} SET `operation` = CONCAT('gallery_graphics::', `operation`);"); module::set_version("gallery", $version = 14); } if ($version == 14) { $sidebar_blocks = block_manager::get_active("site.sidebar"); if (empty($sidebar_blocks)) { $available_blocks = block_manager::get_available_site_blocks(); foreach (array_keys(block_manager::get_available_site_blocks()) as $id) { $sidebar_blocks[] = explode(":", $id); } block_manager::set_active("site.sidebar", $sidebar_blocks); } module::set_version("gallery", $version = 15); } }
static function get_add_block_form() { $available_blocks = block_manager::get_available_admin_blocks(); $active = array(); foreach (array_merge(block_manager::get_active("dashboard_sidebar"), block_manager::get_active("dashboard_center")) as $b) { unset($available_blocks[implode(":", $b)]); } if (!$available_blocks) { return; } $form = new Forge("admin/dashboard/add_block", "", "post", array("id" => "g-add-dashboard-block-form")); $group = $form->group("add_block")->label(t("Add Block")); $group->dropdown("id")->label(t("Available blocks"))->options($available_blocks); $group->submit("center")->value(t("Add to center")); $group->submit("sidebar")->value(t("Add to sidebar")); return $form; }
<?php defined("SYSPATH") or die("No direct script access."); ?> <ul class="g-message-block"> <li class="g-warning"> <?php if (block_manager::get_active("site_sidebar")) { ?> <?php echo t("Active sidebar blocks have no content."); ?> <?php } else { ?> <?php echo t("No active sidebar blocks."); ?> <?php } ?> <a href="<?php echo url::site("admin/sidebar"); ?> "><?php echo t("configure blocks"); ?> </a> </li> </ul>
/** * Security function. eMail List has enable for one course? * * @uses $CFG, $USER, $DB * @param int $course Course Id. * @return boolean True if eMail List block has enabled, else return false. */ function email_is_enabled_email_list($courseid) { global $CFG, $USER, $DB, $PAGE; $blockman = new block_manager($PAGE); return $blockman->is_block_present('email_list'); /*if ( empty($courseid) ) { return false; } // Get block object if ($emaillist = $DB->get_record('block', array('name' => 'email_list')) ) { $params = array('pagetype' => PAGE_COURSE_VIEW, 'pageid' => $courseid, 'blockid' => $emaillist->id); // Block has enable in this course? $block = $DB->get_record_sql("SELECT * FROM {block_instances} WHERE pagetypepattern = :pagetype AND pageid = :pageid AND blockid = :blockid", $params); if (!empty($block)) { if ($block->visible) { return has_capability('moodle/block:view', get_context_instance(CONTEXT_BLOCK, $block->id)); } } else if ($DB->record_exists('block_pinned', array('blockid' => $emaillist->id, 'pagetype' => 'course-view'))) { return has_capability('moodle/block:view', get_context_instance(CONTEXT_SYSTEM)); } else if ($courseid == SITEID and !empty($CFG->mymoodleredirect)) { // Block has enable in this course? $params = array('pagetype' => 'my-index', 'pageid' => $USER->id, 'blockid' => $emaillist->id ); $block = $DB->get_record_sql("SELECT * FROM {block_instances} WHERE pagetypepattern = :pagetype AND pageid = :pageid AND blockid = :blockid", $params); if (!empty($block)) { if ($block->visible) { return has_capability('moodle/block:view', get_context_instance(CONTEXT_BLOCK, $block->id)); } } else if ($DB->record_exists('block_pinned', array('blockid' => $emaillist->id, 'pagetype' => 'my-index'))) { return has_capability('moodle/block:view', get_context_instance(CONTEXT_SYSTEM)); } } } return false;*/ }
public function matching_page_type_patterns($pagetype) { return parent::matching_page_type_patterns($pagetype); }
static function upgrade($version) { $db = Database::instance(); if ($version == 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"); module::set_version("gallery", $version = 2); } if ($version == 2) { module::set_var("gallery", "show_credits", 1); module::set_version("gallery", $version = 3); } if ($version == 3) { $db->query("CREATE TABLE {caches} (\n `id` varchar(255) NOT NULL,\n `tags` varchar(255),\n `expiration` int(9) NOT NULL,\n `cache` text,\n PRIMARY KEY (`id`),\n KEY (`tags`))\n DEFAULT CHARSET=utf8;"); module::set_version("gallery", $version = 4); } if ($version == 4) { Cache::instance()->delete_all(); $db->query("ALTER TABLE {caches} MODIFY COLUMN `cache` LONGBLOB"); module::set_version("gallery", $version = 5); } 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); } if ($version == 6) { module::clear_var("gallery", "version"); module::set_version("gallery", $version = 7); } if ($version == 7) { $groups = identity::groups(); $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); } 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); } if ($version == 9) { $db->query("ALTER TABLE {items} ADD KEY `weight` (`weight` DESC);"); module::set_version("gallery", $version = 10); } if ($version == 10) { module::set_var("gallery", "image_sharpen", 15); module::set_version("gallery", $version = 11); } 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`"); // Flush all path caches becuase we're going to start urlencoding them. $db->query("UPDATE {items} SET `relative_url_cache` = NULL, `relative_path_cache` = NULL"); module::set_version("gallery", $version = 12); } 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); } if ($version == 13) { // Add rules for generating our thumbnails and resizes Database::instance()->query("UPDATE {graphics_rules} SET `operation` = CONCAT('gallery_graphics::', `operation`);"); module::set_version("gallery", $version = 14); } if ($version == 14) { $sidebar_blocks = block_manager::get_active("site_sidebar"); if (empty($sidebar_blocks)) { $available_blocks = block_manager::get_available_site_blocks(); foreach (array_keys(block_manager::get_available_site_blocks()) as $id) { $sidebar_blocks[] = explode(":", $id); } block_manager::set_active("site_sidebar", $sidebar_blocks); } module::set_version("gallery", $version = 15); } if ($version == 15) { module::set_var("gallery", "identity_provider", "user"); module::set_version("gallery", $version = 16); } // Convert block keys to an md5 hash of the module and block name if ($version == 16) { 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); } module::set_version("gallery", $version = 17); } // We didn't like md5 hashes so convert block keys back to random keys to allow duplicates. if ($version == 17) { 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[random::int()] = $block; } block_manager::set_active($location, $new_blocks); } module::set_version("gallery", $version = 18); } // Rename blocks_site.sidebar to blocks_site_sidebar if ($version == 18) { $blocks = block_manager::get_active("site.sidebar"); block_manager::set_active("site_sidebar", $blocks); module::clear_var("gallery", "blocks_site.sidebar"); module::set_version("gallery", $version = 19); } // 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); } // Update the graphics rules table so that the maximum height for resizes is 640 not 480. // Fixes ticket #671 if ($version == 21) { $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); } // 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")->where(db::expr("`slug` REGEXP '[^_A-Za-z0-9-]'"), "=", 1)->execute() as $row) { $new_slug = item::convert_filename_to_slug($row->slug); if (empty($new_slug)) { $new_slug = random::int(); } db::build()->update("items")->set("slug", $new_slug)->set("relative_url_cache", null)->where("id", "=", $row->id)->execute(); } module::set_version("gallery", $version = 23); } if ($version == 23) { $db->query("CREATE TABLE {failed_logins} (\n `id` int(9) NOT NULL auto_increment,\n `count` int(9) NOT NULL,\n `name` varchar(255) NOT NULL,\n `time` int(9) NOT NULL,\n PRIMARY KEY (`id`))\n DEFAULT CHARSET=utf8;"); module::set_version("gallery", $version = 24); } if ($version == 24) { foreach (array("logs", "tmp", "uploads") as $dir) { self::_protect_directory(VARPATH . $dir); } module::set_version("gallery", $version = 25); } if ($version == 25) { db::build()->update("items")->set("title", db::expr("`name`"))->and_open()->where("title", "IS", null)->or_where("title", "=", "")->close()->execute(); module::set_version("gallery", $version = 26); } if ($version == 26) { if (in_array("failed_logins", Database::instance()->list_tables())) { $db->query("RENAME TABLE {failed_logins} TO {failed_auths}"); } module::set_version("gallery", $version = 27); } if ($version == 27) { // Set the admin area timeout to 90 minutes module::set_var("gallery", "admin_area_timeout", 90 * 60); module::set_version("gallery", $version = 28); } if ($version == 28) { module::set_var("gallery", "credits", "Powered by <a href=\"%url\">%gallery_version</a>"); module::set_version("gallery", $version = 29); } if ($version == 29) { $db->query("ALTER TABLE {caches} ADD KEY (`key`);"); module::set_version("gallery", $version = 30); } if ($version == 30) { module::set_var("gallery", "maintenance_mode", 0); module::set_version("gallery", $version = 31); } if ($version == 31) { $db->query("ALTER TABLE {modules} ADD COLUMN `weight` int(9) DEFAULT NULL"); $db->query("ALTER TABLE {modules} ADD KEY (`weight`)"); db::update("modules")->set("weight", db::expr("`id`"))->execute(); module::set_version("gallery", $version = 32); } if ($version == 32) { $db->query("ALTER TABLE {items} ADD KEY (`left_ptr`)"); module::set_version("gallery", $version = 33); } if ($version == 33) { $db->query("ALTER TABLE {access_caches} ADD KEY (`item_id`)"); module::set_version("gallery", $version = 34); } if ($version == 34) { module::set_var("gallery", "visible_title_length", 15); module::set_version("gallery", $version = 35); } if ($version == 35) { module::set_var("gallery", "favicon_url", "lib/images/favicon.ico"); module::set_version("gallery", $version = 36); } if ($version == 36) { module::set_var("gallery", "email_from", "*****@*****.**"); module::set_var("gallery", "email_reply_to", "*****@*****.**"); module::set_var("gallery", "email_line_length", 70); module::set_var("gallery", "email_header_separator", serialize("\n")); module::set_version("gallery", $version = 37); } // 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 == "*****@*****.**") { module::set_var("gallery", "email_from", ""); } $email = module::get_var("gallery", "email_reply_to", ""); if ($email == "*****@*****.**") { module::set_var("gallery", "email_reply_to", ""); } module::set_version("gallery", $version = 38); } if ($version == 38) { module::set_var("gallery", "show_user_profiles_to", "registered_users"); module::set_version("gallery", $version = 39); } if ($version == 39) { module::set_var("gallery", "extra_binary_paths", "/usr/local/bin:/opt/local/bin:/opt/bin"); module::set_version("gallery", $version = 40); } if ($version == 40) { module::clear_var("gallery", "_cache"); module::set_version("gallery", $version = 41); } if ($version == 41) { $db->query("TRUNCATE TABLE {caches}"); $db->query("ALTER TABLE {caches} DROP INDEX `key`, ADD UNIQUE `key` (`key`)"); module::set_version("gallery", $version = 42); } if ($version == 42) { $db->query("ALTER TABLE {items} CHANGE `description` `description` text DEFAULT NULL"); module::set_version("gallery", $version = 43); } if ($version == 43) { $db->query("ALTER TABLE {items} CHANGE `rand_key` `rand_key` DECIMAL(11, 10)"); module::set_version("gallery", $version = 44); } if ($version == 44) { $db->query("ALTER TABLE {messages} CHANGE `value` `value` text default NULL"); module::set_version("gallery", $version = 45); } 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); } }
static function upgrade($version) { $db = Database::instance(); if ($version == 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"); module::set_version("gallery", $version = 2); } if ($version == 2) { module::set_var("gallery", "show_credits", 1); module::set_version("gallery", $version = 3); } if ($version == 3) { $db->query("CREATE TABLE {caches} (\n `id` varchar(255) NOT NULL,\n `tags` varchar(255),\n `expiration` int(9) NOT NULL,\n `cache` text,\n PRIMARY KEY (`id`),\n KEY (`tags`))\n DEFAULT CHARSET=utf8;"); module::set_version("gallery", $version = 4); } if ($version == 4) { Cache::instance()->delete_all(); $db->query("ALTER TABLE {caches} MODIFY COLUMN `cache` LONGBLOB"); module::set_version("gallery", $version = 5); } 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); } if ($version == 6) { module::clear_var("gallery", "version"); module::set_version("gallery", $version = 7); } if ($version == 7) { $groups = identity::groups(); $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); } 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); } if ($version == 9) { $db->query("ALTER TABLE {items} ADD KEY `weight` (`weight` DESC);"); module::set_version("gallery", $version = 10); } if ($version == 10) { module::set_var("gallery", "image_sharpen", 15); module::set_version("gallery", $version = 11); } 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`"); // Flush all path caches becuase we're going to start urlencoding them. $db->query("UPDATE {items} SET `relative_url_cache` = NULL, `relative_path_cache` = NULL"); module::set_version("gallery", $version = 12); } 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); } if ($version == 13) { // Add rules for generating our thumbnails and resizes Database::instance()->query("UPDATE {graphics_rules} SET `operation` = CONCAT('gallery_graphics::', `operation`);"); module::set_version("gallery", $version = 14); } if ($version == 14) { $sidebar_blocks = block_manager::get_active("site_sidebar"); if (empty($sidebar_blocks)) { $available_blocks = block_manager::get_available_site_blocks(); foreach (array_keys(block_manager::get_available_site_blocks()) as $id) { $sidebar_blocks[] = explode(":", $id); } block_manager::set_active("site_sidebar", $sidebar_blocks); } module::set_version("gallery", $version = 15); } if ($version == 15) { module::set_var("gallery", "identity_provider", "user"); module::set_version("gallery", $version = 16); } // Convert block keys to an md5 hash of the module and block name if ($version == 16) { 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); } module::set_version("gallery", $version = 17); } // We didn't like md5 hashes so convert block keys back to random keys to allow duplicates. if ($version == 17) { 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[rand()] = $block; } block_manager::set_active($location, $new_blocks); } module::set_version("gallery", $version = 18); } // Rename blocks_site.sidebar to blocks_site_sidebar if ($version == 18) { $blocks = block_manager::get_active("site.sidebar"); block_manager::set_active("site_sidebar", $blocks); module::clear_var("gallery", "blocks_site.sidebar"); module::set_version("gallery", $version = 19); } // 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); } // Update the graphics rules table so that the maximum height for resizes is 640 not 480. // Fixes ticket #671 if ($version == 21) { $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); } // 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")->where(new Database_Expression("`slug` REGEXP '[^_A-Za-z0-9-]'"), "=", 1)->execute() as $row) { $new_slug = item::convert_filename_to_slug($row->slug); if (empty($new_slug)) { $new_slug = rand(); } db::build()->update("items")->set("slug", $new_slug)->set("relative_url_cache", null)->where("id", "=", $row->id)->execute(); } module::set_version("gallery", $version = 23); } if ($version == 23) { $db->query("CREATE TABLE {failed_logins} (\n `id` int(9) NOT NULL auto_increment,\n `count` int(9) NOT NULL,\n `name` varchar(255) NOT NULL,\n `time` int(9) NOT NULL,\n PRIMARY KEY (`id`))\n DEFAULT CHARSET=utf8;"); module::set_version("gallery", $version = 24); } if ($version == 24) { foreach (array("logs", "tmp", "uploads") as $dir) { self::_protect_directory(VARPATH . $dir); } module::set_version("gallery", $version = 25); } if ($version == 25) { db::build()->update("items")->set("title", new Database_Expression("`name`"))->and_open()->where("title", "IS", null)->or_where("title", "=", "")->close()->execute(); module::set_version("gallery", $version = 26); } if ($version == 26) { $db->query("RENAME TABLE {failed_logins} TO {failed_auths}"); module::set_version("gallery", $version = 27); } if ($version == 27) { // Set the admin area timeout to 90 minutes module::set_var("gallery", "admin_area_timeout", 90 * 60); module::set_version("gallery", $version = 28); } if ($version == 28) { module::set_var("gallery", "credits", "Powered by <a href=\"%url\">%gallery_version</a>"); module::set_version("gallery", $version = 29); } if ($version == 29) { $db->query("ALTER TABLE {caches} ADD KEY (`key`);"); module::set_version("gallery", $version = 30); } }
/** * Add the default system-context blocks. E.g. the admin tree. */ function blocks_add_default_system_blocks() { global $DB; $page = new moodle_page(); $page->set_context(context_system::instance()); $page->blocks->add_blocks(array(BLOCK_POS_LEFT => block_manager::get_undeletable_block_types()), '*', null, true); $page->blocks->add_blocks(array(BLOCK_POS_LEFT => array('admin_bookmarks')), 'admin-*', null, null, 2); if ($defaultmypage = $DB->get_record('my_pages', array('userid' => null, 'name' => '__default', 'private' => 1))) { $subpagepattern = $defaultmypage->id; } else { $subpagepattern = null; } $newblocks = array('private_files', 'online_users', 'badges', 'calendar_month', 'calendar_upcoming'); $newcontent = array('lp', 'course_overview'); $page->blocks->add_blocks(array(BLOCK_POS_RIGHT => $newblocks, 'content' => $newcontent), 'my-index', $subpagepattern); }
/** * Load blocks using the system context, rather than the user's context. * * This is needed because the My Moodle pages set the page context to the * user's context for access control, etc. But the blocks for the system * pages are stored in the system context. */ public function load_blocks($includeinvisible = null) { $origcontext = $this->page->context; $this->page->context = context_system::instance(); parent::load_blocks($includeinvisible); $this->page->context = $origcontext; }
static function get_html($location, $theme = null) { $active = block_manager::get_active($location); $result = ""; foreach ($active as $id => $desc) { if (class_exists("{$desc['0']}_block") && method_exists("{$desc['0']}_block", "get")) { $block = call_user_func(array("{$desc['0']}_block", "get"), $desc[1], $theme); if (!empty($block)) { $block->id = $id; $result .= $block; } } } return $result; }
public function test_create_all_block_instances() { global $CFG, $PAGE, $DB; $this->setAdminUser(); $this->resetAfterTest(); $regionname = 'side-pre'; $context = context_system::instance(); $PAGE->reset_theme_and_output(); $CFG->theme = 'boost'; list($page, $blockmanager) = $this->get_a_page_and_block_manager(array($regionname), $context, 'page-type'); $blockmanager->load_blocks(); $blockmanager->create_all_block_instances(); $blocks = $blockmanager->get_blocks_for_region($regionname); // Assert that we no auto created blocks in boost by default. $this->assertEmpty($blocks); // There should be no blocks in the DB. $PAGE->reset_theme_and_output(); // Change to a theme with undeletable blocks. $CFG->theme = 'clean'; list($page, $blockmanager) = $this->get_a_page_and_block_manager(array($regionname), $context, 'page-type'); $blockmanager->show_only_fake_blocks(true); $blockmanager->load_blocks(); $blockmanager->create_all_block_instances(); $blocks = $blockmanager->get_blocks_for_region($regionname); // Assert that we no auto created blocks when viewing a fake blocks only page. $this->assertEmpty($blocks); $PAGE->reset_theme_and_output(); list($page, $blockmanager) = $this->get_a_page_and_block_manager(array($regionname), $context, 'page-type'); $blockmanager->show_only_fake_blocks(false); $blockmanager->load_blocks(); $blockmanager->create_all_block_instances(); $blocks = $blockmanager->get_blocks_for_region($regionname); // Assert that we get the required block for this theme auto-created. $this->assertCount(2, $blocks); $PAGE->reset_theme_and_output(); list($page, $blockmanager) = $this->get_a_page_and_block_manager(array($regionname), $context, 'page-type'); $blockmanager->protect_block('html'); $blockmanager->load_blocks(); $blockmanager->create_all_block_instances(); $blocks = $blockmanager->get_blocks_for_region($regionname); // Assert that protecting a block does not make it auto-created. $this->assertCount(2, $blocks); $requiredbytheme = block_manager::get_required_by_theme_block_types(); foreach ($requiredbytheme as $blockname) { $instance = $DB->get_record('block_instances', array('blockname' => $blockname)); $this->assertEquals(1, $instance->requiredbytheme); } // Switch back and those auto blocks should not be returned. $PAGE->reset_theme_and_output(); $CFG->theme = 'boost'; list($page, $blockmanager) = $this->get_a_page_and_block_manager(array($regionname), $context, 'page-type'); $blockmanager->load_blocks(); $blockmanager->create_all_block_instances(); $blocks = $blockmanager->get_blocks_for_region($regionname); // Assert that we do not return requiredbytheme blocks when they are not required. $this->assertEmpty($blocks); // But they should exist in the DB. foreach ($requiredbytheme as $blockname) { $count = $DB->count_records('block_instances', array('blockname' => $blockname)); $this->assertEquals(1, $count); } }
/** * Load blocks using the system context, rather than the user's context. * * This is needed because the My Moodle pages set the page context to the * user's context for access control, etc. But the blocks for the system * pages are stored in the system context. */ public function load_blocks($includeinvisible = null) { $origcontext = $this->page->context; $this->page->context = get_context_instance(CONTEXT_SYSTEM); parent::load_blocks($includeinvisible); $this->page->context = $origcontext; }
/** * Deactivate an installed module. This will call <module>_installer::deactivate() which should * take any cleanup steps to make sure that the module isn't visible in any way. Note that the * module remains available in Kohana's cascading file system until the end of the request! * @param string $module_name */ static function deactivate($module_name) { $installer_class = "{$module_name}_installer"; if (class_exists($installer_class) && method_exists($installer_class, "deactivate")) { call_user_func_array(array($installer_class, "deactivate"), array()); } $module = module::get($module_name); if ($module->loaded()) { $module->active = false; $module->save(); } module::load_modules(); graphics::deactivate_rules($module_name); block_manager::deactivate_blocks($module_name); if (module::info($module_name)) { log::success("module", t("Deactivated module %module_name", array("module_name" => $module_name))); } else { log::success("module", t("Deactivated missing module %module_name", array("module_name" => $module_name))); } }
/** * Print out the sidebar. */ public function sidebar_blocks() { $sidebar = block_manager::get_html("site.sidebar", $this); if (empty($sidebar) && identity::active_user()->admin) { $sidebar = new View("no_sidebar.html"); } return $sidebar; }
static function upgrade($version) { $db = Database::instance(); if ($version == 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"); module::set_version("gallery", $version = 2); } if ($version == 2) { module::set_var("gallery", "show_credits", 1); module::set_version("gallery", $version = 3); } if ($version == 3) { $db->query("CREATE TABLE {caches} (\n `id` varchar(255) NOT NULL,\n `tags` varchar(255),\n `expiration` int(9) NOT NULL,\n `cache` text,\n PRIMARY KEY (`id`),\n KEY (`tags`))\n DEFAULT CHARSET=utf8;"); module::set_version("gallery", $version = 4); } if ($version == 4) { Cache::instance()->delete_all(); $db->query("ALTER TABLE {caches} MODIFY COLUMN `cache` LONGBLOB"); module::set_version("gallery", $version = 5); } 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); } if ($version == 6) { module::clear_var("gallery", "version"); module::set_version("gallery", $version = 7); } if ($version == 7) { $groups = identity::groups(); $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); } 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); } if ($version == 9) { $db->query("ALTER TABLE {items} ADD KEY `weight` (`weight` DESC);"); module::set_version("gallery", $version = 10); } if ($version == 10) { module::set_var("gallery", "image_sharpen", 15); module::set_version("gallery", $version = 11); } 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`"); // Flush all path caches becuase we're going to start urlencoding them. $db->query("UPDATE {items} SET `relative_url_cache` = NULL, `relative_path_cache` = NULL"); module::set_version("gallery", $version = 12); } 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); } if ($version == 13) { // Add rules for generating our thumbnails and resizes Database::instance()->query("UPDATE {graphics_rules} SET `operation` = CONCAT('gallery_graphics::', `operation`);"); module::set_version("gallery", $version = 14); } if ($version == 14) { $sidebar_blocks = block_manager::get_active("site_sidebar"); if (empty($sidebar_blocks)) { $available_blocks = block_manager::get_available_site_blocks(); foreach (array_keys(block_manager::get_available_site_blocks()) as $id) { $sidebar_blocks[] = explode(":", $id); } block_manager::set_active("site_sidebar", $sidebar_blocks); } module::set_version("gallery", $version = 15); } if ($version == 15) { module::set_var("gallery", "identity_provider", "user"); module::set_version("gallery", $version = 16); } // Convert block keys to an md5 hash of the module and block name if ($version == 16) { 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); } module::set_version("gallery", $version = 17); } // We didn't like md5 hashes so convert block keys back to random keys to allow duplicates. if ($version == 17) { 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[rand()] = $block; } block_manager::set_active($location, $new_blocks); } module::set_version("gallery", $version = 18); } // Rename blocks_site.sidebar to blocks_site_sidebar if ($version == 18) { $blocks = block_manager::get_active("site.sidebar"); block_manager::set_active("site_sidebar", $blocks); module::clear_var("gallery", "blocks_site.sidebar"); module::set_version("gallery", $version = 19); } // 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); } }
public function get_block_html($module) { $active = block_manager::get_active("site_sidebar"); $result = ""; foreach ($active as $id => $desc) { if ($desc[0] == $module and method_exists("{$desc['0']}_block", "get")) { $block = call_user_func(array("{$desc['0']}_block", "get"), $desc[1], $this); if (!empty($block)) { $block->id = $id; $block->css_id = $block->css_id . "-inline"; $result .= $block; } } } return $result; }