diff options
Diffstat (limited to 'modules/gallery/controllers')
| -rw-r--r-- | modules/gallery/controllers/scaffold.php | 440 | 
1 files changed, 0 insertions, 440 deletions
| 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); -  } -} | 
