<?php
/**
- * @copyright Copyright (C) 2010-2021, the Friendica project
+ * @copyright Copyright (C) 2010-2022, the Friendica project
*
* @license GNU AGPL version 3 or any later version
*
*/
class Arguments
{
+ const DEFAULT_MODULE = 'home';
+
/**
* @var string The complete query string
*/
* @var string The current Friendica command
*/
private $command;
+ /**
+ * @var string The name of the current module
+ */
+ private $moduleName;
/**
* @var array The arguments of the current execution
*/
* @var int The count of arguments
*/
private $argc;
+ /**
+ * @var string The used HTTP method
+ */
+ private $method;
- public function __construct(string $queryString = '', string $command = '', array $argv = [], int $argc = 0)
+ public function __construct(string $queryString = '', string $command = '', string $moduleName = '', array $argv = [], int $argc = 0, string $method = Router::GET)
{
$this->queryString = $queryString;
$this->command = $command;
+ $this->moduleName = $moduleName;
$this->argv = $argv;
$this->argc = $argc;
+ $this->method = $method;
}
/**
return $this->command;
}
+ /**
+ * @return string The module name based on the arguments
+ */
+ public function getModuleName(): string
+ {
+ return $this->moduleName;
+ }
+
/**
* @return array All arguments of this call
*/
return $this->argv;
}
+ /**
+ * @return string The used HTTP method
+ */
+ public function getMethod()
+ {
+ return $this->method;
+ }
+
/**
* @return int The count of arguments of this call
*/
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
$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);
}
}