function end_slot() { $slot_name = mfConfig::get('mf.response.view.slots'); if (!$slot_name) { throw new mfException("end_slot() should follow with a slot() function"); } $response = mfResponse::getInstance(); $content = ob_get_clean(); $response->setSlot($slot_name, $content); // empty it mfConfig::set('mf.response.view.slots', NULL); }
public function process_response() { if (!mfConfig::get('enable_toolbar', false)) { return; } $params = array('logs' => mfLogger::getLogs()); $params = array_merge($params, mfController::getMagicViewVars()); list($tpl, $view_class) = findTemplateFileName(MF_CORE_DIR . DS . 'default' . DS . 'toolbar'); $toolbar = new $view_class($tpl, $params); $response = mfResponse::getInstance(); $new_body = str_replace('</body>', $toolbar->getOutput() . '</body>', $response->getBody()); $response->setBody($new_body); }
public static function dispatch() { // Initial middleware classes $middleware_classes = mfConfig::get('middlewares', array()); $middlewares = array(); foreach ($middleware_classes as $middleware_class) { require_once "middleware/{$middleware_class}.php"; $middlewares[] = new $middleware_class(); } // =========================================== // start process request $request = mfRequest::getInstance(); foreach ($middlewares as $middleware) { if (method_exists($middleware, 'process_request')) { $middleware->process_request($request); } } // end process request // =========================================== // Core Process $controller = $request->getController(); $action = $request->getAction(); $controller_class = ucfirst($controller) . 'Controller'; if (!class_exists($controller_class)) { throw new MfException("Can't find Controller: {$controller_class}"); } $controller = new $controller_class(); if (!$controller instanceof mfController) { throw new MfException("Controller:{$controller_class} must extend from mfController class"); } $controller->execute($action . 'Action', $request); // End Core Process // =========================================== // start process response $response = mfResponse::getInstance(); // response middleware process in the reverse direction foreach (array_reverse($middlewares) as $middleware) { if (method_exists($middleware, 'process_response')) { $middleware->process_response($response); } } // end process response }
private function __construct() { // strip the slashes... if (get_magic_quotes_gpc() == true) { $_REQUEST = array_map('stripslashes', $_REQUEST); } $this->parameters = $_REQUEST; // TODO GET POST and URL embed // if (!mfConfig::get('url_rewrite') && strpos($_SERVER['REQUEST_URI'], $_SERVER['SCRIPT_NAME']) == 0) { $path_info = isset($_SERVER['PATH_INFO']) ? $_SERVER['PATH_INFO'] : '/'; } else { $query_str = $_SERVER['QUERY_STRING']; $path_info = $_SERVER['REQUEST_URI']; // trim the query string if ($query_str) { // +1 means the '?' before query string $path_info = substr($_SERVER['REQUEST_URI'], 0, -(strlen($query_str) + 1)); } } $this->setParameter('request_path_info', $path_info); }
/** * respond for certern format */ public function respond($formats) { foreach ($formats as $format => $params) { if ($this->getRequestParameter('format') == $format) { // layout if (isset($params['layout']) && $params['layout'] == false) { $this->setLayout(false); } // check mime-types // Load mime types $mimes = sfYaml::load(ROOT_DIR . DS . 'config' . DS . 'mime.yml'); if (isset($mimes[$format])) { $header = 'Content-Type: ' . $mimes[$format] . '; charset=' . mfConfig::get('encode'); mfResponse::getInstance()->header($header); } break; } } }
function findTemplateFileName($file_without_ext) { $format = mfRequest::getInstance()->getParameter('format', 'html'); // choose the right view class by the file extension found $associations = mfConfig::get('mf.view.classes', array()); foreach ($associations as $association) { if (file_exists($file = $file_without_ext . ".{$format}." . $association['extension']) || file_exists($file = $file_without_ext . '.' . $association['extension']) || file_exists($file = $file_without_ext . '.html.' . $association['extension'])) { $view_class = $association['class']; break; } } if (!isset($view_class)) { throw new mfException("Can't find template: {$file_without_ext}.{format}.php"); } return array($file, $view_class); }
/** * Log method * * @param string $type log type: route, controller view or something * @param string $msg */ public static function log($type, $msg) { if (mfConfig::get('enable_log')) { self::$_logs[] = array('type' => $type, 'message' => $msg, 'time' => time()); } }
public static function registerViewClasses() { $classes = array(); $views = mfConfig::get('views'); foreach ($views as $view) { $classes[] = call_user_func(array($view, 'register')); } mfConfig::set('mf.view.classes', $classes); }