static function upgrade($version)
 {
     if ($version == 1) {
         block_manager::add("site.sidebar", "image_block", "random_image");
         module::set_version("image_block", 2);
     }
 }
Exemple #2
0
 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);
 }
Exemple #3
0
 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;
 }
Exemple #4
0
 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);
 }
Exemple #5
0
 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);
 }
Exemple #7
0
 /**
  * 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']);
     }
 }
Exemple #8
0
 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);
     }
 }
Exemple #11
0
    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']);
     }
 }
Exemple #13
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 = 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);
     }
 }
Exemple #14
0
 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;
 }
Exemple #15
0
<?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>
Exemple #16
0
/**
 * 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);
 }
Exemple #18
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 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);
     }
 }
Exemple #19
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 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);
     }
 }
Exemple #20
0
/**
 * 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);
}
Exemple #21
0
 /**
  * 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;
 }
Exemple #22
0
 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);
     }
 }
Exemple #24
0
 /**
  * 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;
 }
Exemple #25
0
 /**
  * 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)));
     }
 }
Exemple #26
0
 /**
  * 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;
 }
Exemple #27
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 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;
 }