From 0bc64efa4ab183d9c98334b6c4180307fef0a51b Mon Sep 17 00:00:00 2001 From: Tim Almdal Date: Mon, 16 Mar 2009 03:50:57 +0000 Subject: Thin down the scaffolding code so that all that is there is the test data creation and the packaging code. The rest ofthe functionality is either no longer required, or moved to the developer module (MPTT Tree). Also provide checking for the active user to be an admin. --- core/controllers/scaffold.php | 288 +------------------------------ core/helpers/core_menu.php | 2 +- core/views/scaffold.html.php | 311 +--------------------------------- core/views/scaffold_syscheck.html.php | 68 -------- 4 files changed, 11 insertions(+), 658 deletions(-) delete mode 100644 core/views/scaffold_syscheck.html.php (limited to 'core') diff --git a/core/controllers/scaffold.php b/core/controllers/scaffold.php index b89c27ce..2454b400 100644 --- a/core/controllers/scaffold.php +++ b/core/controllers/scaffold.php @@ -26,19 +26,14 @@ class Scaffold_Controller extends Template_Controller { } catch (Exception $e) { } - $this->template->syscheck = new View("scaffold_syscheck.html"); - $this->template->syscheck->errors = $this->_get_config_errors(); - $this->template->syscheck->modules = array(); - + if (!user::active()->admin) { + throw new Exception("@todo FORBIDDEN", 503); + } + set_error_handler(array("Scaffold_Controller", "_error_handler")); try { - $this->template->syscheck->modules = module::available(); $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->deepest_photo = ORM::factory("item") - ->where("type", "photo")->orderby("level", "desc")->find(); - $this->template->deepest_album = ORM::factory("item") - ->where("type", "album")->orderby("level", "desc")->find(); $this->template->album_tree = $this->_load_album_tree(); $this->template->add_photo_html = $this->_get_add_photo_html(); } catch (Exception $e) { @@ -49,13 +44,10 @@ class Scaffold_Controller extends Template_Controller { $this->template->add_photo_html = ""; } - $this->_load_user_info(); - $this->_load_group_info(); $this->_load_comment_info(); $this->_load_tag_info(); - restore_error_handler(); - $this->_create_directories(); + restore_error_handler(); if (!empty($session) && $session->get("profiler", false)) { $profiler = new Profiler(); @@ -63,135 +55,6 @@ class Scaffold_Controller extends Template_Controller { } } - 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 != "core") { - require_once(DOCROOT . "modules/${module_name}/helpers/${module_name}_installer.php"); - } - module::install($module_name); - } - - if ($redirect) { - url::redirect("scaffold"); - } - } - - function uninstall($module_name, $redirect=true) { - $clean = true; - if ($module_name == "core") { - // We have to uninstall all other modules first, else their tables, etc don't - // get cleaned up. - $old_handler = set_error_handler(array("scaffold_Controller", "_error_handler")); - try { - foreach (ORM::factory("module")->find_all() as $module) { - if ($module->name != "core" && $module->version) { - try { - call_user_func(array("{$module->name}_installer", "uninstall")); - } catch (Exception $e) { - print $e; - } - } - } - core_installer::uninstall(); - } catch (Exception $e) { - print $e; - } - - - // Since we're in a state of flux, it's possible that other stuff went wrong with the - // uninstall, so back off and nuke it from orbit. It's the only way to be sure. - $db = Database::instance(); - foreach ($db->list_tables() as $table) { - $db->query("DROP TABLE `$table`"); - } - set_error_handler($old_handler); - } else { - module::uninstall($module_name); - } - if ($redirect) { - url::redirect("scaffold"); - } - } - - function mptt() { - $this->auto_render = false; - $items = ORM::factory("item")->orderby("id")->find_all(); - $data = "digraph G {\n"; - foreach ($items as $item) { - $data .= " $item->parent_id -> $item->id\n"; - $data .= " $item->id [label=\"$item->id [$item->level] <$item->left, $item->right>\"]\n"; - } - $data .= "}\n"; - - if ($this->input->get("type") == "text") { - print "
$data";
-    } else {
-      $proc = proc_open("/usr/bin/dot -Tsvg",
-                        array(array("pipe", "r"),
-                              array("pipe", "w")),
-                        $pipes,
-                        VARPATH . "tmp");
-      fwrite($pipes[0], $data);
-      fclose($pipes[0]);
-
-      header("Content-Type: image/svg+xml");
-      print(stream_get_contents($pipes[1]));
-      fclose($pipes[1]);
-      proc_close($proc);
-    }
-  }
-
-  function i18n($action) {
-    $translation_file = VARPATH . "translation.php";
-
-    switch($action) {
-    case "build":
-      $t = array();
-      for ($i = 0; $i < 500; $i++) {
-        $t["this is message $i of many"] = "localized version of $i";
-      }
-
-      $fp = fopen($translation_file, "wb");
-      fwrite($fp, "auto_render = false;
-    }
-  }
 
   function add_photos() {
     $path = trim($this->input->post("path"));
@@ -365,82 +228,9 @@ class Scaffold_Controller extends Template_Controller {
     return $results;
   }
 
-  private function _get_config_errors() {
-    $errors = array();
-    if (!file_exists(VARPATH)) {
-      $error = new stdClass();
-      $error->message = "Missing: " . VARPATH;
-      $error->instructions[] = "mkdir " . VARPATH;
-      $error->instructions[] = "chmod 777 " . VARPATH;
-      $errors[] = $error;
-    } else if (!is_writable(VARPATH)) {
-      $error = new stdClass();
-      $error->message = "Not writable: " . VARPATH;
-      $error->instructions[] = "chmod 777 " . VARPATH;
-      $errors[] = $error;
-    }
-
-    $db_php = VARPATH . "database.php";
-    if (!file_exists($db_php)) {
-      $error = new stdClass();
-      $error->message = "Missing: $db_php 
Run the following commands..."; - $error->instructions[] = "cp " . DOCROOT . "kohana/config/database.php $db_php"; - $error->instructions[] = "chmod 644 $db_php"; - $error->message2 = "...then edit this file and enter your database configuration settings."; - $errors[] = $error; - } else if (!is_readable($db_php)) { - $error = new stdClass(); - $error->message = "Not readable: $db_php"; - $error->instructions[] = "chmod 644 $db_php"; - $error->message2 = "Then edit this file and enter your database configuration settings."; - $errors[] = $error; - } else { - $old_handler = set_error_handler(array("Scaffold_Controller", "_error_handler")); - try { - Database::instance()->connect(); - } catch (Exception $e) { - $error = new stdClass(); - $error->message = "Database error: {$e->getMessage()}"; - $db_name = Kohana::config("database.default.connection.database"); - if (strchr($error->message, "Unknown database")) { - $error->instructions[] = "mysqladmin -uroot create $db_name"; - } else { - $error->instructions = array(); - $error->message2 = "Check " . VARPATH . "database.php"; - } - $errors[] = $error; - } - set_error_handler($old_handler); - } - - return $errors; - } - function _error_handler($x) { } - function _create_directories() { - foreach (array("logs", "uploads") as $dir) { - @mkdir(VARPATH . "$dir"); - } - } - - private function _load_group_info() { - if (class_exists("Group_Model")) { - $this->template->groups = ORM::factory("group")->find_all(); - } else { - $this->template->groups = array(); - } - } - - private function _load_user_info() { - if (class_exists("User_Model")) { - $this->template->users = ORM::factory("user")->find_all(); - } else { - $this->template->users = array(); - } - } - private function _load_comment_info() { if (class_exists("Comment_Model")) { $this->template->comment_count = ORM::factory("comment")->count_all(); @@ -466,6 +256,7 @@ class Scaffold_Controller extends Template_Controller { } } + public function package() { $this->auto_render = false; @@ -560,54 +351,6 @@ class Scaffold_Controller extends Template_Controller { url::redirect("scaffold"); } - public function add_user() { - $name = $this->input->post("user_name"); - $isAdmin = (bool)$this->input->post("admin"); - $user = user::create($name, $name, $name); - if ($isAdmin) { - $user->admin = true; - $user->save(); - } - url::redirect("scaffold"); - } - - public function delete_user($id) { - ORM::factory("user", $id)->delete(); - url::redirect("scaffold"); - } - - public function add_group() { - $name = $this->input->post("group_name"); - group::create($name); - url::redirect("scaffold"); - } - - public function delete_group($id) { - ORM::factory("group", $id)->delete(); - url::redirect("scaffold"); - } - - public function remove_from_group($group_id, $user_id) { - $group = ORM::factory("group", $group_id); - $user = ORM::factory("user", $user_id); - if ($group->loaded && $user->loaded) { - $group->remove($user); - $group->save(); - } - url::redirect("scaffold"); - } - - public function add_to_group($user_id) { - $group_name = $this->input->post("group_name"); - $group = ORM::factory("group")->where("name", $group_name)->find(); - $user = ORM::factory("user", $user_id); - if ($group->loaded && $user->loaded) { - $group->add($user); - $group->save(); - } - url::redirect("scaffold"); - } - private function _load_album_tree() { $tree = array(); foreach (ORM::factory("item")->where("type", "album")->find_all() as $album) { @@ -621,25 +364,6 @@ class Scaffold_Controller extends Template_Controller { return $tree; } - public function add_perm($group_id, $perm, $item_id) { - access::allow(ORM::factory("group", $group_id), $perm, ORM::factory("item", $item_id)); - url::redirect("scaffold"); - } - - public function deny_perm($group_id, $perm, $item_id) { - access::deny(ORM::factory("group", $group_id), $perm, ORM::factory("item", $item_id)); - url::redirect("scaffold"); - } - - public function reset_all_perms($group_id, $item_id) { - $group = ORM::factory("group", $group_id); - $item = ORM::factory("item", $item_id); - foreach (ORM::factory("permission")->find_all() as $perm) { - access::reset($group, $perm->name, $item); - } - url::redirect("scaffold"); - } - public function form($arg1, $arg2) { if ($arg1 == "add" && $arg2 == "photos") { print $this->_get_add_photo_html(); diff --git a/core/helpers/core_menu.php b/core/helpers/core_menu.php index c0e94f94..e372cc72 100644 --- a/core/helpers/core_menu.php +++ b/core/helpers/core_menu.php @@ -19,7 +19,7 @@ */ class core_menu_Core { static function site($menu, $theme) { - if (file_exists(APPPATH . "controllers/scaffold.php")) { + if (file_exists(APPPATH . "controllers/scaffold.php") && user::active()->admin) { $menu->append($scaffold_menu = Menu::factory("submenu") ->id("scaffold") ->label("Scaffold")); diff --git a/core/views/scaffold.html.php b/core/views/scaffold.html.php index 028acd02..765464b5 100644 --- a/core/views/scaffold.html.php +++ b/core/views/scaffold.html.php @@ -62,65 +62,12 @@ margin-top: -.25em; } - div#activities { - margin-bottom: 1em; - } - - div.activity { - display: none; - } - - ul.tabs { - margin-left: 0; - padding: 1em 0 2px 1em; - white-space: nowrap; - border-bottom: 1px solid black; - } - - ul.tabs li { - display: inline; - list-style-type: none; - } - - ul.tabs a { - padding: 3px 10px; - color: #fff; - background-color: #036; - text-decoration: none; - } - - div#access { - margin-top: -20px; - padding: 0px; - padding-left: 20px; - } - - div#access ul.tabs a { - background-color: #830; - border: 1px solid white; - } - - ul.tabs a:hover { - background-color: #369; - } - fieldset { margin-left: 1em; + margin-bottom: 1em; padding-bottom: 0; } - div#photo_upload_wrap { - display: inline; - } - - div#photo_upload_wrap { - display: inline; - } - - tr.core td { - border-bottom: 1px solid black; - } - a { text-decoration: none; } @@ -129,11 +76,6 @@ text-decoration: underline; } - span.understate { - font-size: 70%; - font-style: italic; - } - a.allowed { color: green; font-size: 110%; @@ -144,11 +86,6 @@ font-size: 90%; } - ul#permissions ul { - margin-left: -1.5em; - list-style-type: none; - } - .gHide { display: none; } @@ -161,10 +98,6 @@ margin: 5px 0px 0px 1em; } - - - -
@@ -193,58 +126,9 @@
- - -
- - -
- -
- -
+
+
+ Generate Test Data

add: [ @@ -273,198 +157,11 @@ ] tags

- -
- Server Side Photos -
"> - - " /> -
- Album id: -
-
-
- Albums -
"> - - - -
Packaging ">Make Package
-
- - -
- - -
-
    - -
  • - name ?> - admin): ?> - id", "[x]") ?> - -
      - groups as $group): ?> -
    • - name ?> - special): ?> - id/$user->id", "[x]") ?> - -
    • - -
    • -
      id") ?>"> - -
      -
    • -
    -
  • - -
-
- Add User -
"> - - - Admin -
-
-
- -
-
    - -
  • - name ?> - special): ?> - id", "[x]") ?> - -
  • - -
-
- Add Group -
"> - - -
-
-
- -
- - - - - - -
    -
  • - (album->id ?>) - album->id}", $current->album->title) ?> - » - - - album)): ?> - album->id}", strtoupper($perm), array("class" => "allowed")) ?> - - album->id}", strtolower($perm), array("class" => "denied")) ?> - - - album->id != 1): ?> - - (album->id}", "reset") ?>) - - - - children): ?> - children) ?> - - -
  • -
- - - -
-
- - -
-
    -
  • -
  • - - (requires /usr/bin/dot from the graphviz package) -
  • - -
  • - id}", "Deepest photo") ?> - (level ?> levels deep) -
  • - - -
  • - id}", "Deepest album") ?> - (level ?> levels deep) -
  • - - -
  • - id}", "Most tagged item") ?> - (count ?> tags) -
  • - -
-
- -
-
    -
  • - -
  • -
  • - -
  • -
-
- -
diff --git a/core/views/scaffold_syscheck.html.php b/core/views/scaffold_syscheck.html.php deleted file mode 100644 index 7dbb4b9f..00000000 --- a/core/views/scaffold_syscheck.html.php +++ /dev/null @@ -1,68 +0,0 @@ - - -
-

- message ?> -

- instructions as $line): ?> -
- - - message2)): ?> -

- message2 ?> -

- -
- - - -
- -

- Your system is ready, but Gallery is not yet installed. -

-

- -

- -

- Your Gallery is ready with the following modules installed: -

- - - - - - - - - - - - - - $info): ?> - - - - - - - - - - - -
NameInstalledAvailableAction
core
installed ?>version ?> - installed): ?> - - - - -
- -
- -
- -- cgit v1.2.3