diff options
-rw-r--r-- | installer/.gitignore | 2 | ||||
-rwxr-xr-x | installer/install.sql | 4 | ||||
-rwxr-xr-x | installer/package.php | 239 | ||||
-rw-r--r-- | modules/gallery/controllers/scaffold.php | 440 | ||||
-rw-r--r-- | modules/gallery/helpers/gallery_menu.php | 9 | ||||
-rw-r--r-- | modules/gallery/views/scaffold.html.php | 169 |
6 files changed, 243 insertions, 620 deletions
diff --git a/installer/.gitignore b/installer/.gitignore new file mode 100644 index 00000000..1c7be0fd --- /dev/null +++ b/installer/.gitignore @@ -0,0 +1,2 @@ +# ignore the tmp directory if it is present +tmp diff --git a/installer/install.sql b/installer/install.sql index 860d552c..7109236f 100755 --- a/installer/install.sql +++ b/installer/install.sql @@ -333,6 +333,6 @@ CREATE TABLE {vars} ( `value` text, PRIMARY KEY (`id`), UNIQUE KEY `module_name` (`module_name`,`name`) -) ENGINE=InnoDB AUTO_INCREMENT=24 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=22 DEFAULT CHARSET=utf8; SET character_set_client = @saved_cs_client; -INSERT INTO {vars} VALUES (1,'gallery','active_site_theme','default'),(2,'gallery','active_admin_theme','admin_default'),(3,'gallery','page_size','9'),(4,'gallery','thumb_size','200'),(5,'gallery','resize_size','640'),(6,'gallery','default_locale','en_US'),(7,'gallery','image_quality','75'),(9,'gallery','blocks_dashboard_sidebar','a:4:{i:1021536970;a:2:{i:0;s:7:\"gallery\";i:1;s:11:\"block_adder\";}i:62586177;a:2:{i:0;s:7:\"gallery\";i:1;s:5:\"stats\";}i:1314474428;a:2:{i:0;s:7:\"gallery\";i:1;s:13:\"platform_info\";}i:2072050158;a:2:{i:0;s:7:\"gallery\";i:1;s:12:\"project_news\";}}'),(14,'gallery','blocks_dashboard_center','a:4:{i:2103644216;a:2:{i:0;s:7:\"gallery\";i:1;s:7:\"welcome\";}i:1234407127;a:2:{i:0;s:7:\"gallery\";i:1;s:12:\"photo_stream\";}i:1844887955;a:2:{i:0;s:7:\"gallery\";i:1;s:11:\"log_entries\";}i:1497904257;a:2:{i:0;s:7:\"comment\";i:1;s:15:\"recent_comments\";}}'),(17,'gallery','version','3.0 pre-beta git'),(18,'gallery','choose_default_tookit','1'),(19,'gallery','credits','Powered by <a href=\"%url\">Gallery %version</a>'),(21,'comment','spam_caught','0'); +INSERT INTO {vars} VALUES (1,'gallery','active_site_theme','default'),(2,'gallery','active_admin_theme','admin_default'),(3,'gallery','page_size','9'),(4,'gallery','thumb_size','200'),(5,'gallery','resize_size','640'),(6,'gallery','default_locale','en_US'),(7,'gallery','image_quality','75'),(9,'gallery','blocks_dashboard_sidebar','a:4:{i:1804289383;a:2:{i:0;s:7:\"gallery\";i:1;s:11:\"block_adder\";}i:846930886;a:2:{i:0;s:7:\"gallery\";i:1;s:5:\"stats\";}i:1681692777;a:2:{i:0;s:7:\"gallery\";i:1;s:13:\"platform_info\";}i:1714636915;a:2:{i:0;s:7:\"gallery\";i:1;s:12:\"project_news\";}}'),(14,'gallery','blocks_dashboard_center','a:4:{i:1957747793;a:2:{i:0;s:7:\"gallery\";i:1;s:7:\"welcome\";}i:424238335;a:2:{i:0;s:7:\"gallery\";i:1;s:12:\"photo_stream\";}i:719885386;a:2:{i:0;s:7:\"gallery\";i:1;s:11:\"log_entries\";}i:1649760492;a:2:{i:0;s:7:\"comment\";i:1;s:15:\"recent_comments\";}}'),(17,'gallery','version','3.0 pre-beta git'),(18,'gallery','choose_default_tookit','1'),(19,'gallery','credits','Powered by <a href=\"%url\">Gallery %version</a>'),(21,'comment','spam_caught','0'); diff --git a/installer/package.php b/installer/package.php new file mode 100755 index 00000000..591f12d0 --- /dev/null +++ b/installer/package.php @@ -0,0 +1,239 @@ +#!/usr/bin/php -f +<?php +define('EXT', '.php'); +define("DOCROOT", realpath("../") . "/"); +define("VARPATH", DOCROOT . "var/"); + +// Define application and system paths +define("SYSPATH", DOCROOT . "system/"); +define('APPPATH', DOCROOT . "application/"); +define('MODPATH', DOCROOT . "modules/"); +define('THEMEPATH', DOCROOT . "themes/"); + +$modules_list = null; +$active_modules = null; + +function setup($config) { + system("rm -rf tmp"); + mkdir("tmp"); + + // Lets backup the database + $conn = $config["connection"]; + do_system("mysqldump -u{$conn['user']} -p{$conn['pass']} -h{$conn['host']} --add-drop-table " . + "--compact {$conn['database']} > tmp/dump.sql"); + + $db = Database::instance(); + // Drop all tables + foreach ($db->list_tables() as $table) { + $db->query("DROP TABLE IF EXISTS `$table`"); + } + + // Now the var directory + rename (VARPATH, realpath("tmp/var")); + mkdir(VARPATH); + copy(realpath("tmp/var/database.php"), VARPATH . "database.php"); + + $db->clear_cache(); + $modules_list = module::$modules; + $active_modules = module::$active; + + module::$modules = array(); + module::$active = array(); + + // Use a known random seed so that subsequent packaging runs will reuse the same random + // numbers, keeping our install.sql file more stable. + srand(0); +} + +function reset_install($config) { + // Reset the var path + system("rm -rf " . VARPATH); + rename (realpath("tmp/var"), VARPATH); + + $db = Database::instance(); + // Drop all tables + foreach ($db->list_tables() as $table) { + $db->query("DROP TABLE IF EXISTS `$table`"); + } + + // Lets restorep the database + $conn = $config["connection"]; + do_system("mysql -u{$conn['user']} -p{$conn['pass']} {$conn['database']} " . + " < tmp/dump.sql"); + + // Clear any database caching + $db->clear_cache(); + + module::$modules = $modules_list; + module::$active = $active_modules; +} + +function do_system($command) { + exec($command, $output, $status); + if ($status) { + throw new Exception("$command\nFailed to dump database\n" . implode("\n", $output)); + } +} + +function kohana_bootstrap() { + define('KOHANA_VERSION', '2.3.3'); + define('KOHANA_CODENAME', 'aegolius'); + + // Test of Kohana is running in Windows + define('KOHANA_IS_WIN', DIRECTORY_SEPARATOR === '\\'); + + // Kohana benchmarks are prefixed to prevent collisions + define('SYSTEM_BENCHMARK', 'system_benchmark'); + + // Load benchmarking support + require SYSPATH.'core/Benchmark'.EXT; + + // Start total_execution + Benchmark::start(SYSTEM_BENCHMARK.'_total_execution'); + + // Start kohana_loading + Benchmark::start(SYSTEM_BENCHMARK.'_kohana_loading'); + + // Load core files + require SYSPATH.'core/utf8'.EXT; + require SYSPATH.'core/Event'.EXT; + require SYSPATH.'core/Kohana'.EXT; + + // Prepare the environment + Kohana::setup(); + // End kohana_loading + Benchmark::stop(SYSTEM_BENCHMARK.'_kohana_loading'); + + // Prepare the system + Event::run('system.ready'); + + // Clean up and exit (this basically shuts down output buffering + Event::run('system.shutdown'); +} + +function install() { + gallery_installer::install(true); + module::load_modules(); + + foreach (array("user", "comment", "organize", "info", "rss", + "search", "slideshow", "tag") as $module_name) { + module::install($module_name); + module::activate($module_name); + } +} + +function dump_database() { + // We now have a clean install with just the packages that we want. Make sure that the + // database is clean too. + $db = Database::instance(); + $db->query("TRUNCATE {sessions}"); + $db->query("TRUNCATE {logs}"); + $db->query("DELETE FROM {vars} WHERE `module_name` = 'gallery' AND `name` = '_cache'"); + $db->update("users", array("password" => ""), array("id" => 1)); + $db->update("users", array("password" => ""), array("id" => 2)); + + $dbconfig = Kohana::config('database.default'); + $conn = $dbconfig["connection"]; + $pass = $conn["pass"] ? "-p{$conn['pass']}" : ""; + $sql_file = DOCROOT . "installer/install.sql"; + if (!is_writable($sql_file)) { + throw new Exception("$sql_file is not writeable"); + return; + } + do_system("mysqldump --compact --add-drop-table -h{$conn['host']} " . + "-u{$conn['user']} $pass {$conn['database']} > $sql_file"); + + // Post-process the sql file + $buf = ""; + $root = ORM::factory("item", 1); + $root_created_timestamp = $root->created; + $root_updated_timestamp = $root->updated; + foreach (file($sql_file) as $line) { + // Prefix tables + $line = preg_replace( + "/(CREATE TABLE|IF EXISTS|INSERT INTO) `{$dbconfig['table_prefix']}(\w+)`/", "\\1 {\\2}", + $line); + + // Normalize dates + $line = preg_replace("/,$root_created_timestamp,/", ",UNIX_TIMESTAMP(),", $line); + $line = preg_replace("/,$root_updated_timestamp,/", ",UNIX_TIMESTAMP(),", $line); + $buf .= $line; + } + $fd = fopen($sql_file, "wb"); + fwrite($fd, $buf); + fclose($fd); +} + +function dump_var() { + $objects = new RecursiveIteratorIterator( + new RecursiveDirectoryIterator(VARPATH), + RecursiveIteratorIterator::SELF_FIRST); + + $var_file = DOCROOT . "installer/init_var.php"; + if (!is_writable($var_file)) { + throw new Exception("$var_file is not writeable"); + return; + } + + $paths = array(); + foreach($objects as $name => $file) { + if ($file->getBasename() == "database.php") { + continue; + } else if (basename($file->getPath()) == "logs") { + continue; + } + + if ($file->isDir()) { + $paths[] = "VARPATH . \"" . substr($name, strlen(VARPATH)) . "\""; + } else { + // @todo: serialize non-directories + throw new Exception("Unknown file: $name"); + } + } + // Sort the paths so that the var file is stable + sort($paths); + + $fd = fopen($var_file, "w"); + fwrite($fd, "<?php defined(\"SYSPATH\") or die(\"No direct script access.\") ?>\n"); + fwrite($fd, "<?php\n"); + foreach ($paths as $path) { + fwrite($fd, "!file_exists($path) && mkdir($path);\n"); + } + fclose($fd); +} + +// Bootstrap kohana so we can use it as we need it +kohana_bootstrap(); + +$config = Kohana::config("database.default"); + +try { + // Empty the tmp directory, backup the database, and copy the var directory + setup($config); +} catch (Exception $e) { + print $e->getTrace(); + return; +} + +try { + // Install the standard modules + install(); + + // Dump the empty gallery3 database and format it for the installer + dump_database(); + + // Dump the var directory + dump_var(); +} catch (Exception $e) { + print $e->getTrace(); +} + +try { + // Reset the Gallery3 installation + reset_install($config); +} catch (Exception $e) { + print $e->getTrace(); +} + +system("rm -rf tmp"); +?>
\ No newline at end of file diff --git a/modules/gallery/controllers/scaffold.php b/modules/gallery/controllers/scaffold.php deleted file mode 100644 index 95a213f9..00000000 --- a/modules/gallery/controllers/scaffold.php +++ /dev/null @@ -1,440 +0,0 @@ -<?php defined("SYSPATH") or die("No direct script access."); -/** - * Gallery - a web based photo album viewer and editor - * Copyright (C) 2000-2009 Bharat Mediratta - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or (at - * your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. - */ -class Scaffold_Controller extends Template_Controller { - public $template = "scaffold.html"; - - function index() { - $session = Session::instance(); - - set_error_handler(array("Scaffold_Controller", "_error_handler")); - try { - $this->template->album_count = ORM::factory("item")->where("type", "album")->count_all(); - $this->template->photo_count = ORM::factory("item")->where("type", "photo")->count_all(); - $this->template->album_tree = $this->_load_album_tree(); - $this->template->add_photo_html = $this->_get_add_photo_html(); - } catch (Exception $e) { - $this->template->album_count = 0; - $this->template->photo_count = 0; - $this->template->deepest_photo = null; - $this->template->album_tree = array(); - $this->template->add_photo_html = ""; - } - - $this->_load_comment_info(); - $this->_load_tag_info(); - - restore_error_handler(); - - if (!empty($session) && $session->get("profiler", false)) { - $profiler = new Profiler(); - $profiler->render(); - } - } - - - function add_photos() { - $path = trim($this->input->post("path")); - $parent_id = (int)$this->input->post("parent_id"); - $parent = ORM::factory("item", $parent_id); - if (!$parent->loaded) { - throw new Exception("@todo BAD_ALBUM"); - } - - batch::start(); - cookie::set("add_photos_path", $path); - $photo_count = 0; - foreach (glob("$path/*.[Jj][Pp][Gg]") as $file) { - set_time_limit(30); - photo::create($parent, $file, basename($file), basename($file)); - $photo_count++; - } - batch::stop(); - - if ($photo_count > 0) { - log::success("content", "(scaffold) Added $photo_count photos", - html::anchor("albums/$parent_id", "View album")); - } - - url::redirect("scaffold"); - } - - function add_albums_and_photos($count, $desired_type=null) { - srand(time()); - $parents = ORM::factory("item")->where("type", "album")->find_all()->as_array(); - $owner_id = user::active()->id; - - $test_images = glob(MODPATH . "gallery/tests/images/*.[Jj][Pp][Gg]"); - - batch::start(); - $album_count = $photo_count = 0; - for ($i = 0; $i < $count; $i++) { - set_time_limit(30); - - $parent = $parents[array_rand($parents)]; - $parent->reload(); - $type = $desired_type; - if (!$type) { - $type = rand(0, 10) ? "photo" : "album"; - } - if ($type == "album") { - $thumb_size = module::get_var("gallery", "thumb_size"); - $parents[] = album::create( - $parent, "rnd_" . rand(), "Rnd $i", "random album $i", $owner_id) - ->save(); - $album_count++; - } else { - $photo_index = rand(0, count($test_images) - 1); - photo::create($parent, $test_images[$photo_index], basename($test_images[$photo_index]), - "rnd_" . rand(), "sample thumb", $owner_id); - $photo_count++; - } - } - batch::stop(); - - if ($photo_count > 0) { - log::success("content", "(scaffold) Added $photo_count photos"); - } - - if ($album_count > 0) { - log::success("content", "(scaffold) Added $album_count albums"); - } - url::redirect("scaffold"); - } - - function random_phrase($count) { - static $words; - if (empty($words)) { - $sample_text = "Sed ut perspiciatis, unde omnis iste natus error sit voluptatem accusantium - laudantium, totam rem aperiam eaque ipsa, quae ab illo inventore veritatis et quasi - architecto beatae vitae dicta sunt, explicabo. Nemo enim ipsam voluptatem, quia voluptas - sit, aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos, qui ratione - voluptatem sequi nesciunt, neque porro quisquam est, qui dolorem ipsum, quia dolor sit, - amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt, ut - labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis - nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi - consequatur? Quis autem vel eum iure reprehenderit, qui in ea voluptate velit esse, quam - nihil molestiae consequatur, vel illum, qui dolorem eum fugiat, quo voluptas nulla - pariatur? At vero eos et accusamus et iusto odio dignissimos ducimus, qui blanditiis - praesentium voluptatum deleniti atque corrupti, quos dolores et quas molestias excepturi - sint, obcaecati cupiditate non provident, similique sunt in culpa, qui officia deserunt - mollitia animi, id est laborum et dolorum fuga. Et harum quidem rerum facilis est et - expedita distinctio. Nam libero tempore, cum soluta nobis est eligendi optio, cumque - nihil impedit, quo minus id, quod maxime placeat, facere possimus, omnis voluptas - assumenda est, omnis dolor repellendus. Temporibus autem quibusdam et aut officiis - debitis aut rerum necessitatibus saepe eveniet, ut et voluptates repudiandae sint et - molestiae non recusandae. Itaque earum rerum hic tenetur a sapiente delectus, ut aut - reiciendis voluptatibus maiores alias consequatur aut perferendis doloribus asperiores - repellat."; - $words = preg_split('/\s+/', $sample_text); - } - - $chosen = array(); - for ($i = 0; $i < $count; $i++) { - $chosen[] = $words[array_rand($words)]; - } - - return implode(' ', $chosen); - } - - function add_comments($count) { - srand(time()); - $photos = ORM::factory("item")->where("type", "photo")->find_all()->as_array(); - $users = ORM::factory("user")->find_all()->as_array(); - - if (empty($photos)) { - url::redirect("scaffold"); - } - - if (module::is_active("akismet")) { - akismet::$test_mode = 1; - } - for ($i = 0; $i < $count; $i++) { - $photo = $photos[array_rand($photos)]; - $author = $users[array_rand($users)]; - $guest_name = ucfirst($this->random_phrase(rand(1, 3))); - $guest_email = sprintf("%s@%s.com", $this->random_phrase(1), $this->random_phrase(1)); - $guest_url = sprintf("http://www.%s.com", $this->random_phrase(1)); - comment::create($photo, $author, $this->random_phrase(rand(8, 500)), - $guest_name, $guest_email, $guest_url); - } - - url::redirect("scaffold"); - } - - function add_tags($count) { - $items = ORM::factory("item")->find_all()->as_array(); - - if (!empty($items)) { - $tags = $this->_generateTags($count); - - while ($count-- > 0) { - $tag_name = $tags[array_rand($tags)]; - $item = $items[array_rand($items)]; - - tag::add($item, $tag_name); - } - } - - url::redirect("scaffold"); - } - - private function _generateTags($number){ - // Words from lorem2.com - $words = explode( - " ", - "Lorem ipsum dolor sit amet consectetuer adipiscing elit Donec odio Quisque volutpat " . - "mattis eros Nullam malesuada erat ut turpis Suspendisse urna nibh viverra non " . - "semper suscipit posuere a pede Donec nec justo eget felis facilisis " . - "fermentum Aliquam porttitor mauris sit amet orci Aenean dignissim pellentesque " . - "felis Morbi in sem quis dui placerat ornare Pellentesque odio nisi euismod in " . - "pharetra a ultricies in diam Sed arcu Cras consequat Praesent dapibus neque " . - "id cursus faucibus tortor neque egestas augue eu vulputate magna eros eu " . - "erat Aliquam erat volutpat Nam dui mi tincidunt quis accumsan porttitor " . - "facilisis luctus metus Phasellus ultrices nulla quis nibh Quisque a " . - "lectus Donec consectetuer ligula vulputate sem tristique cursus Nam nulla quam " . - "gravida non commodo a sodales sit amet nisi Pellentesque fermentum " . - "dolor Aliquam quam lectus facilisis auctor ultrices ut elementum vulputate " . - "nunc Sed adipiscing ornare risus Morbi est est blandit sit amet sagittis vel " . - "euismod vel velit Pellentesque egestas sem Suspendisse commodo ullamcorper " . - "magna"); - - while ($number--) { - $results[] = $words[array_rand($words, 1)]; - } - return $results; - } - - function _error_handler($x) { - } - - private function _load_comment_info() { - if (class_exists("Comment_Model")) { - $this->template->comment_count = ORM::factory("comment")->count_all(); - } else { - $this->template->comment_count = 0; - } - } - - private function _load_tag_info() { - if (class_exists("Tag_Model")) { - $this->template->tag_count = ORM::factory("tag")->count_all(); - $this->template->most_tagged = Database::instance() - ->select("item_id AS id", "COUNT(tag_id) AS count") - ->from("items_tags") - ->groupby("item_id") - ->orderby("count", "DESC") - ->limit(1) - ->get() - ->current(); - } else { - $this->template->tag_count = 0; - $this->template->most_tagged = 0; - } - } - - function install($module_name, $redirect=true) { - $to_install = array(); - if ($module_name == "*") { - foreach (module::available() as $module_name => $info) { - if (empty($info->installed)) { - $to_install[] = $module_name; - } - } - } else { - $to_install[] = $module_name; - } - - foreach ($to_install as $module_name) { - if ($module_name != "gallery") { - require_once(DOCROOT . "modules/${module_name}/helpers/${module_name}_installer.php"); - } - module::install($module_name); - } - - if ($redirect) { - url::redirect("scaffold"); - } - } - - - public function package() { - $this->auto_render = false; - $db = Database::instance(); - - // Drop all tables - foreach ($db->list_tables() as $table) { - $db->query("DROP TABLE IF EXISTS `$table`"); - } - - // Clean out data - dir::unlink(VARPATH . "uploads"); - dir::unlink(VARPATH . "albums"); - dir::unlink(VARPATH . "resizes"); - dir::unlink(VARPATH . "thumbs"); - dir::unlink(VARPATH . "modules"); - dir::unlink(VARPATH . "tmp"); - - $db->clear_cache(); - module::$modules = array(); - module::$active = array(); - - // Use a known random seed so that subsequent packaging runs will reuse the same random - // numbers, keeping our install.sql file more stable. - srand(0); - - try { - gallery_installer::install(true); - module::load_modules(); - - foreach (array("user", "comment", "organize", "info", "rss", - "search", "slideshow", "tag") as $module_name) { - module::install($module_name); - module::activate($module_name); - } - } catch (Exception $e) { - Kohana::log("error", $e->getTraceAsString()); - print $e->getTrace(); - throw $e; - } - - url::redirect("scaffold/dump_database"); - } - - public function dump_database() { - $this->auto_render = false; - - // We now have a clean install with just the packages that we want. Make sure that the - // database is clean too. - $db = Database::instance(); - $db->query("TRUNCATE {sessions}"); - $db->query("TRUNCATE {logs}"); - $db->query("DELETE FROM {vars} WHERE `module_name` = 'gallery' AND `name` = '_cache'"); - $db->update("users", array("password" => ""), array("id" => 1)); - $db->update("users", array("password" => ""), array("id" => 2)); - - $dbconfig = Kohana::config('database.default'); - $conn = $dbconfig["connection"]; - $pass = $conn["pass"] ? "-p{$conn['pass']}" : ""; - $sql_file = DOCROOT . "installer/install.sql"; - if (!is_writable($sql_file)) { - print "$sql_file is not writeable"; - return; - } - $command = "mysqldump --compact --add-drop-table -h{$conn['host']} " . - "-u{$conn['user']} $pass {$conn['database']} > $sql_file"; - exec($command, $output, $status); - if ($status) { - print "<pre>"; - print "$command\n"; - print "Failed to dump database\n"; - print implode("\n", $output); - return; - } - - // Post-process the sql file - $buf = ""; - $root = ORM::factory("item", 1); - $root_created_timestamp = $root->created; - $root_updated_timestamp = $root->updated; - foreach (file($sql_file) as $line) { - // Prefix tables - $line = preg_replace( - "/(CREATE TABLE|IF EXISTS|INSERT INTO) `{$dbconfig['table_prefix']}(\w+)`/", "\\1 {\\2}", - $line); - - // Normalize dates - $line = preg_replace("/,$root_created_timestamp,/", ",UNIX_TIMESTAMP(),", $line); - $line = preg_replace("/,$root_updated_timestamp,/", ",UNIX_TIMESTAMP(),", $line); - $buf .= $line; - } - $fd = fopen($sql_file, "wb"); - fwrite($fd, $buf); - fclose($fd); - - url::redirect("scaffold/dump_var"); - } - - public function dump_var() { - $this->auto_render = false; - - $objects = new RecursiveIteratorIterator( - new RecursiveDirectoryIterator(VARPATH), - RecursiveIteratorIterator::SELF_FIRST); - - $var_file = DOCROOT . "installer/init_var.php"; - if (!is_writable($var_file)) { - print "$var_file is not writeable"; - return; - } - - $paths = array(); - foreach($objects as $name => $file){ - if ($file->getBasename() == "database.php") { - continue; - } else if (basename($file->getPath()) == "logs") { - continue; - } - - if ($file->isDir()) { - $paths[] = "VARPATH . \"" . substr($name, strlen(VARPATH)) . "\""; - } else { - // @todo: serialize non-directories - print "Unknown file: $name"; - return; - } - } - // Sort the paths so that the var file is stable - sort($paths); - - $fd = fopen($var_file, "w"); - fwrite($fd, "<?php defined(\"SYSPATH\") or die(\"No direct script access.\") ?>\n"); - fwrite($fd, "<?php\n"); - foreach ($paths as $path) { - fwrite($fd, "!file_exists($path) && mkdir($path);\n"); - } - fclose($fd); - url::redirect("scaffold"); - } - - private function _load_album_tree() { - $tree = array(); - foreach (ORM::factory("item")->where("type", "album")->find_all() as $album) { - if ($album->parent_id) { - $tree[$album->parent_id]->children[] = $album->id; - } - $tree[$album->id]->album = $album; - $tree[$album->id]->children = array(); - } - - return $tree; - } - - public function form($arg1, $arg2) { - if ($arg1 == "add" && $arg2 == "photos") { - print $this->_get_add_photo_html(); - } - $this->auto_render = false; - } - - public function _get_add_photo_html($parent_id=1) { - $parent = ORM::factory("item", $parent_id); - return photo::get_add_form($parent); - } -} diff --git a/modules/gallery/helpers/gallery_menu.php b/modules/gallery/helpers/gallery_menu.php index 1f5151a3..0f0e676d 100644 --- a/modules/gallery/helpers/gallery_menu.php +++ b/modules/gallery/helpers/gallery_menu.php @@ -20,15 +20,6 @@ class gallery_menu_Core { static function site($menu, $theme) { $is_admin = user::active()->admin; - if (file_exists(MODPATH . "gallery/controllers/scaffold.php") && $is_admin) { - $menu->append($scaffold_menu = Menu::factory("submenu") - ->id("scaffold") - ->label("Scaffold")); - $scaffold_menu->append(Menu::factory("link") - ->id("scaffold_home") - ->label("Dashboard") - ->url(url::site("scaffold"))); - } $menu->append(Menu::factory("link") ->id("home") diff --git a/modules/gallery/views/scaffold.html.php b/modules/gallery/views/scaffold.html.php deleted file mode 100644 index 60ce0b57..00000000 --- a/modules/gallery/views/scaffold.html.php +++ /dev/null @@ -1,169 +0,0 @@ -<?php defined("SYSPATH") or die("No direct script access.") ?> -<html> - <head> - <title>Gallery3 Scaffold</title> - <style> - body { - background: #999; - font-family: Trebuchet MS; - } - - div.outer { - width: 650px; - background: white; - border: 1px solid black; - margin: 0 auto; - padding: -10px; - } - - div.inner { - padding: 0 1em 0 1em; - margin: 0px; - } - - h1, h2, h3 { - margin-bottom: .1em; - } - - p { - margin: 0 0 0 0; - padding-left: 1em; - } - - table { - padding-left: 1em; - } - - pre { - border: 1px solid #666; - margin: 1em 0; - padding: .5em; - overflow: scroll; - } - - .error { - color: red; - } - - .success { - color: green; - } - - p.success { - font-weight: bold; - } - - div.block { - padding: 0px; - margin: 0px; - } - - ul { - margin-top: -.25em; - } - - fieldset { - margin-left: 1em; - margin-bottom: 1em; - padding-bottom: 0; - } - - a { - text-decoration: none; - } - - a:hover { - text-decoration: underline; - } - - a.allowed { - color: green; - font-size: 110%; - } - - a.denied { - color: red; - font-size: 90%; - } - - .gHide { - display: none; - } - - div#browse { - border: 1px solid black; - background: #eee; - width: 450px; - padding: 2px; - margin: 5px 0px 0px 1em; - } - </style> - </head> - <body> - <div class="outer"> - <center> - <img src="<?= url::file("modules/gallery/images/gallery.png") ?>"/> - </center> - <div class="inner"> - <h1>Gallery3 Scaffold</h1> - <p> - This is - a <b><a href="http://www.google.com/images?q=scaffold">scaffold</a></b>: - a <i>temporary structure built to support the developers as - they create the real product</i>. As we flesh out Gallery 3, - we'll make it possible for you to peer inside and see the - application taking shape. Eventually, this page will go - away and you'll start in the application itself. In the - meantime, here are some useful links to get you started. - </p> - - <? if ($album_count > 0): ?> - <div id="browse"> - <p> - <?= html::anchor("albums/1", "Browse Gallery") ?> - <i>(<?= $album_count ?> albums, <?= $photo_count ?> photos, <?= $comment_count ?> comments, <?= $tag_count ?> tags)</i> - </p> - </div> - <? endif ?> - - <div id="actions" class="activity"> - <fieldset> - <legend>Generate Test Data</legend> - <p> - add: [ - <? foreach (array(1, 10, 50, 100, 500, 1000) as $count): ?> - <?= html::anchor("scaffold/add_albums_and_photos/$count", "$count") ?> - <? endforeach ?> - ] photos and albums - </p> - <p> - add: [ - <? foreach (array(1, 10, 50, 100, 500, 1000) as $count): ?> - <?= html::anchor("scaffold/add_albums_and_photos/$count/album", "$count") ?> - <? endforeach ?> - ] albums only - </p> - <p> - add: [ - <? foreach (array(1, 10, 50, 100, 500, 1000) as $count): ?> - <?= html::anchor("scaffold/add_comments/$count", "$count") ?> - <? endforeach ?> - ] comments - </p> - <p> - add: [ - <? foreach (array(1, 10, 50, 100, 500, 1000) as $count): ?> - <?= html::anchor("scaffold/add_tags/$count", "$count") ?> - <? endforeach ?> - ] tags - </p> - </fieldset> - <fieldset> - <legend>Packaging</legend> - <a href="<?= url::site("scaffold/package") ?>">Make Package</a> - </fieldset> - </div> - </div> - </div> - </body> -</html> |