Example #1
0
 /**
  * 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();
     }
 }