/** * @param mixed $url * @return string */ public static function url($url = null) { if ($url === null) { $http = env('HTTPS') ? 'https://' : 'http://'; return $http . env('HTTP_HOST') . env('REQUEST_URI'); } $routedUrl = $url; if (is_array($url)) { if (is_admin() || isset($url['admin']) && $url['admin'] === true) { if (isset($url['ajax']) && $url['ajax'] === true) { $routedUrl = admin_url('admin-ajax.php'); } else { $routedUrl = get_admin_url(); } } else { $routedUrl = get_site_url(); } $routedUrl = trim($routedUrl, '/'); $urlParams = array(); if (isset($url['controller'])) { $urlParams['gummcontroller'] = $url['controller']; } if (isset($url['action'])) { $urlParams['action'] = GUMM_FW_PREFIX . $url['action']; } $requestParams = GummRouter::getUrlParams($url); foreach ($requestParams['params'] as $value) { $urlParams['gummparams[]'] = $value; } foreach ($requestParams['named'] as $param => $value) { $urlParams["gummnamed[{$param}]"] = $value; } $routedUrl .= $urlParams ? '?' . http_build_query($urlParams) : ''; } return $routedUrl; }
/** * @param array $callback * @param mixed $params * @return void */ public function requestAction($requested, $render = true) { if (!isset($requested['controller'])) { if (is_a($this, 'View')) { if (isset($this->controller)) { $requested['controller'] = str_replace('_controller', '', Inflector::underscore(get_class($this->controller))); } } } if (!isset($requested['controller']) || !isset($requested['action'])) { return false; } $callback = GummDispatcher::getCallbackToDispatch($requested); if (!$callback) { return false; } $args = GummRouter::getUrlParams($requested); $params = $args['params']; $controller =& $callback[0]; $controller->startupProcess(); $return = call_user_func_array($callback, $params); if ($render === false) { ob_start(); $controller->shutdownProcess(false); $return = ob_get_clean(); } else { $controller->shutdownProcess(false); } return $return; }