Example #1
0
 static function perform_controller_action($class_path, $action, $objects, $parameters)
 {
     //We treat 'new' the same as 'edit', since they generally contain a lot of the same code
     if ($action == "new") {
         $action = "edit";
     }
     //Let's look for a controller
     $controller_path = App::$site . "/controllers/" . $class_path . "_controller.php";
     if (file_exists($controller_path)) {
         require_once $controller_path;
         $class_path_components = explode("/", $class_path);
         $class = $class_path_components[count($class_path_components) - 1];
         $class[0] = strtoupper($class[0]);
         $class = preg_replace_callback('/_([a-z])/', create_function('$c', 'return strtoupper($c[1]);'), $class);
         $controller_class = $class . "Controller";
         if (!method_exists($controller_class, $action)) {
             if (Router::render_view($class_path, $action)) {
                 exit;
             } else {
                 fatal_error("{$controller_class} does not respond to {$action}");
             }
         }
         $controller = new $controller_class();
         $controller->parameters = $parameters;
         call_user_func_array(array($controller, $action), $objects);
         exit;
     }
     //If no controller was found, we'll look for a view
     if (Router::render_view($class_path, $action)) {
         exit;
     }
 }