public function resolve(Request $request, Response $response) { // Then request params if (empty($locale)) { $locale = $request->meta('locale'); } // User preference if (empty($request->user)) { $locale = @$request->user['locale']; } // Accept from HTTP headers if (empty($locale)) { $locale = Locale::acceptFromHttp($request->header('Accept-Language')); } // TODO: Use Locale::lookup(); and its fallback mechanism for $this->defaultLocale. // TODO: Locale::getPrimaryLanguage() should be useful. // Default locale if (empty($locale)) { $locale = $this->defaultLocale; } if (!empty($locale)) { if ($request->meta('locale') != $locale) { $response->cookie('__locale', $locale, FRAMEWORK_COOKIE_EXPIRE_TIME, '/'); } $response->translation(new Translation($locale)); } }
function resolve(Request $request, Response $response) { if ($response->status() != 200) { return; // only normal response will be processed } foreach ((array) $request->meta('output') as $outputFilter) { // format: func([param1[,param2[,param3 ...]]]) if (preg_match('/(\\w+)\\(([\\w\\s,]*)\\)/', $outputFilter, $matches)) { $func = @$this->funcMap[$matches[1]]; if (is_callable($func)) { if (@$matches[2]) { $func = call_user_func_array($func, explode(',', $matches[2])); } if (is_callable($func)) { try { $response->send(call_user_func_array($func, array($response->body()))); } catch (\Exception $e) { Log::error(sprintf('[InvokerPostProcessor] Error calling %s(): %s @ %s:%d', $matches[1], $e->getMessage(), basename($e->getFile()), $e->getLine()), $e->getTrace()); $response->send(array('error' => $e->getMessage(), 'code' => $e->getCode()), 500); } } } } } }
public function resolve(Request $req, Response $res) { $req->user = new User(); // User from CLI switch ($req->client('type')) { case 'cli': // Retrieve user context from process data, then CLI argument. $userId = (int) Process::get('type'); if (!$userId) { $req->cli()->options('u', array('alias' => 'user', 'type' => 'integer', 'describe' => 'Idenitfier of target context user.')); $userId = (int) $req->meta('user'); } if ($userId) { $req->user->load($userId); } unset($userId); break; default: // Session ID provided, validate it. $sid = $req->meta('sid'); if ($sid) { $ret = Session::ensure($sid, $req->meta('token'), $req->fingerprint()); // Session doesn't exist, delete the cookie. if ($ret === false || $ret === Session::ERR_EXPIRED) { $res->cookie('__sid', '', time() - 3600); } else { if (is_integer($ret)) { switch ($ret) { // note: System should treat as public user. case Session::ERR_INVALID: break; } } else { // Success, proceed. $req->user->load(Session::current('username')); unset($req->user->password); } } } else { if ($this->setupSession && !@\core\Node::get('User')) { $req->user->data(['id' => 0, 'groups' => ['Administrators'], 'username' => '__default']); } } break; } }