Example #1
0
 static function site($menu, $theme)
 {
     if (file_exists(MODPATH . "gallery/controllers/scaffold.php") && user::active()->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")->label(t("Home"))->url(url::site("albums/1")));
     $item = $theme->item();
     if (user::active()->admin || $item && access::can("edit", $item)) {
         $menu->append($options_menu = Menu::factory("submenu")->id("options_menu")->label(t("Options")));
         if ($item && access::can("edit", $item)) {
             $options_menu->append(Menu::factory("dialog")->id("edit_item")->label($item->is_album() ? t("Edit album") : t("Edit photo"))->url(url::site("form/edit/{$item->type}s/{$item->id}")));
             // @todo Move album options menu to the album quick edit pane
             // @todo Create resized item quick edit pane menu
             if ($item->is_album()) {
                 $options_menu->append(Menu::factory("dialog")->id("add_item")->label(t("Add a photo"))->url(url::site("simple_uploader/app/{$item->id}")))->append(Menu::factory("dialog")->id("add_album")->label(t("Add an album"))->url(url::site("form/add/albums/{$item->id}?type=album")))->append(Menu::factory("dialog")->id("edit_permissions")->label(t("Edit permissions"))->url(url::site("permissions/browse/{$item->id}")));
             }
         }
     }
     if (user::active()->admin) {
         $menu->append($admin_menu = Menu::factory("submenu")->id("admin_menu")->label(t("Admin")));
         self::admin($admin_menu, $theme);
         foreach (module::active() as $module) {
             if ($module->name == "gallery") {
                 continue;
             }
             $class = "{$module->name}_menu";
             if (method_exists($class, "admin")) {
                 call_user_func_array(array($class, "admin"), array(&$admin_menu, $theme));
             }
         }
     }
 }
Example #2
0
 private function _reset()
 {
     $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);
     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);
     }
 }
Example #3
0
 static function get_quick_buttons($item, $page_type)
 {
     $buttons = self::buttons($item, $page_type);
     foreach (module::active() as $module) {
         if ($module->name == "gallery") {
             continue;
         }
         $class_name = "{$module->name}_quick";
         if (method_exists($class_name, "buttons")) {
             $module_buttons = call_user_func(array($class_name, "buttons"), $item, $page_type);
             foreach (array("left", "center", "right", "additional") as $position) {
                 if (!empty($module_buttons[$position])) {
                     $buttons[$position] = array_merge($buttons[$position], $module_buttons[$position]);
                 }
             }
         }
     }
     $sorted_buttons->main = array();
     foreach (array("left", "center", "right") as $position) {
         $sorted_buttons->main = array_merge($sorted_buttons->main, $buttons[$position]);
     }
     $sorted_buttons->additional = $buttons["additional"];
     $max_display = empty($sorted_buttons->additional) ? 6 : 5;
     if (count($sorted_buttons->main) >= $max_display) {
         $to_move = array_slice($sorted_buttons->main, 5);
         $sorted_buttons->additional = array_merge($to_move, $sorted_buttons->additional);
         for ($i = count($sorted_buttons->main); $i >= 5; $i--) {
             unset($sorted_buttons->main[$i]);
         }
     }
     return $sorted_buttons;
 }
Example #4
0
 /**
  * Handle all theme functions that insert module content.
  */
 public function __call($function, $args)
 {
     switch ($function) {
         case "admin_credits":
         case "admin_footer":
         case "admin_header_top":
         case "admin_header_bottom":
         case "admin_page_bottom":
         case "admin_page_top":
         case "admin_head":
         case "body_attributes":
             $blocks = array();
             foreach (module::active() as $module) {
                 $helper_class = "{$module->name}_theme";
                 if (method_exists($helper_class, $function)) {
                     $blocks[] = call_user_func_array(array($helper_class, $function), array_merge(array($this), $args));
                 }
             }
             if ($function == "admin_head") {
                 array_unshift($blocks, $this->combine_files($this->css, "css"));
                 array_unshift($blocks, $this->combine_files($this->scripts, "javascript"));
             }
             if (Session::instance()->get("debug")) {
                 if ($function != "admin_head") {
                     array_unshift($blocks, "<div class=\"g-annotated-theme-block g-annotated-theme-block_{$function}\">" . "<div class=\"title\">{$function}</div>");
                     $blocks[] = "</div>";
                 }
             }
             return implode("\n", $blocks);
         default:
             throw new Exception("@todo UNKNOWN_THEME_FUNCTION: {$function}");
     }
 }
Example #5
0
 static function process_feed($feed, $offset, $limit, $id)
 {
     foreach (module::active() as $module) {
         $class_name = "{$module->name}_rss";
         if (method_exists($class_name, $feed)) {
             return call_user_func(array($class_name, $feed), $offset, $limit, $id);
         }
     }
 }
Example #6
0
 static function get($request)
 {
     $results = array();
     foreach (module::active() as $module) {
         foreach (glob(MODPATH . "{$module->name}/helpers/*_rest.php") as $filename) {
             $results[] = str_replace("_rest.php", "", basename($filename));
         }
     }
     return array_unique($results);
 }
Example #7
0
 /**
  * Get all available tasks
  */
 static function get_definitions()
 {
     $tasks = array();
     foreach (module::active() as $module) {
         $class_name = "{$module->name}_task";
         if (method_exists($class_name, "available_tasks")) {
             foreach (call_user_func(array($class_name, "available_tasks")) as $task) {
                 $tasks[$task->callback] = $task;
             }
         }
     }
     return $tasks;
 }
Example #8
0
 static function get_available()
 {
     $blocks = array();
     foreach (module::active() as $module) {
         $class_name = "{$module->name}_block";
         if (method_exists($class_name, "get_list")) {
             foreach (call_user_func(array($class_name, "get_list")) as $id => $title) {
                 $blocks["{$module->name}:{$id}"] = $title;
             }
         }
     }
     return $blocks;
 }
Example #9
0
 private static function _get_blocks($function)
 {
     $blocks = array();
     foreach (module::active() as $module) {
         $class_name = "{$module->name}_block";
         if (method_exists($class_name, $function)) {
             foreach (call_user_func(array($class_name, $function)) as $id => $title) {
                 $blocks["{$module->name}:{$id}"] = $title;
             }
         }
     }
     return $blocks;
 }
Example #10
0
 static function update($item)
 {
     $data = array();
     $record = ORM::factory("search_record")->where("item_id", $item->id)->find();
     if (!$record->loaded) {
         $record->item_id = $item->id;
     }
     foreach (module::active() as $module) {
         $class_name = "{$module->name}_search";
         if (method_exists($class_name, "item_index_data")) {
             $data[] = call_user_func(array($class_name, "item_index_data"), $record->item());
         }
     }
     $record->data = join(" ", $data);
     $record->dirty = 0;
     $record->save();
 }
Example #11
0
  static function sidebar_blocks($theme) {
    $block = new Block();
    $block->css_id = "gRss";
    $block->title = t("Available RSS Feeds");
    $block->content = new View("rss_block.html");
    $block->content->feeds = array();
    foreach (module::active() as $module) {
      $class_name = "{$module->name}_rss";
      if (method_exists($class_name, "available_feeds")) {
        $block->content->feeds = array_merge(
          $block->content->feeds,
          call_user_func(array($class_name, "available_feeds"), $theme->item(), $theme->tag()));
      }
    }

    if ($block->content->feeds) {
      return $block;
    }
  }
Example #12
0
 static function site($menu, $theme)
 {
     $is_admin = user::active()->admin;
     $menu->append(Menu::factory("link")->id("home")->label(t("Home"))->url(url::site("albums/1")));
     $item = $theme->item();
     $can_edit = $item && access::can("edit", $item) || $is_admin;
     $can_add = $item && (access::can("add", $item) || $is_admin);
     if ($can_add) {
         $menu->append(Menu::factory("dialog")->id("add_photos_item")->label(t("Add photos"))->url(url::site("simple_uploader/app/{$item->id}")));
     }
     if ($item && $can_edit || $can_add) {
         $menu->append($options_menu = Menu::factory("submenu")->id("options_menu")->label(t("Options")));
         if ($can_edit) {
             $options_menu->append(Menu::factory("dialog")->id("edit_item")->label($item->is_album() ? t("Edit album") : t("Edit photo"))->url(url::site("form/edit/{$item->type}s/{$item->id}")));
         }
         // @todo Move album options menu to the album quick edit pane
         if ($item->is_album()) {
             if ($can_add) {
                 $options_menu->append(Menu::factory("dialog")->id("add_album")->label(t("Add an album"))->url(url::site("form/add/albums/{$item->id}?type=album")));
             }
             if ($can_edit) {
                 $options_menu->append(Menu::factory("dialog")->id("edit_permissions")->label(t("Edit permissions"))->url(url::site("permissions/browse/{$item->id}")));
             }
         }
     }
     if ($is_admin) {
         $menu->append($admin_menu = Menu::factory("submenu")->id("admin_menu")->label(t("Admin")));
         self::admin($admin_menu, $theme);
         foreach (module::active() as $module) {
             if ($module->name == "gallery") {
                 continue;
             }
             $class = "{$module->name}_menu";
             if (method_exists($class, "admin")) {
                 call_user_func_array(array($class, "admin"), array(&$admin_menu, $theme));
             }
         }
     }
 }
Example #13
0
 static function get($block_id, $theme)
 {
     $block = "";
     switch ($block_id) {
         case "rss_feeds":
             $feeds = array();
             foreach (module::active() as $module) {
                 $class_name = "{$module->name}_rss";
                 if (method_exists($class_name, "available_feeds")) {
                     $feeds = array_merge($feeds, call_user_func(array($class_name, "available_feeds"), $theme->item(), $theme->tag()));
                 }
             }
             if (!empty($feeds)) {
                 $block = new Block();
                 $block->css_id = "g-rss";
                 $block->title = t("Available RSS feeds");
                 $block->content = new View("rss_block.html");
                 $block->content->feeds = $feeds;
             }
             break;
     }
     return $block;
 }
Example #14
0
 function index()
 {
     if (!TEST_MODE) {
         throw new Kohana_404_Exception();
     }
     // Force strict behavior to flush out bugs early
     ini_set("display_errors", true);
     error_reporting(-1);
     // Jump through some hoops to satisfy the way that we check for the site_domain in
     // config.php.  We structure this such that the code in config will leave us with a
     // site_domain of "." (for historical reasons)
     // @todo: for tests, we should force the site_domain to something like example.com
     $_SERVER["SCRIPT_FILENAME"] = "index.php";
     $_SERVER["SCRIPT_NAME"] = "./index.php";
     $config = Kohana_Config::instance();
     $original_config = DOCROOT . "var/database.php";
     $test_config = VARPATH . "database.php";
     if (!file_exists($original_config)) {
         print "Please copy kohana/config/database.php to {$original_config}.\n";
         return;
     } else {
         copy($original_config, $test_config);
         $db_config = Kohana::config('database');
         if (empty($db_config['unit_test'])) {
             $default = $db_config['default'];
             $conn = $default['connection'];
             $config->set('database.unit_test.benchmark', $default['benchmark']);
             $config->set('database.unit_test.persistent', $default['persistent']);
             $config->set('database.unit_test.connection.type', $conn['type']);
             $config->set('database.unit_test.connection.user', $conn['user']);
             $config->set('database.unit_test.connection.pass', $conn['pass']);
             $config->set('database.unit_test.connection.host', $conn['host']);
             $config->set('database.unit_test.connection.port', $conn['port']);
             $config->set('database.unit_test.connection.socket', $conn['socket']);
             $config->set('database.unit_test.connection.database', "{$conn['database']}_test");
             $config->set('database.unit_test.character_set', $default['character_set']);
             $config->set('database.unit_test.table_prefix', $default['table_prefix']);
             $config->set('database.unit_test.object', $default['object']);
             $config->set('database.unit_test.cache', $default['cache']);
             $config->set('database.unit_test.escape', $default['escape']);
             $db_config = Kohana::config('database');
         }
         if ($db_config['default']['connection']['database'] == $db_config['unit_test']['connection']['database']) {
             print "Don't use the default database for your unit tests or you'll lose all your data.\n";
             return;
         }
         try {
             $db = Database::instance('unit_test');
             $db->connect();
             // Make this the default database for the rest of this run
             Database::set_default_instance($db);
         } catch (Exception $e) {
             print "{$e->getMessage()}\n";
             return;
         }
     }
     try {
         // Clean out the database
         if ($tables = $db->list_tables()) {
             foreach ($db->list_tables() as $table) {
                 $db->query("DROP TABLE {{$table}}");
             }
         }
         // Clean out the filesystem.  Note that this cleans out test/var/database.php, but that's ok
         // because we technically don't need it anymore.  If this is confusing, we could always
         // arrange to preserve that one file.
         @system("rm -rf test/var");
         @mkdir('test/var/logs', 0777, true);
         $active_modules = module::$active;
         // Reset our caches
         module::$modules = array();
         module::$active = array();
         module::$var_cache = array();
         $db->clear_cache();
         // Rest the cascading class path
         $config->set("core", $config->load("core"));
         // Install the active modules
         // Force gallery and user to be installed first to resolve dependencies.
         gallery_installer::install(true);
         module::load_modules();
         module::install("user");
         module::activate("user");
         $modules = $paths = array();
         foreach (module::available() as $module_name => $unused) {
             if (in_array($module_name, array("gallery", "user"))) {
                 $paths[] = MODPATH . "{$module_name}/tests";
                 continue;
             }
             if (file_exists($path = MODPATH . "{$module_name}/tests")) {
                 $paths[] = $path;
                 module::install($module_name);
                 module::activate($module_name);
             }
         }
         $config->set('unit_test.paths', $paths);
         // Trigger late-binding install actions (defined in gallery_event::user_login)
         graphics::choose_default_toolkit();
         $filter = count($_SERVER["argv"]) > 2 ? $_SERVER["argv"][2] : null;
         print new Unit_Test($modules, $filter);
     } catch (ORM_Validation_Exception $e) {
         print "Validation Exception: {$e->getMessage()}\n";
         print $e->getTraceAsString() . "\n";
         foreach ($e->validation->errors() as $field => $msg) {
             print "{$field}: {$msg}\n";
         }
     } catch (Exception $e) {
         print "Exception: {$e->getMessage()}\n";
         print $e->getTraceAsString() . "\n";
     }
 }
Example #15
0
 /**
  * Handle all theme functions that insert module content.
  */
 public function __call($function, $args)
 {
     switch ($function) {
         case "album_blocks":
         case "album_bottom":
         case "album_top":
         case "credits":
         case "dynamic_bottom":
         case "dynamic_top":
         case "footer":
         case "head":
         case "header_bottom":
         case "header_top":
         case "page_bottom":
         case "page_top":
         case "photo_blocks":
         case "photo_bottom":
         case "photo_top":
         case "resize_bottom":
         case "resize_top":
         case "sidebar_blocks":
         case "sidebar_bottom":
         case "sidebar_top":
         case "thumb_bottom":
         case "thumb_info":
         case "thumb_top":
             $blocks = array();
             foreach (module::active() as $module) {
                 $helper_class = "{$module->name}_theme";
                 if (method_exists($helper_class, $function)) {
                     $blocks[] = call_user_func_array(array($helper_class, $function), array_merge(array($this), $args));
                 }
             }
             if (Session::instance()->get("debug")) {
                 if ($function != "head") {
                     array_unshift($blocks, "<div class=\"gAnnotatedThemeBlock gAnnotatedThemeBlock_{$function} gClearFix\">" . "<div class=\"title\">{$function}</div>");
                     $blocks[] = "</div>";
                 }
             }
             return implode("\n", $blocks);
         default:
             throw new Exception("@todo UNKNOWN_THEME_FUNCTION: {$function}");
     }
 }
Example #16
0
 static function relationships($resource_type, $resource)
 {
     $results = array();
     foreach (module::active() as $module) {
         foreach (glob(MODPATH . "{$module->name}/helpers/*_rest.php") as $filename) {
             $class = str_replace(".php", "", basename($filename));
             if (method_exists($class, "relationships")) {
                 if ($tmp = call_user_func(array($class, "relationships"), $resource_type, $resource)) {
                     $results = array_merge($results, $tmp);
                 }
             }
         }
     }
     return $results;
 }
Example #17
0
 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");
 }
Example #18
0
 /**
  * Handle all theme functions that insert module content.
  */
 public function __call($function, $args)
 {
     switch ($function) {
         case "admin_credits":
         case "admin_footer":
         case "admin_header_top":
         case "admin_header_bottom":
         case "admin_page_bottom":
         case "admin_page_top":
         case "admin_head":
         case "body_attributes":
         case "html_attributes":
             $blocks = array();
             if (method_exists("gallery_theme", $function)) {
                 switch (count($args)) {
                     case 0:
                         $blocks[] = gallery_theme::$function($this);
                         break;
                     case 1:
                         $blocks[] = gallery_theme::$function($this, $args[0]);
                         break;
                     case 2:
                         $blocks[] = gallery_theme::$function($this, $args[0], $args[1]);
                         break;
                     default:
                         $blocks[] = call_user_func_array(array("gallery_theme", $function), array_merge(array($this), $args));
                 }
             }
             foreach (module::active() as $module) {
                 if ($module->name == "gallery") {
                     continue;
                 }
                 $helper_class = "{$module->name}_theme";
                 if (class_exists($helper_class) && method_exists($helper_class, $function)) {
                     $blocks[] = call_user_func_array(array($helper_class, $function), array_merge(array($this), $args));
                 }
             }
             $helper_class = theme::$admin_theme_name . "_theme";
             if (class_exists($helper_class) && method_exists($helper_class, $function)) {
                 $blocks[] = call_user_func_array(array($helper_class, $function), array_merge(array($this), $args));
             }
             if (Session::instance()->get("debug")) {
                 if ($function != "admin_head" && $function != "body_attributes") {
                     array_unshift($blocks, "<div class=\"g-annotated-theme-block g-annotated-theme-block_{$function} g-clear-fix\">" . "<div class=\"title\">{$function}</div>");
                     $blocks[] = "</div>";
                 }
             }
             return implode("\n", $blocks);
         default:
             throw new Exception("@todo UNKNOWN_THEME_FUNCTION: {$function}");
     }
 }
Example #19
0
 function Index()
 {
     if (!TEST_MODE) {
         print Kohana::show_404();
     }
     $original_config = DOCROOT . "var/database.php";
     $test_config = VARPATH . "database.php";
     if (!file_exists($original_config)) {
         print "Please copy kohana/config/database.php to {$original_config}.\n";
         return;
     } else {
         copy($original_config, $test_config);
         $db_config = Kohana::config('database');
         if (empty($db_config['unit_test'])) {
             $default = $db_config['default'];
             $conn = $default['connection'];
             Kohana::config_set('database.unit_test.benchmark', $default['benchmark']);
             Kohana::config_set('database.unit_test.persistent', $default['persistent']);
             Kohana::config_set('database.unit_test.connection.type', $conn['type']);
             Kohana::config_set('database.unit_test.connection.user', $conn['user']);
             Kohana::config_set('database.unit_test.connection.pass', $conn['pass']);
             Kohana::config_set('database.unit_test.connection.host', $conn['host']);
             Kohana::config_set('database.unit_test.connection.port', $conn['port']);
             Kohana::config_set('database.unit_test.connection.socket', $conn['socket']);
             Kohana::config_set('database.unit_test.connection.database', "{$conn['database']}_test");
             Kohana::config_set('database.unit_test.character_set', $default['character_set']);
             Kohana::config_set('database.unit_test.table_prefix', $default['table_prefix']);
             Kohana::config_set('database.unit_test.object', $default['object']);
             Kohana::config_set('database.unit_test.cache', $default['cache']);
             Kohana::config_set('database.unit_test.escape', $default['escape']);
             $db_config = Kohana::config('database');
         }
         if ($db_config['default']['connection']['database'] == $db_config['unit_test']['connection']['database']) {
             print "Don't use the default database for your unit tests or you'll lose all your data.\n";
             return;
         }
         try {
             $db = Database::instance('unit_test');
             $db->connect();
             // Make this the default database for the rest of this run
             Database::$instances = array('default' => $db);
         } catch (Exception $e) {
             print "{$e->getMessage()}\n";
             return;
         }
     }
     // Find all tests, excluding sample tests that come with the unit_test module.
     foreach (glob(MODPATH . "*/tests") as $path) {
         if ($path != MODPATH . "unit_test/tests") {
             $paths[] = $path;
         }
     }
     Kohana::config_set('unit_test.paths', $paths);
     // Clean out the database
     if ($tables = $db->list_tables()) {
         foreach ($db->list_tables() as $table) {
             $db->query("DROP TABLE {$table}");
         }
     }
     // Clean out the filesystem
     @system("rm -rf test/var");
     @mkdir('test/var/logs', 0777, true);
     // Reset our caches
     module::$modules = array();
     module::$active = array();
     module::$var_cache = array();
     $db->clear_cache();
     // Install all modules
     // Force gallery and user to be installed first to resolve dependencies.
     gallery_installer::install(true);
     module::load_modules();
     module::install("user");
     module::activate("user");
     $modules = array();
     foreach (glob(MODPATH . "*/helpers/*_installer.php") as $file) {
         $module_name = basename(dirname(dirname($file)));
         if (in_array($module_name, array("gallery", "user"))) {
             continue;
         }
         module::install($module_name);
         module::activate($module_name);
     }
     $filter = count($_SERVER["argv"]) > 2 ? $_SERVER["argv"][2] : null;
     print new Unit_Test($modules, $filter);
 }
Example #20
0
 function Index()
 {
     if (!TEST_MODE) {
         print Kohana::show_404();
     }
     // Jump through some hoops to satisfy the way that we check for the site_domain in
     // config.php.  We structure this such that the code in config will leave us with a
     // site_domain of "." (for historical reasons)
     // @todo: for tests, we should force the site_domain to something like example.com
     $_SERVER["SCRIPT_FILENAME"] = "index.php";
     $_SERVER["SCRIPT_NAME"] = "./index.php";
     $original_config = DOCROOT . "var/database.php";
     $test_config = VARPATH . "database.php";
     if (!file_exists($original_config)) {
         print "Please copy kohana/config/database.php to {$original_config}.\n";
         return;
     } else {
         copy($original_config, $test_config);
         $db_config = Kohana::config('database');
         if (empty($db_config['unit_test'])) {
             $default = $db_config['default'];
             $conn = $default['connection'];
             Kohana::config_set('database.unit_test.benchmark', $default['benchmark']);
             Kohana::config_set('database.unit_test.persistent', $default['persistent']);
             Kohana::config_set('database.unit_test.connection.type', $conn['type']);
             Kohana::config_set('database.unit_test.connection.user', $conn['user']);
             Kohana::config_set('database.unit_test.connection.pass', $conn['pass']);
             Kohana::config_set('database.unit_test.connection.host', $conn['host']);
             Kohana::config_set('database.unit_test.connection.port', $conn['port']);
             Kohana::config_set('database.unit_test.connection.socket', $conn['socket']);
             Kohana::config_set('database.unit_test.connection.database', "{$conn['database']}_test");
             Kohana::config_set('database.unit_test.character_set', $default['character_set']);
             Kohana::config_set('database.unit_test.table_prefix', $default['table_prefix']);
             Kohana::config_set('database.unit_test.object', $default['object']);
             Kohana::config_set('database.unit_test.cache', $default['cache']);
             Kohana::config_set('database.unit_test.escape', $default['escape']);
             $db_config = Kohana::config('database');
         }
         if ($db_config['default']['connection']['database'] == $db_config['unit_test']['connection']['database']) {
             print "Don't use the default database for your unit tests or you'll lose all your data.\n";
             return;
         }
         try {
             $db = Database::instance('unit_test');
             $db->connect();
             // Make this the default database for the rest of this run
             Database::$instances = array('default' => $db);
         } catch (Exception $e) {
             print "{$e->getMessage()}\n";
             return;
         }
     }
     try {
         // Find all tests, excluding sample tests that come with the unit_test module.
         foreach (glob(MODPATH . "*/tests") as $path) {
             if ($path != MODPATH . "unit_test/tests") {
                 $paths[] = $path;
             }
         }
         Kohana::config_set('unit_test.paths', $paths);
         // Clean out the database
         if ($tables = $db->list_tables()) {
             foreach ($db->list_tables() as $table) {
                 $db->query("DROP TABLE {$table}");
             }
         }
         // Clean out the filesystem
         @system("rm -rf test/var");
         @mkdir('test/var/logs', 0777, true);
         // Reset our caches
         module::$modules = array();
         module::$active = array();
         module::$var_cache = array();
         $db->clear_cache();
         // Rest the cascading class path
         Kohana::config_set("core", Kohana::config_load("core"));
         // Install all modules
         // Force gallery and user to be installed first to resolve dependencies.
         gallery_installer::install(true);
         module::load_modules();
         module::install("user");
         module::activate("user");
         $modules = array();
         foreach (glob(MODPATH . "*/helpers/*_installer.php") as $file) {
             $module_name = basename(dirname(dirname($file)));
             if (in_array($module_name, array("gallery", "user"))) {
                 continue;
             }
             module::install($module_name);
             module::activate($module_name);
         }
         // Trigger late-binding install actions (defined in gallery_event::user_login)
         graphics::choose_default_toolkit();
         $filter = count($_SERVER["argv"]) > 2 ? $_SERVER["argv"][2] : null;
         print new Unit_Test($modules, $filter);
     } catch (Exception $e) {
         print "Exception: {$e->getMessage()}\n";
         print $e->getTraceAsString() . "\n";
     }
 }
Example #21
0
 /**
  * Handle all theme functions that insert module content.
  */
 public function __call($function, $args)
 {
     switch ($function) {
         case "album_blocks":
         case "album_bottom":
         case "album_top":
         case "body_attributes":
         case "credits":
         case "dynamic_bottom":
         case "dynamic_top":
         case "footer":
         case "head":
         case "header_bottom":
         case "header_top":
         case "page_bottom":
         case "page_top":
         case "photo_blocks":
         case "photo_bottom":
         case "photo_top":
         case "resize_bottom":
         case "resize_top":
         case "sidebar_blocks":
         case "sidebar_bottom":
         case "sidebar_top":
         case "thumb_bottom":
         case "thumb_info":
         case "thumb_top":
             $blocks = array();
             if (method_exists("gallery_theme", $function)) {
                 switch (count($args)) {
                     case 0:
                         $blocks[] = gallery_theme::$function($this);
                         break;
                     case 1:
                         $blocks[] = gallery_theme::$function($this, $args[0]);
                         break;
                     case 2:
                         $blocks[] = gallery_theme::$function($this, $args[0], $args[1]);
                         break;
                     default:
                         $blocks[] = call_user_func_array(array("gallery_theme", $function), array_merge(array($this), $args));
                 }
             }
             foreach (module::active() as $module) {
                 if ($module->name == "gallery") {
                     continue;
                 }
                 $helper_class = "{$module->name}_theme";
                 if (method_exists($helper_class, $function)) {
                     $blocks[] = call_user_func_array(array($helper_class, $function), array_merge(array($this), $args));
                 }
             }
             if ($function == "head") {
                 array_unshift($blocks, $this->combine_files($this->css, "css"));
                 array_unshift($blocks, $this->combine_files($this->scripts, "javascript"));
             }
             if (Session::instance()->get("debug")) {
                 if ($function != "head") {
                     array_unshift($blocks, "<div class=\"gAnnotatedThemeBlock gAnnotatedThemeBlock_{$function} gClearFix\">" . "<div class=\"title\">{$function}</div>");
                     $blocks[] = "</div>";
                 }
             }
             return implode("\n", $blocks);
         default:
             throw new Exception("@todo UNKNOWN_THEME_FUNCTION: {$function}");
     }
 }
Example #22
0
	</thead>
	<tbody align="left" valign="middle">
	<?php 
    foreach ($modules as $module => $version) {
        ?>
		<tr>
			<td><?php 
        echo html::anchor('admin/' . $module, $module);
        ?>
</td>
			<td>
			<?php 
        if (module::installed($module)) {
            ?>
				<?php 
            if (module::active($module)) {
                ?>
					<?php 
                echo html::anchor('admin/modules/status/' . $module . '/off', __('disable'));
                ?>
				<?php 
            } else {
                ?>
					<?php 
                echo html::anchor('admin/modules/status/' . $module . '/on', __('enable'));
                ?>
				<?php 
            }
            ?>
			<?php 
        } else {