X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FApp%2FArguments.php;h=6f527d2f4def937fa4a7619690455422f98253cb;hb=ba760bb3409e559f11f2b8b37448f8294127d950;hp=a7cb37f28906319065b4f44333b3fb37277dac65;hpb=2a431b580f2e8f6a596e84175932e793678cde63;p=friendica.git diff --git a/src/App/Arguments.php b/src/App/Arguments.php index a7cb37f289..6f527d2f4d 100644 --- a/src/App/Arguments.php +++ b/src/App/Arguments.php @@ -1,6 +1,6 @@ queryString = $queryString; $this->command = $command; + $this->moduleName = $moduleName; $this->argv = $argv; $this->argc = $argc; + $this->method = $method; } /** @@ -66,27 +78,56 @@ class Arguments /** * @return string The whole command of this call */ - public function getCommand() + public function getCommand(): string { return $this->command; } + /** + * @return string The module name based on the arguments + * @deprecated 2022.12 - With the new (sub-)routes, it's not trustworthy anymore, use the ModuleClass instead + * @see Router::getModuleClass() + */ + public function getModuleName(): string + { + return $this->moduleName; + } + /** * @return array All arguments of this call */ - public function getArgv() + public function getArgv(): array { return $this->argv; } + /** + * @return string The used HTTP method + */ + public function getMethod(): string + { + return $this->method; + } + /** * @return int The count of arguments of this call */ - public function getArgc() + public function getArgc(): int { return $this->argc; } + public function setArgv(array $argv) + { + $this->argv = $argv; + $this->argc = count($argv); + } + + public function setArgc(int $argc) + { + $this->argc = $argc; + } + /** * Returns the value of a argv key * @todo there are a lot of $a->argv usages in combination with ?? which can be replaced with this method @@ -106,7 +147,7 @@ class Arguments * * @return bool if the argument position exists */ - public function has(int $position) + public function has(int $position): bool { return array_key_exists($position, $this->argv); } @@ -119,7 +160,7 @@ class Arguments * * @return Arguments The determined arguments */ - public function determine(array $server, array $get) + public function determine(array $server, array $get): Arguments { // removing leading / - maybe a nginx problem $server['QUERY_STRING'] = ltrim($server['QUERY_STRING'] ?? '', '/'); @@ -161,6 +202,20 @@ class Arguments $queryString = $command . ($queryParameters ? '?' . http_build_query($queryParameters) : ''); - return new Arguments($queryString, $command, $argv, $argc); + if ($argc > 0) { + $module = str_replace('.', '_', $argv[0]); + $module = str_replace('-', '_', $module); + } else { + $module = self::DEFAULT_MODULE; + } + + // Compatibility with the Firefox App + if (($module == "users") && ($command == "users/sign_in")) { + $module = "login"; + } + + $httpMethod = in_array($server['REQUEST_METHOD'] ?? '', Router::ALLOWED_METHODS) ? $server['REQUEST_METHOD'] : Router::GET; + + return new Arguments($queryString, $command, $module, $argv, $argc, $httpMethod); } }