/** * The main routing function. Keeps track * on which controllers and views to run. * * @param array $config The configuration array */ public function route($config) { self::$query_loader = new Query($config['servers']['host'], $config['servers']['port']); self::$viewport = new Viewport(); self::$config = $config; // Verify that PHPElasticManager is installed $this->verifyInstalled(); // Get the location from the q parameter $location = $this->getLocation(); // Verify that the file exists $this->verifyClassExists($location['master']); // If we are not in query phase, remove all instances of manual queries $response_message = ''; if ($location['master'] != 'query') { $response_message = isset($_SESSION['query_response']) ? $_SESSION['query_response'] : ''; unset($_SESSION['query_response']); unset($_SESSION['query_path']); unset($_SESSION['query_method']); unset($_SESSION['query_query']); unset($_SESSION['query_redirect']); } // Check if logged in else redirect to login page if ($this->loggedIn() == false && $location['master'] != 'user') { $this->redirect('user/login'); } // Load the controller file require_once 'modules/' . $location['master'] . '/controller/' . $location['master'] . '.php'; $controller_name = 'controller' . $location['master']; // Load the controller $controller = new $controller_name(); // Check if the method exists if (method_exists($controller, 'page_' . $location['secondary'])) { // Run the controller $vars = $controller->{'page_' . $location['secondary']}($location['args']); } else { // Run index from the first parameter array_unshift($location['args'], $location['secondary']); $vars = $controller->page_index($location['args']); } // Get the menus from the controllers $vars['menus'] = $this->getMenus(); // If response message exists output it $vars['response_message'] = ''; if ($response_message) { $vars['response_message'] = self::$query_loader->prettyJson(json_encode($response_message)); } // Only render if return values exists if (isset($vars['content'])) { // Check validation mode $vars['validate'] = isset($_SESSION['query_validation']) && $_SESSION['query_validation'] ? 'checked' : ''; // Always load the leftblock $vars['leftblock'] = ''; if ($this->loggedIn()) { $left_block = $this->loadLeftBlock(); $vars['leftblock'] = $left_block['content']; } // Render the last things self::$viewport->render('page', $vars, false); self::$viewport->createPage(); } }