public function getItemPath($class) { $manifest = ClassManifest::get_class_manifest(); if (isset($manifest[$class])) { return $manifest[$class]['path']; } }
/** * */ public static function route() { $url = $_GET['url']; $base = ConfigManifest::get_config('BasePath'); if ($base && $base != '/' && strpos($url, $base) === 0) { $url = substr($url, strlen($base)); } if (empty($url)) { $url = '/'; } $parts = explode('/', $url); array_shift($parts); $response = new View(); $action = "index"; if (count($parts) == 1 && $parts[0] == "") { $parts[0] = 'home'; } if (count($parts) > 1 && $parts[1] != "") { $action = trim($parts[1]); } $processed = false; if ($parts[0] && ClassManifest::has_class($parts[0]) && ClassManifest::is_a($parts[0], 'Controller')) { $page = new Page(); $page->ID = -1; $page->URLSegment = $parts[0]; $page->Title = 'Default Controller'; $controller = new $parts[0](); if (method_exists($controller, 'getDefaultRecord')) { $page = $controller->getDefaultRecord(); } $controller->setRecord($page); $response->setController($controller); if (method_exists($controller, $action)) { $response->setContents($controller->{$action}()); $processed = true; } } else { if ($page = Page::find_one("URLSegment = '" . DB::raw2sql($parts[0]) . "'")) { $controller = $page->getController(); $response->setController($controller); if (method_exists($controller, $action)) { $response->setContents($controller->{$action}()); $processed = true; } } } if (!$processed) { $controller = new NotFoundController(); $page = $controller->getDefaultRecord(); $controller->setRecord($page); $response->setController($controller); $response->setContents($controller->index()); } if (!headers_sent()) { http_response_code($controller->getHTTPCode()); } echo $response->render(); }
public function getController() { $controllerClass = $this->ClassName . 'Controller'; if (ClassManifest::has_class($controllerClass)) { $controller = new $controllerClass(); } else { $controller = new PageController(); } $controller->setRecord($this); return $controller; }
/** * @return string|void */ public function index() { $classes = ClassManifest::subclasses_for('Record'); $str = '<p>Data base building</p>'; $str .= '<ul>'; foreach ($classes as $class) { if ($class != 'Record') { $str .= Record::make_table($class); } } $str .= '</ul>'; return $str; }
public function base_class() { $class = get_called_class(); $ancestry = array_merge(array($class), ClassManifest::get_ancestry($class)); $baseClass = $class; foreach ($ancestry as $current) { if (!Record::unreadable_class($current)) { $baseClass = $current; } } return $baseClass; }
/** * @return mixed|null */ public static function get_class_manifest() { if (!self::$class_manifest) { self::$class_manifest = unserialize(file_get_contents(TEMP_PATH . '/class_manifest')); } return self::$class_manifest; }
public static function reload_manifest() { self::build_file_manifest(BASE_PATH); ClassManifest::make_manifest(); ConfigManifest::make_manifest(); }