private static function load_page_files() { if (count(self::$content_pages)) { return self::$content_pages; } $has_apc = extension_loaded('apc') && ini_get('apc.enabled'); $slugs_cache = $has_apc && !self::is_fw4() ? apc_fetch($_SERVER['HTTP_HOST'] . '_slugs_' . language()) : false; $slugs_reverse_cache = $has_apc && !self::is_fw4() ? apc_fetch($_SERVER['HTTP_HOST'] . '_slugs_reverse_' . language()) : false; $titles_cache = $has_apc && !self::is_fw4() ? apc_fetch($_SERVER['HTTP_HOST'] . '_titles') : false; if ($handle = opendir(CONTENTPATH . self::$content_prefix)) { while (false !== ($file = readdir($handle))) { $path_info = pathinfo($file); if (isset($path_info['extension']) && $path_info['extension'] == "php") { include CONTENTPATH . self::$content_prefix . $path_info['filename'] . '.php'; } else { if (is_dir(CONTENTPATH . self::$content_prefix . $file) && file_exists(CONTENTPATH . self::$content_prefix . $file . '/' . $file . '.php')) { include CONTENTPATH . self::$content_prefix . $file . '/' . $file . '.php'; } } $classname = str_replace('-', '_', ucfirst(strtolower($file))); if (class_exists($classname)) { $page = new $classname(); if ($slugs_cache === false) { $class = new ReflectionClass($page); foreach ($class->getMethods(ReflectionMethod::IS_PUBLIC) as $method) { if ($method->class != $classname || $method->name == '__construct') { continue; } if (strstr($method->name, '_')) { $route = new Route(strtolower($file) . '/' . str_replace('_', '-', strtolower($method->name)), $method->name, ROUTE_DEFAULT, ucfirst($method->name)); $route->set_classname($classname); $route->set_contentname($file); self::setup_route($route); } $route = new Route(strtolower($file) . '/' . strtolower($method->name), $method->name, ROUTE_DEFAULT, ucfirst($method->name)); $route->set_classname($classname); $route->set_contentname($file); self::setup_route($route); } foreach ($page->get_routes() as $route) { self::setup_route($route); } } self::$content_pages[str_replace('-', '_', strtolower($file))] = $page; } } closedir($handle); if ($slugs_cache !== false) { self::$slugs = $slugs_cache; self::$slugs_reverse = $slugs_reverse_cache; self::$titles = $titles_cache; } else { if ($has_apc) { apc_store($_SERVER['HTTP_HOST'] . '_slugs_' . language(), self::$slugs, 60 * 60 * 3); apc_store($_SERVER['HTTP_HOST'] . '_slugs_reverse_' . language(), self::$slugs_reverse, 60 * 60 * 3); apc_store($_SERVER['HTTP_HOST'] . '_titles', self::$titles, 60 * 60 * 3); } } } }