Merge branch 'friendica:develop' into doc_faq_client-clean-up

This commit is contained in:
foss- 2021-11-21 01:09:31 +01:00 committed by GitHub
commit 3bae52074a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
290 changed files with 2713 additions and 2817 deletions

View File

@ -566,7 +566,6 @@ Here is a complete list of all hook callbacks with file locations (as of 24-Sep-
Hook::callAll($a->module.'_mod_init', $placeholder);
Hook::callAll($a->module.'_mod_init', $placeholder);
Hook::callAll($a->module.'_mod_post', $_POST);
Hook::callAll($a->module.'_mod_afterpost', $placeholder);
Hook::callAll($a->module.'_mod_content', $arr);
Hook::callAll($a->module.'_mod_aftercontent', $arr);
Hook::callAll('page_end', DI::page()['content']);

View File

@ -177,7 +177,7 @@ Friendica supports [Mastodon API](help/API-Mastodon) and [Twitter API](help/api)
* [AndStatus](http://andstatus.org) ([F-Droid](https://f-droid.org/repository/browse/?fdid=org.andstatus.app), [Google Play](https://play.google.com/store/apps/details?id=org.andstatus.app))
* [B4X for Pleroma & Mastodon](https://github.com/AnywhereSoftware/B4X-Pleroma)
* [DiCa](https://dica.mixi.cool/) (Available at Google Play)
* DiCa ([Google Play](https://play.google.com/store/apps/details?id=cool.mixi.dica), last updated 2019)
* [Fedi](https://play.google.com/store/apps/details?id=com.fediverse.app)
* [Fedilab](https://fedilab.app) ([F-Droid](https://f-droid.org/app/fr.gouv.etalab.mastodon), [Google Play](https://play.google.com/store/apps/details?id=app.fedilab.android))
* [Friendiqa](https://git.friendi.ca/lubuwest/Friendiqa) ([F-Droid](https://git.friendi.ca/lubuwest/Friendiqa#install), [Google Play](https://play.google.com/store/apps/details?id=org.qtproject.friendiqa))

View File

@ -202,7 +202,6 @@ Eine komplette Liste aller Hook-Callbacks mit den zugehörigen Dateien (am 01-Ap
Hook::callAll($a->module.'_mod_init', $placeholder);
Hook::callAll($a->module.'_mod_init', $placeholder);
Hook::callAll($a->module.'_mod_post', $_POST);
Hook::callAll($a->module.'_mod_afterpost', $placeholder);
Hook::callAll($a->module.'_mod_content', $arr);
Hook::callAll($a->module.'_mod_aftercontent', $arr);
Hook::callAll('page_end', DI::page()['content']);

View File

@ -186,7 +186,7 @@ Friendica unterstützt [Mastodon API](help/API-Mastodon) und [Twitter API](help/
* [AndStatus](http://andstatus.org) ([F-Droid](https://f-droid.org/repository/browse/?fdid=org.andstatus.app), [Google Play](https://play.google.com/store/apps/details?id=org.andstatus.app))
* [B4X for Pleroma & Mastodon](https://github.com/AnywhereSoftware/B4X-Pleroma)
* [DiCa](https://dica.mixi.cool/) (Gibt es bei Google Play)
* DiCa ([Google Play](https://play.google.com/store/apps/details?id=cool.mixi.dica), letztes Update 2019)
* [Fedi](https://play.google.com/store/apps/details?id=com.fediverse.app)
* [Fedilab](https://fedilab.app) ([F-Droid](https://f-droid.org/app/fr.gouv.etalab.mastodon), [Google Play](https://play.google.com/store/apps/details?id=app.fedilab.android))
* [Friendiqa](https://git.friendi.ca/lubuwest/Friendiqa) (Gibt es im Google Playstore oder als [binary Repository](https://freunde.ma-nic.de/display/3e98eba8185a13c5bdbf3d1539646854) für F-Droid)

File diff suppressed because it is too large Load Diff

View File

@ -41,10 +41,11 @@ $a = \Friendica\DI::app();
\Friendica\DI::mode()->setExecutor(\Friendica\App\Mode::INDEX);
$a->runFrontend(
$dice->create(\Friendica\App\Module::class),
$dice->create(\Friendica\App\ModuleController::class),
$dice->create(\Friendica\App\Router::class),
$dice->create(\Friendica\Core\PConfig\Capability\IManagePersonalConfigValues::class),
$dice->create(\Friendica\Security\Authentication::class),
$dice->create(\Friendica\App\Page::class),
$dice,
$start_time
);

View File

@ -40,7 +40,7 @@ use Friendica\Protocol\DFRN;
function display_init(App $a)
{
if (ActivityPub::isRequest()) {
Objects::rawContent(['guid' => DI::args()->getArgv()[1] ?? null]);
(new Objects(DI::l10n(), ['guid' => DI::args()->getArgv()[1] ?? null]))->rawContent();
}
if (DI::config()->get('system', 'block_public') && !Session::isAuthenticated()) {

View File

@ -130,6 +130,15 @@ function editpost_content(App $a)
'$cancel' => DI::l10n()->t('Cancel'),
'$rand_num' => Crypto::randomDigits(12),
// Formatting button labels
'$edbold' => DI::l10n()->t('Bold'),
'$editalic' => DI::l10n()->t('Italic'),
'$eduline' => DI::l10n()->t('Underline'),
'$edquote' => DI::l10n()->t('Quote'),
'$edcode' => DI::l10n()->t('Code'),
'$edurl' => DI::l10n()->t('Link'),
'$edattach' => DI::l10n()->t('Link or Media'),
//jot nav tab (used in some themes)
'$message' => DI::l10n()->t('Message'),
'$browser' => DI::l10n()->t('Browser'),

View File

@ -122,7 +122,7 @@ function unfollow_process(string $url)
$owner = User::getOwnerDataById($uid);
if (!$owner) {
\Friendica\Module\Security\Logout::init();
(new \Friendica\Module\Security\Logout())->init();
// NOTREACHED
}

View File

@ -32,6 +32,7 @@ use Friendica\Database\DBA;
use Friendica\DI;
use Friendica\Model\Photo;
use Friendica\Model\User;
use Friendica\Module\BaseApi;
use Friendica\Object\Image;
use Friendica\Util\Images;
use Friendica\Util\Strings;
@ -55,8 +56,7 @@ function wall_upload_post(App $a, $desktopmode = true)
return;
}
} else {
$user_info = api_get_user();
$user = DBA::selectFirst('owner-view', ['id', 'uid', 'nickname', 'page-flags'], ['nickname' => $user_info['screen_name'], 'blocked' => false]);
$user = DBA::selectFirst('owner-view', ['id', 'uid', 'nickname', 'page-flags'], ['uid' => BaseApi::getCurrentUserID(), 'blocked' => false]);
}
} else {
if ($r_json) {

View File

@ -21,10 +21,11 @@
namespace Friendica;
use Dice\Dice;
use Exception;
use Friendica\App\Arguments;
use Friendica\App\BaseURL;
use Friendica\App\Module;
use Friendica\App\ModuleController;
use Friendica\Core\Config\Factory\Config;
use Friendica\Module\Maintenance;
use Friendica\Security\Authentication;
@ -566,16 +567,16 @@ class App
*
* This probably should change to limit the size of this monster method.
*
* @param App\Module $module The determined module
* @param App\ModuleController $module The determined module
* @param App\Router $router
* @param IManagePersonalConfigValues $pconfig
* @param Authentication $auth The Authentication backend of the node
* @param App\Page $page The Friendica page printing container
* @param Authentication $auth The Authentication backend of the node
* @param App\Page $page The Friendica page printing container
*
* @throws HTTPException\InternalServerErrorException
* @throws \ImagickException
*/
public function runFrontend(App\Module $module, App\Router $router, IManagePersonalConfigValues $pconfig, Authentication $auth, App\Page $page, float $start_time)
public function runFrontend(App\ModuleController $module, App\Router $router, IManagePersonalConfigValues $pconfig, Authentication $auth, App\Page $page, Dice $dice, float $start_time)
{
$this->profiler->set($start_time, 'start');
$this->profiler->set(microtime(true), 'classinit');
@ -702,17 +703,17 @@ class App
$page['page_title'] = $moduleName;
if (!$this->mode->isInstall() && !$this->mode->has(App\Mode::MAINTENANCEDISABLED)) {
$module = new Module('maintenance', Maintenance::class);
$module = new ModuleController('maintenance', new Maintenance($this->l10n));
} else {
// determine the module class and save it to the module instance
// @todo there's an implicit dependency due SESSION::start(), so it has to be called here (yet)
$module = $module->determineClass($this->args, $router, $this->config);
$module = $module->determineClass($this->args, $router, $this->config, $dice);
}
// Let the module run it's internal process (init, get, post, ...)
$module->run($this->l10n, $this->baseURL, $this->logger, $this->profiler, $_SERVER, $_POST);
} catch (HTTPException $e) {
ModuleHTTPException::rawContent($e);
(new ModuleHTTPException())->rawContent($e);
}
$page->run($this, $this->baseURL, $this->mode, $module, $this->l10n, $this->profiler, $this->config, $pconfig);

View File

@ -139,14 +139,14 @@ class Mode
/**
* Checks if the site is called via a backend process
*
* @param bool $isBackend True, if the call is from a backend script (daemon, worker, ...)
* @param Module $module The pre-loaded module (just name, not class!)
* @param array $server The $_SERVER variable
* @param MobileDetect $mobileDetect The mobile detection library
* @param bool $isBackend True, if the call is from a backend script (daemon, worker, ...)
* @param ModuleController $module The pre-loaded module (just name, not class!)
* @param array $server The $_SERVER variable
* @param MobileDetect $mobileDetect The mobile detection library
*
* @return Mode returns the determined mode
*/
public function determineRunMode(bool $isBackend, Module $module, array $server, MobileDetect $mobileDetect)
public function determineRunMode(bool $isBackend, ModuleController $module, array $server, MobileDetect $mobileDetect)
{
foreach (self::BACKEND_CONTENT_TYPES as $type) {
if (strpos(strtolower($server['HTTP_ACCEPT'] ?? ''), $type) !== false) {

View File

@ -21,8 +21,9 @@
namespace Friendica\App;
use Dice\Dice;
use Friendica\App;
use Friendica\BaseModule;
use Friendica\Capabilities\ICanHandleRequests;
use Friendica\Core;
use Friendica\Core\Config\Capability\IManageConfigValues;
use Friendica\LegacyModule;
@ -38,7 +39,7 @@ use Psr\Log\LoggerInterface;
/**
* Holds the common context of the current, loaded module
*/
class Module
class ModuleController
{
const DEFAULT = 'home';
const DEFAULT_CLASS = Home::class;
@ -77,18 +78,13 @@ class Module
/**
* @var string The module name
*/
private $moduleName;
/**
* @var ?ICanHandleRequests The module object
*/
private $module;
/**
* @var BaseModule The module class
*/
private $module_class;
/**
* @var array The module parameters
*/
private $module_parameters;
/**
* @var bool true, if the module is a backend module
*/
@ -103,40 +99,31 @@ class Module
* @return string
*/
public function getName()
{
return $this->moduleName;
}
/**
* @return ?ICanHandleRequests The base module object
*/
public function getModule(): ?ICanHandleRequests
{
return $this->module;
}
/**
* @return string The base class name
*/
public function getClassName()
{
return $this->module_class;
}
/**
* @return array The module parameters extracted from the route
*/
public function getParameters()
{
return $this->module_parameters;
}
/**
* @return bool True, if the current module is a backend module
* @see Module::BACKEND_MODULES for a list
* @see ModuleController::BACKEND_MODULES for a list
*/
public function isBackend()
{
return $this->isBackend;
}
public function __construct(string $module = self::DEFAULT, string $moduleClass = self::DEFAULT_CLASS, array $moduleParameters = [], bool $isBackend = false, bool $printNotAllowedAddon = false)
public function __construct(string $moduleName = self::DEFAULT, ?ICanHandleRequests $module = null, bool $isBackend = false, bool $printNotAllowedAddon = false)
{
$this->moduleName = $moduleName;
$this->module = $module;
$this->module_class = $moduleClass;
$this->module_parameters = $moduleParameters;
$this->isBackend = $isBackend;
$this->printNotAllowedAddon = $printNotAllowedAddon;
}
@ -146,9 +133,9 @@ class Module
*
* @param Arguments $args The Friendica arguments
*
* @return Module The module with the determined module
* @return ModuleController The module with the determined module
*/
public function determineModule(Arguments $args)
public function determineName(Arguments $args)
{
if ($args->getArgc() > 0) {
$module = str_replace('.', '_', $args->get(0));
@ -162,27 +149,28 @@ class Module
$module = "login";
}
$isBackend = in_array($module, Module::BACKEND_MODULES);;
$isBackend = in_array($module, ModuleController::BACKEND_MODULES);
return new Module($module, $this->module_class, [], $isBackend, $this->printNotAllowedAddon);
return new ModuleController($module, null, $isBackend, $this->printNotAllowedAddon);
}
/**
* Determine the class of the current module
*
* @param Arguments $args The Friendica execution arguments
* @param Router $router The Friendica routing instance
* @param Arguments $args The Friendica execution arguments
* @param Router $router The Friendica routing instance
* @param IManageConfigValues $config The Friendica Configuration
* @param Dice $dice The Dependency Injection container
*
* @return Module The determined module of this call
* @return ModuleController The determined module of this call
*
* @throws \Exception
*/
public function determineClass(Arguments $args, Router $router, IManageConfigValues $config)
public function determineClass(Arguments $args, Router $router, IManageConfigValues $config, Dice $dice)
{
$printNotAllowedAddon = false;
$module_class = null;
$module_class = null;
$module_parameters = [];
/**
* ROUTING
@ -191,22 +179,22 @@ class Module
* post() and/or content() static methods can be respectively called to produce a data change or an output.
**/
try {
$module_class = $router->getModuleClass($args->getCommand());
$module_parameters = $router->getModuleParameters();
$module_class = $router->getModuleClass($args->getCommand());
$module_parameters[] = $router->getModuleParameters();
} catch (MethodNotAllowedException $e) {
$module_class = MethodNotAllowed::class;
} catch (NotFoundException $e) {
// Then we try addon-provided modules that we wrap in the LegacyModule class
if (Core\Addon::isEnabled($this->module) && file_exists("addon/{$this->module}/{$this->module}.php")) {
if (Core\Addon::isEnabled($this->moduleName) && file_exists("addon/{$this->moduleName}/{$this->moduleName}.php")) {
//Check if module is an app and if public access to apps is allowed or not
$privateapps = $config->get('config', 'private_addons', false);
if ((!local_user()) && Core\Hook::isAddonApp($this->module) && $privateapps) {
if ((!local_user()) && Core\Hook::isAddonApp($this->moduleName) && $privateapps) {
$printNotAllowedAddon = true;
} else {
include_once "addon/{$this->module}/{$this->module}.php";
if (function_exists($this->module . '_module')) {
LegacyModule::setModuleFile("addon/{$this->module}/{$this->module}.php");
$module_class = LegacyModule::class;
include_once "addon/{$this->moduleName}/{$this->moduleName}.php";
if (function_exists($this->moduleName . '_module')) {
$module_parameters[] = "addon/{$this->moduleName}/{$this->moduleName}.php";
$module_class = LegacyModule::class;
}
}
}
@ -214,15 +202,18 @@ class Module
/* Finally, we look for a 'standard' program module in the 'mod' directory
* We emulate a Module class through the LegacyModule class
*/
if (!$module_class && file_exists("mod/{$this->module}.php")) {
LegacyModule::setModuleFile("mod/{$this->module}.php");
$module_class = LegacyModule::class;
if (!$module_class && file_exists("mod/{$this->moduleName}.php")) {
$module_parameters[] = "mod/{$this->moduleName}.php";
$module_class = LegacyModule::class;
}
$module_class = $module_class ?: PageNotFound::class;
}
return new Module($this->module, $module_class, $module_parameters, $this->isBackend, $printNotAllowedAddon);
/** @var ICanHandleRequests $module */
$module = $dice->create($module_class, $module_parameters);
return new ModuleController($this->moduleName, $module, $this->isBackend, $printNotAllowedAddon);
}
/**
@ -251,7 +242,7 @@ class Module
*
* Otherwise we are going to emit a 404 not found.
*/
if ($this->module_class === PageNotFound::class) {
if ($this->module === PageNotFound::class) {
$queryString = $server['QUERY_STRING'];
// Stupid browser tried to pre-fetch our Javascript img template. Don't log the event or return anything - just quietly exit.
if (!empty($queryString) && preg_match('/{[0-9]}/', $queryString) !== 0) {
@ -302,34 +293,29 @@ class Module
$profiler->set(microtime(true), 'ready');
$timestamp = microtime(true);
Core\Hook::callAll($this->module . '_mod_init', $placeholder);
call_user_func([$this->module_class, 'init'], $this->module_parameters);
Core\Hook::callAll($this->moduleName . '_mod_init', $placeholder);
$profiler->set(microtime(true) - $timestamp, 'init');
if ($server['REQUEST_METHOD'] === Router::DELETE) {
call_user_func([$this->module_class, 'delete'], $this->module_parameters);
$this->module->delete();
}
if ($server['REQUEST_METHOD'] === Router::PATCH) {
call_user_func([$this->module_class, 'patch'], $this->module_parameters);
$this->module->patch();
}
if ($server['REQUEST_METHOD'] === Router::POST) {
Core\Hook::callAll($this->module . '_mod_post', $post);
call_user_func([$this->module_class, 'post'], $this->module_parameters);
Core\Hook::callAll($this->moduleName . '_mod_post', $post);
$this->module->post();
}
if ($server['REQUEST_METHOD'] === Router::PUT) {
call_user_func([$this->module_class, 'put'], $this->module_parameters);
$this->module->put();
}
Core\Hook::callAll($this->module . '_mod_afterpost', $placeholder);
call_user_func([$this->module_class, 'afterpost'], $this->module_parameters);
// "rawContent" is especially meant for technical endpoints.
// This endpoint doesn't need any theme initialization or other comparable stuff.
call_user_func([$this->module_class, 'rawContent'], $this->module_parameters);
$this->module->rawContent();
}
}

View File

@ -191,14 +191,14 @@ class Page implements ArrayAccess
* - head.tpl template
*
* @param App $app The Friendica App instance
* @param Module $module The loaded Friendica module
* @param ModuleController $module The loaded Friendica module
* @param L10n $l10n The l10n language instance
* @param IManageConfigValues $config The Friendica configuration
* @param IManagePersonalConfigValues $pConfig The Friendica personal configuration (for user)
*
* @throws HTTPException\InternalServerErrorException
*/
private function initHead(App $app, Module $module, L10n $l10n, IManageConfigValues $config, IManagePersonalConfigValues $pConfig)
private function initHead(App $app, ModuleController $module, L10n $l10n, IManageConfigValues $config, IManagePersonalConfigValues $pConfig)
{
$interval = ((local_user()) ? $pConfig->get(local_user(), 'system', 'update_interval') : 40000);
@ -337,26 +337,24 @@ class Page implements ArrayAccess
* - module content
* - hooks for content
*
* @param Module $module The module
* @param Mode $mode The Friendica execution mode
* @param ModuleController $module The module
* @param Mode $mode The Friendica execution mode
*
* @throws HTTPException\InternalServerErrorException
*/
private function initContent(Module $module, Mode $mode)
private function initContent(ModuleController $module, Mode $mode)
{
$content = '';
try {
$moduleClass = $module->getClassName();
$moduleClass = $module->getModule();
$arr = ['content' => $content];
Hook::callAll($moduleClass . '_mod_content', $arr);
Hook::callAll($moduleClass->getClassName() . '_mod_content', $arr);
$content = $arr['content'];
$arr = ['content' => call_user_func([$moduleClass, 'content'], $module->getParameters())];
Hook::callAll($moduleClass . '_mod_aftercontent', $arr);
$content .= $arr['content'];
$content .= $module->getModule()->content();
} catch (HTTPException $e) {
$content = ModuleHTTPException::content($e);
$content = (new ModuleHTTPException())->content($e);
}
// initialise content region
@ -392,14 +390,14 @@ class Page implements ArrayAccess
* @param App $app The Friendica App
* @param BaseURL $baseURL The Friendica Base URL
* @param Mode $mode The current node mode
* @param Module $module The loaded Friendica module
* @param ModuleController $module The loaded Friendica module
* @param L10n $l10n The l10n language class
* @param IManageConfigValues $config The Configuration of this node
* @param IManagePersonalConfigValues $pconfig The personal/user configuration
*
* @throws HTTPException\InternalServerErrorException
*/
public function run(App $app, BaseURL $baseURL, Mode $mode, Module $module, L10n $l10n, Profiler $profiler, IManageConfigValues $config, IManagePersonalConfigValues $pconfig)
public function run(App $app, BaseURL $baseURL, Mode $mode, ModuleController $module, L10n $l10n, Profiler $profiler, IManageConfigValues $config, IManagePersonalConfigValues $pconfig)
{
$moduleName = $module->getName();

View File

@ -21,6 +21,8 @@
namespace Friendica;
use Friendica\Capabilities\ICanHandleRequests;
use Friendica\Core\L10n;
use Friendica\Core\Logger;
use Friendica\Model\User;
@ -33,94 +35,90 @@ use Friendica\Model\User;
*
* @author Hypolite Petovan <hypolite@mrpetovan.com>
*/
abstract class BaseModule
abstract class BaseModule implements ICanHandleRequests
{
/**
* Initialization method common to both content() and post()
*
* Extend this method if you need to do any shared processing before both
* content() or post()
*/
public static function init(array $parameters = [])
/** @var array */
protected $parameters = [];
/** @var L10n */
protected $l10n;
public function __construct(L10n $l10n, array $parameters = [])
{
$this->parameters = $parameters;
$this->l10n = $l10n;
}
/**
* Module GET method to display raw content from technical endpoints
* Wraps the L10n::t() function for Modules
*
* Extend this method if the module is supposed to return communication data,
* e.g. from protocol implementations.
* @see L10n::t()
*/
public static function rawContent(array $parameters = [])
protected function t(string $s, ...$args): string
{
return $this->l10n->t($s, $args);
}
/**
* Wraps the L10n::tt() function for Modules
*
* @see L10n::tt()
*/
protected function tt(string $singular, string $plurarl, int $count): string
{
return $this->l10n->tt($singular, $plurarl, $count);
}
/**
* {@inheritDoc}
*/
public function rawContent()
{
// echo '';
// exit;
}
/**
* Module GET method to display any content
*
* Extend this method if the module is supposed to return any display
* through a GET request. It can be an HTML page through templating or a
* XML feed or a JSON output.
*
* @return string
* {@inheritDoc}
*/
public static function content(array $parameters = [])
public function content(): string
{
$o = '';
return $o;
return '';
}
/**
* Module DELETE method to process submitted data
*
* Extend this method if the module is supposed to process DELETE requests.
* Doesn't display any content
* {@inheritDoc}
*/
public static function delete(array $parameters = [])
public function delete()
{
}
/**
* Module PATCH method to process submitted data
*
* Extend this method if the module is supposed to process PATCH requests.
* Doesn't display any content
* {@inheritDoc}
*/
public static function patch(array $parameters = [])
public function patch()
{
}
/**
* Module POST method to process submitted data
*
* Extend this method if the module is supposed to process POST requests.
* Doesn't display any content
* {@inheritDoc}
*/
public static function post(array $parameters = [])
public function post()
{
// DI::baseurl()->redirect('module');
}
/**
* Called after post()
*
* Unknown purpose
* {@inheritDoc}
*/
public static function afterpost(array $parameters = [])
public function put()
{
}
/**
* Module PUT method to process submitted data
*
* Extend this method if the module is supposed to process PUT requests.
* Doesn't display any content
*/
public static function put(array $parameters = [])
/** Gets the name of the current class */
public function getClassName(): string
{
return static::class;
}
/*

View File

@ -0,0 +1,60 @@
<?php
namespace Friendica\Capabilities;
/**
* This interface provides the capability to handle requests from clients and returns the desired outcome
*/
interface ICanHandleRequests
{
/**
* Module GET method to display raw content from technical endpoints
*
* Extend this method if the module is supposed to return communication data,
* e.g. from protocol implementations.
*/
public function rawContent();
/**
* Module GET method to display any content
*
* Extend this method if the module is supposed to return any display
* through a GET request. It can be an HTML page through templating or a
* XML feed or a JSON output.
*/
public function content(): string;
/**
* Module DELETE method to process submitted data
*
* Extend this method if the module is supposed to process DELETE requests.
* Doesn't display any content
*/
public function delete();
/**
* Module PATCH method to process submitted data
*
* Extend this method if the module is supposed to process PATCH requests.
* Doesn't display any content
*/
public function patch();
/**
* Module POST method to process submitted data
*
* Extend this method if the module is supposed to process POST requests.
* Doesn't display any content
*/
public function post();
/**
* Module PUT method to process submitted data
*
* Extend this method if the module is supposed to process PUT requests.
* Doesn't display any content
*/
public function put();
public function getClassName(): string;
}

View File

@ -99,11 +99,11 @@ abstract class DI
}
/**
* @return App\Module
* @return App\ModuleController
*/
public static function module()
{
return self::$dice->create(App\Module::class);
return self::$dice->create(App\ModuleController::class);
}
/**

View File

@ -52,4 +52,9 @@ class User extends BaseFactory
return new \Friendica\Object\Api\Twitter\User($publicContact, $apcontact, $userContact, $skip_status, $include_user_entities);
}
public function createFromUserId(int $uid, $skip_status = false, $include_user_entities = true)
{
return $this->createFromContactId(Contact::getPublicIdByUserId($uid), $uid, $skip_status, $include_user_entities);
}
}

View File

@ -21,6 +21,8 @@
namespace Friendica;
use Friendica\Core\L10n;
/**
* This mock module enable class encapsulation of legacy global function modules.
* After having provided the module file name, all the methods will behave like a normal Module class.
@ -35,7 +37,16 @@ class LegacyModule extends BaseModule
*
* @var string
*/
private static $moduleName = '';
private $moduleName = '';
public function __construct(L10n $l10n, string $file_path = '', array $parameters = [])
{
parent::__construct($l10n, $parameters);
$this->setModuleFile($file_path);
$this->runModuleFunction('init');
}
/**
* The only method that needs to be called, with the module/addon file name.
@ -43,35 +54,25 @@ class LegacyModule extends BaseModule
* @param string $file_path
* @throws \Exception
*/
public static function setModuleFile($file_path)
private function setModuleFile($file_path)
{
if (!is_readable($file_path)) {
throw new \Exception(DI::l10n()->t('Legacy module file not found: %s', $file_path));
}
self::$moduleName = basename($file_path, '.php');
$this->moduleName = basename($file_path, '.php');
require_once $file_path;
}
public static function init(array $parameters = [])
public function content(): string
{
self::runModuleFunction('init', $parameters);
return $this->runModuleFunction('content');
}
public static function content(array $parameters = [])
public function post()
{
return self::runModuleFunction('content', $parameters);
}
public static function post(array $parameters = [])
{
self::runModuleFunction('post', $parameters);
}
public static function afterpost(array $parameters = [])
{
self::runModuleFunction('afterpost', $parameters);
$this->runModuleFunction('post');
}
/**
@ -81,15 +82,15 @@ class LegacyModule extends BaseModule
* @return string
* @throws \Exception
*/
private static function runModuleFunction($function_suffix, array $parameters = [])
private function runModuleFunction(string $function_suffix)
{
$function_name = static::$moduleName . '_' . $function_suffix;
$function_name = $this->moduleName . '_' . $function_suffix;
if (\function_exists($function_name)) {
$a = DI::app();
return $function_name($a);
} else {
return parent::{$function_suffix}($parameters);
}
return '';
}
}

View File

@ -30,7 +30,7 @@ use Friendica\BaseModule;
*/
class AccountManagementControlDocument extends BaseModule
{
public static function rawContent(array $parameters = [])
public function rawContent()
{
$output = [
'version' => 1,

View File

@ -24,22 +24,25 @@ namespace Friendica\Module;
use Friendica\BaseModule;
use Friendica\Core\System;
use Friendica\Model\Contact;
use Friendica\Network\HTTPException\NotFoundException;
/**
* Redirects to another URL based on the parameter 'addr'
*/
class Acctlink extends BaseModule
{
public static function content(array $parameters = [])
public function rawContent()
{
$addr = trim($_GET['addr'] ?? '');
if ($addr) {
$url = Contact::getByURL($addr)['url'] ?? '';
if ($url) {
System::externalRedirect($url['url']);
exit();
}
if (!$addr) {
throw new NotFoundException('Parameter "addr" is missing or empty');
}
$contact = Contact::getByURL($addr, null, ['url']) ?? '';
if (!$contact) {
throw new NotFoundException('Contact not found');
}
System::externalRedirect($contact['url']);
}
}

View File

@ -31,14 +31,14 @@ use Friendica\Protocol\ActivityPub;
*/
class Followers extends BaseModule
{
public static function rawContent(array $parameters = [])
public function rawContent()
{
if (empty($parameters['nickname'])) {
if (empty($this->parameters['nickname'])) {
throw new \Friendica\Network\HTTPException\NotFoundException();
}
// @TODO: Replace with parameter from router
$owner = User::getOwnerDataByNick($parameters['nickname']);
$owner = User::getOwnerDataByNick($this->parameters['nickname']);
if (empty($owner)) {
throw new \Friendica\Network\HTTPException\NotFoundException();
}

View File

@ -31,13 +31,13 @@ use Friendica\Protocol\ActivityPub;
*/
class Following extends BaseModule
{
public static function rawContent(array $parameters = [])
public function rawContent()
{
if (empty($parameters['nickname'])) {
if (empty($this->parameters['nickname'])) {
throw new \Friendica\Network\HTTPException\NotFoundException();
}
$owner = User::getOwnerDataByNick($parameters['nickname']);
$owner = User::getOwnerDataByNick($this->parameters['nickname']);
if (empty($owner)) {
throw new \Friendica\Network\HTTPException\NotFoundException();
}

View File

@ -35,7 +35,7 @@ use Friendica\Util\Network;
*/
class Inbox extends BaseModule
{
public static function rawContent(array $parameters = [])
public function rawContent()
{
$postdata = Network::postdata();
@ -50,12 +50,12 @@ class Inbox extends BaseModule
$filename = 'failed-activitypub';
}
$tempfile = tempnam(System::getTempPath(), $filename);
file_put_contents($tempfile, json_encode(['parameters' => $parameters, 'header' => $_SERVER, 'body' => $postdata], JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE));
file_put_contents($tempfile, json_encode(['parameters' => $this->parameters, 'header' => $_SERVER, 'body' => $postdata], JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE));
Logger::notice('Incoming message stored', ['file' => $tempfile]);
}
if (!empty($parameters['nickname'])) {
$user = DBA::selectFirst('user', ['uid'], ['nickname' => $parameters['nickname']]);
if (!empty($this->parameters['nickname'])) {
$user = DBA::selectFirst('user', ['uid'], ['nickname' => $this->parameters['nickname']]);
if (!DBA::isResult($user)) {
throw new \Friendica\Network\HTTPException\NotFoundException();
}

View File

@ -41,9 +41,9 @@ use Friendica\Util\Strings;
*/
class Objects extends BaseModule
{
public static function rawContent(array $parameters = [])
public function rawContent()
{
if (empty($parameters['guid'])) {
if (empty($this->parameters['guid'])) {
throw new HTTPException\BadRequestException();
}
@ -51,10 +51,10 @@ class Objects extends BaseModule
DI::baseUrl()->redirect(str_replace('objects/', 'display/', DI::args()->getQueryString()));
}
$itemuri = DBA::selectFirst('item-uri', ['id'], ['guid' => $parameters['guid']]);
$itemuri = DBA::selectFirst('item-uri', ['id'], ['guid' => $this->parameters['guid']]);
if (DBA::isResult($itemuri)) {
Logger::info('Provided GUID found.', ['guid' => $parameters['guid'], 'uri-id' => $itemuri['id']]);
Logger::info('Provided GUID found.', ['guid' => $this->parameters['guid'], 'uri-id' => $itemuri['id']]);
} else {
// The item URI does not always contain the GUID. This means that we have to search the URL instead
$url = DI::baseUrl()->get() . '/' . DI::args()->getQueryString();
@ -104,11 +104,11 @@ class Objects extends BaseModule
throw new HTTPException\NotFoundException();
}
$etag = md5($parameters['guid'] . '-' . $item['changed']);
$etag = md5($this->parameters['guid'] . '-' . $item['changed']);
$last_modified = $item['changed'];
Network::checkEtagModified($etag, $last_modified);
if (empty($parameters['activity']) && ($item['gravity'] != GRAVITY_ACTIVITY)) {
if (empty($this->parameters['activity']) && ($item['gravity'] != GRAVITY_ACTIVITY)) {
$activity = ActivityPub\Transmitter::createActivityFromItem($item['id'], true);
if (empty($activity['type'])) {
throw new HTTPException\NotFoundException();
@ -123,16 +123,16 @@ class Objects extends BaseModule
$data = ['@context' => ActivityPub::CONTEXT];
$data = array_merge($data, $activity['object']);
} elseif (empty($parameters['activity']) || in_array($parameters['activity'],
} elseif (empty($this->parameters['activity']) || in_array($this->parameters['activity'],
['Create', 'Announce', 'Update', 'Like', 'Dislike', 'Accept', 'Reject',
'TentativeAccept', 'Follow', 'Add'])) {
$data = ActivityPub\Transmitter::createActivityFromItem($item['id']);
if (empty($data)) {
throw new HTTPException\NotFoundException();
}
if (!empty($parameters['activity']) && ($parameters['activity'] != 'Create')) {
$data['type'] = $parameters['activity'];
$data['id'] = str_replace('/Create', '/' . $parameters['activity'], $data['id']);
if (!empty($this->parameters['activity']) && ($this->parameters['activity'] != 'Create')) {
$data['type'] = $this->parameters['activity'];
$data['id'] = str_replace('/Create', '/' . $this->parameters['activity'], $data['id']);
}
} else {
throw new HTTPException\NotFoundException();

View File

@ -31,13 +31,13 @@ use Friendica\Util\HTTPSignature;
*/
class Outbox extends BaseModule
{
public static function rawContent(array $parameters = [])
public function rawContent()
{
if (empty($parameters['nickname'])) {
if (empty($this->parameters['nickname'])) {
throw new \Friendica\Network\HTTPException\NotFoundException();
}
$owner = User::getOwnerDataByNick($parameters['nickname']);
$owner = User::getOwnerDataByNick($this->parameters['nickname']);
if (empty($owner)) {
throw new \Friendica\Network\HTTPException\NotFoundException();
}

View File

@ -30,11 +30,11 @@ use Friendica\Util\Strings;
class Details extends BaseAdmin
{
public static function post(array $parameters = [])
public function post()
{
self::checkAdminAccess();
$addon = Strings::sanitizeFilePathItem($parameters['addon']);
$addon = Strings::sanitizeFilePathItem($this->parameters['addon']);
$redirect = 'admin/addons/' . $addon;
@ -52,15 +52,15 @@ class Details extends BaseAdmin
DI::baseUrl()->redirect($redirect);
}
public static function content(array $parameters = [])
public function content(): string
{
parent::content($parameters);
parent::content();
$a = DI::app();
$addons_admin = Addon::getAdminList();
$addon = Strings::sanitizeFilePathItem($parameters['addon']);
$addon = Strings::sanitizeFilePathItem($this->parameters['addon']);
if (!is_file("addon/$addon/$addon.php")) {
notice(DI::l10n()->t('Addon not found.'));
Addon::uninstall($addon);

View File

@ -28,9 +28,9 @@ use Friendica\Module\BaseAdmin;
class Index extends BaseAdmin
{
public static function content(array $parameters = [])
public function content(): string
{
parent::content($parameters);
parent::content();
// reload active themes
if (!empty($_GET['action'])) {

View File

@ -32,7 +32,7 @@ use Friendica\Util\Network;
class Contact extends BaseAdmin
{
public static function post(array $parameters = [])
public function post()
{
self::checkAdminAccess();
@ -76,9 +76,9 @@ class Contact extends BaseAdmin
DI::baseUrl()->redirect('admin/blocklist/contact');
}
public static function content(array $parameters = [])
public function content(): string
{
parent::content($parameters);
parent::content();
$condition = ['uid' => 0, 'blocked' => true];

View File

@ -32,7 +32,7 @@ use GuzzleHttp\Psr7\Uri;
class Add extends BaseAdmin
{
public static function post(array $parameters = [])
public function post()
{
self::checkAdminAccess();
@ -66,9 +66,9 @@ class Add extends BaseAdmin
DI::baseUrl()->redirect('admin/blocklist/server');
}
public static function content(array $parameters = [])
public function content(): string
{
parent::content($parameters);
parent::content();
$gservers = [];

View File

@ -27,7 +27,7 @@ use Friendica\Module\BaseAdmin;
class Index extends BaseAdmin
{
public static function post(array $parameters = [])
public function post()
{
self::checkAdminAccess();
@ -56,9 +56,9 @@ class Index extends BaseAdmin
DI::baseUrl()->redirect('admin/blocklist/server');
}
public static function content(array $parameters = [])
public function content(): string
{
parent::content($parameters);
parent::content();
$blocklist = DI::config()->get('system', 'blocklist');
$blocklistform = [];

View File

@ -30,14 +30,14 @@ use Friendica\Module\BaseAdmin;
class DBSync extends BaseAdmin
{
public static function content(array $parameters = [])
public function content(): string
{
parent::content($parameters);
parent::content();
$a = DI::app();
$action = $parameters['action'] ?? '';
$update = $parameters['update'] ?? 0;
$action = $this->parameters['action'] ?? '';
$update = $this->parameters['update'] ?? 0;
switch ($action) {
case 'mark':

View File

@ -28,7 +28,7 @@ use Friendica\Module\BaseAdmin;
class Features extends BaseAdmin
{
public static function post(array $parameters = [])
public function post()
{
self::checkAdminAccess();
@ -60,9 +60,9 @@ class Features extends BaseAdmin
DI::baseUrl()->redirect('admin/features');
}
public static function content(array $parameters = [])
public function content(): string
{
parent::content($parameters);
parent::content();
$features = [];

View File

@ -28,9 +28,9 @@ use Friendica\Module\BaseAdmin;
class Federation extends BaseAdmin
{
public static function content(array $parameters = [])
public function content(): string
{
parent::content($parameters);
parent::content();
// get counts on active federation systems this node is knowing
// We list the more common systems by name. The rest is counted as "other"

View File

@ -29,7 +29,7 @@ use Friendica\Util\Strings;
class Delete extends BaseAdmin
{
public static function post(array $parameters = [])
public function post()
{
self::checkAdminAccess();
@ -55,9 +55,9 @@ class Delete extends BaseAdmin
DI::baseUrl()->redirect('admin/item/delete');
}
public static function content(array $parameters = [])
public function content(): string
{
parent::content($parameters);
parent::content();
$t = Renderer::getMarkupTemplate('admin/item/delete.tpl');

View File

@ -29,11 +29,11 @@ use Friendica\Module\BaseAdmin;
class Source extends BaseAdmin
{
public static function content(array $parameters = [])
public function content(): string
{
parent::content($parameters);
parent::content();
$guid = basename($_REQUEST['guid'] ?? $parameters['guid'] ?? '');
$guid = basename($_REQUEST['guid'] ?? $this->parameters['guid'] ?? '');
$source = '';
$item_uri = '';

View File

@ -29,7 +29,7 @@ use Psr\Log\LogLevel;
class Settings extends BaseAdmin
{
public static function post(array $parameters = [])
public function post()
{
self::checkAdminAccess();
@ -56,9 +56,9 @@ class Settings extends BaseAdmin
DI::baseUrl()->redirect('admin/logs');
}
public static function content(array $parameters = [])
public function content(): string
{
parent::content($parameters);
parent::content();
$log_choices = [
LogLevel::ERROR => 'Error',

View File

@ -31,9 +31,9 @@ class View extends BaseAdmin
{
const LIMIT = 500;
public static function content(array $parameters = [])
public function content(): string
{
parent::content($parameters);
parent::content();
$t = Renderer::getMarkupTemplate('admin/logs/view.tpl');
DI::page()->registerFooterScript(Theme::getPathForFile('js/module/admin/logs/view.js'));
@ -75,7 +75,7 @@ class View extends BaseAdmin
->withLimit(self::LIMIT)
->withFilters($filters)
->withSearch($search);
} catch (Exception $e) {
} catch (\Exception $e) {
$error = DI::l10n()->t('Couldn\'t open <strong>%1$s</strong> log file.<br/>Check to see if file %1$s is readable.', $f);
}
}

View File

@ -25,7 +25,7 @@ use Friendica\Module\BaseAdmin;
class PhpInfo extends BaseAdmin
{
public static function rawContent(array $parameters = [])
public function rawContent()
{
self::checkAdminAccess();

View File

@ -38,11 +38,11 @@ use Friendica\Util\DateTimeFormat;
*/
class Queue extends BaseAdmin
{
public static function content(array $parameters = [])
public function content(): string
{
parent::content($parameters);
parent::content();
$status = $parameters['status'] ?? '';
$status = $this->parameters['status'] ?? '';
// get jobs from the workerqueue table
if ($status == 'deferred') {

View File

@ -43,7 +43,7 @@ require_once __DIR__ . '/../../../boot.php';
class Site extends BaseAdmin
{
public static function post(array $parameters = [])
public function post()
{
self::checkAdminAccess();
@ -384,9 +384,9 @@ class Site extends BaseAdmin
DI::baseUrl()->redirect('admin/site' . $active_panel);
}
public static function content(array $parameters = [])
public function content(): string
{
parent::content($parameters);
parent::content();
/* Installed langs */
$lang_choices = DI::l10n()->getAvailableLanguages();

View File

@ -31,13 +31,13 @@ use Friendica\Util\Strings;
class Storage extends BaseAdmin
{
public static function post(array $parameters = [])
public function post()
{
self::checkAdminAccess();
self::checkFormSecurityTokenRedirectOnError('/admin/storage', 'admin_storage');
$storagebackend = trim($parameters['name'] ?? '');
$storagebackend = trim($this->parameters['name'] ?? '');
try {
/** @var ICanConfigureStorage|false $newStorageConfig */
@ -91,9 +91,9 @@ class Storage extends BaseAdmin
DI::baseUrl()->redirect('admin/storage');
}
public static function content(array $parameters = [])
public function content(): string
{
parent::content($parameters);
parent::content();
$current_storage_backend = DI::storage();
$available_storage_forms = [];

View File

@ -37,9 +37,9 @@ use Friendica\Util\DateTimeFormat;
class Summary extends BaseAdmin
{
public static function content(array $parameters = [])
public function content(): string
{
parent::content($parameters);
parent::content();
$a = DI::app();

View File

@ -30,11 +30,11 @@ use Friendica\Util\Strings;
class Details extends BaseAdmin
{
public static function content(array $parameters = [])
public function content(): string
{
parent::content($parameters);
parent::content();
$theme = Strings::sanitizeFilePathItem($parameters['theme']);
$theme = Strings::sanitizeFilePathItem($this->parameters['theme']);
if (!is_dir("view/theme/$theme")) {
notice(DI::l10n()->t("Item not found."));
return '';

View File

@ -21,48 +21,62 @@
namespace Friendica\Module\Admin\Themes;
use Friendica\App;
use Friendica\Core\L10n;
use Friendica\Core\Renderer;
use Friendica\DI;
use Friendica\Module\BaseAdmin;
use Friendica\Util\Strings;
class Embed extends BaseAdmin
{
public static function init(array $parameters = [])
/** @var App */
protected $app;
/** @var App\BaseURL */
protected $baseUrl;
/** @var App\Mode */
protected $mode;
public function __construct(App $app, App\BaseURL $baseUrl, App\Mode $mode, L10n $l10n, array $parameters = [])
{
$theme = Strings::sanitizeFilePathItem($parameters['theme']);
parent::__construct($l10n, $parameters);
$this->app = $app;
$this->baseUrl = $baseUrl;
$this->mode = $mode;
$theme = Strings::sanitizeFilePathItem($this->parameters['theme']);
if (is_file("view/theme/$theme/config.php")) {
DI::app()->setCurrentTheme($theme);
$this->app->setCurrentTheme($theme);
}
}
public static function post(array $parameters = [])
public function post()
{
self::checkAdminAccess();
$theme = Strings::sanitizeFilePathItem($parameters['theme']);
$theme = Strings::sanitizeFilePathItem($this->parameters['theme']);
if (is_file("view/theme/$theme/config.php")) {
require_once "view/theme/$theme/config.php";
if (function_exists('theme_admin_post')) {
self::checkFormSecurityTokenRedirectOnError('/admin/themes/' . $theme . '/embed?mode=minimal', 'admin_theme_settings');
theme_admin_post(DI::app());
theme_admin_post($this->app);
}
}
if (DI::mode()->isAjax()) {
if ($this->mode->isAjax()) {
return;
}
DI::baseUrl()->redirect('admin/themes/' . $theme . '/embed?mode=minimal');
$this->baseUrl->redirect('admin/themes/' . $theme . '/embed?mode=minimal');
}
public static function content(array $parameters = [])
public function content(): string
{
parent::content($parameters);
parent::content();
$theme = Strings::sanitizeFilePathItem($parameters['theme']);
$theme = Strings::sanitizeFilePathItem($this->parameters['theme']);
if (!is_dir("view/theme/$theme")) {
notice(DI::l10n()->t('Unknown theme.'));
notice($this->t('Unknown theme.'));
return '';
}
@ -71,7 +85,7 @@ class Embed extends BaseAdmin
require_once "view/theme/$theme/config.php";
if (function_exists('theme_admin')) {
$admin_form = theme_admin(DI::app());
$admin_form = theme_admin($this->app);
}
}

View File

@ -29,9 +29,9 @@ use Friendica\Util\Strings;
class Index extends BaseAdmin
{
public static function content(array $parameters = [])
public function content(): string
{
parent::content($parameters);
parent::content();
$allowed_themes = Theme::getAllowedList();

View File

@ -21,13 +21,31 @@
namespace Friendica\Module\Admin;
use Friendica\App\BaseURL;
use Friendica\Core\Config\Capability\IManageConfigValues;
use Friendica\Core\L10n;
use Friendica\Core\Renderer;
use Friendica\DI;
use Friendica\Module\BaseAdmin;
class Tos extends BaseAdmin
{
public static function post(array $parameters = [])
/** @var \Friendica\Module\Tos */
protected $tos;
/** @var IManageConfigValues */
protected $config;
/** @var BaseURL */
protected $baseUrl;
public function __construct(\Friendica\Module\Tos $tos, IManageConfigValues $config, BaseURL $baseUrl, L10n $l10n, array $parameters = [])
{
parent::__construct($l10n, $parameters);
$this->tos = $tos;
$this->config = $config;
$this->baseUrl = $baseUrl;
}
public function post()
{
self::checkAdminAccess();
@ -41,29 +59,28 @@ class Tos extends BaseAdmin
$displayprivstatement = !empty($_POST['displayprivstatement']);
$tostext = (!empty($_POST['tostext']) ? strip_tags(trim($_POST['tostext'])) : '');
DI::config()->set('system', 'tosdisplay', $displaytos);
DI::config()->set('system', 'tosprivstatement', $displayprivstatement);
DI::config()->set('system', 'tostext', $tostext);
$this->config->set('system', 'tosdisplay', $displaytos);
$this->config->set('system', 'tosprivstatement', $displayprivstatement);
$this->config->set('system', 'tostext', $tostext);
DI::baseUrl()->redirect('admin/tos');
$this->baseUrl->redirect('admin/tos');
}
public static function content(array $parameters = [])
public function content(): string
{
parent::content($parameters);
parent::content();
$tos = new \Friendica\Module\Tos();
$t = Renderer::getMarkupTemplate('admin/tos.tpl');
return Renderer::replaceMacros($t, [
'$title' => DI::l10n()->t('Administration'),
'$page' => DI::l10n()->t('Terms of Service'),
'$displaytos' => ['displaytos', DI::l10n()->t('Display Terms of Service'), DI::config()->get('system', 'tosdisplay'), DI::l10n()->t('Enable the Terms of Service page. If this is enabled a link to the terms will be added to the registration form and the general information page.')],
'$displayprivstatement' => ['displayprivstatement', DI::l10n()->t('Display Privacy Statement'), DI::config()->get('system', 'tosprivstatement'), DI::l10n()->t('Show some informations regarding the needed information to operate the node according e.g. to <a href="%s" target="_blank" rel="noopener noreferrer">EU-GDPR</a>.', 'https://en.wikipedia.org/wiki/General_Data_Protection_Regulation')],
'$preview' => DI::l10n()->t('Privacy Statement Preview'),
'$privtext' => $tos->privacy_complete,
'$tostext' => ['tostext', DI::l10n()->t('The Terms of Service'), DI::config()->get('system', 'tostext'), DI::l10n()->t('Enter the Terms of Service for your node here. You can use BBCode. Headers of sections should be [h2] and below.')],
'$title' => $this->t('Administration'),
'$page' => $this->t('Terms of Service'),
'$displaytos' => ['displaytos', $this->t('Display Terms of Service'), $this->config->get('system', 'tosdisplay'), $this->t('Enable the Terms of Service page. If this is enabled a link to the terms will be added to the registration form and the general information page.')],
'$displayprivstatement' => ['displayprivstatement', $this->t('Display Privacy Statement'), $this->config->get('system', 'tosprivstatement'), $this->t('Show some informations regarding the needed information to operate the node according e.g. to <a href="%s" target="_blank" rel="noopener noreferrer">EU-GDPR</a>.', 'https://en.wikipedia.org/wiki/General_Data_Protection_Regulation')],
'$preview' => $this->t('Privacy Statement Preview'),
'$privtext' => $this->tos->privacy_complete,
'$tostext' => ['tostext', $this->t('The Terms of Service'), $this->config->get('system', 'tostext'), $this->t('Enter the Terms of Service for your node here. You can use BBCode. Headers of sections should be [h2] and below.')],
'$form_security_token' => self::getFormSecurityToken('admin_tos'),
'$submit' => DI::l10n()->t('Save Settings'),
'$submit' => $this->t('Save Settings'),
]);
}
}

View File

@ -30,7 +30,7 @@ use Friendica\Module\Admin\BaseUsers;
class Active extends BaseUsers
{
public static function post(array $parameters = [])
public function post()
{
self::checkAdminAccess();
@ -60,12 +60,12 @@ class Active extends BaseUsers
DI::baseUrl()->redirect(DI::args()->getQueryString());
}
public static function content(array $parameters = [])
public function content(): string
{
parent::content($parameters);
parent::content();
$action = $parameters['action'] ?? '';
$uid = $parameters['uid'] ?? 0;
$action = $this->parameters['action'] ?? '';
$uid = $this->parameters['uid'] ?? 0;
if ($uid) {
$user = User::getById($uid, ['username', 'blocked']);

View File

@ -31,7 +31,7 @@ use Friendica\Util\Temporal;
class Blocked extends BaseUsers
{
public static function post(array $parameters = [])
public function post()
{
self::checkAdminAccess();
@ -61,12 +61,12 @@ class Blocked extends BaseUsers
DI::baseUrl()->redirect('admin/users/blocked');
}
public static function content(array $parameters = [])
public function content(): string
{
parent::content($parameters);
parent::content();
$action = $parameters['action'] ?? '';
$uid = $parameters['uid'] ?? 0;
$action = $this->parameters['action'] ?? '';
$uid = $this->parameters['uid'] ?? 0;
if ($uid) {
$user = User::getById($uid, ['username', 'blocked']);

View File

@ -28,7 +28,7 @@ use Friendica\Module\Admin\BaseUsers;
class Create extends BaseUsers
{
public static function post(array $parameters = [])
public function post()
{
self::checkAdminAccess();
@ -51,9 +51,9 @@ class Create extends BaseUsers
DI::baseUrl()->redirect('admin/users/create');
}
public static function content(array $parameters = [])
public function content(): string
{
parent::content($parameters);
parent::content();
$t = Renderer::getMarkupTemplate('admin/users/create.tpl');
return self::getTabsHTML('all') . Renderer::replaceMacros($t, [

View File

@ -33,7 +33,7 @@ use Friendica\Util\Temporal;
class Deleted extends BaseUsers
{
public static function post(array $parameters = [])
public function post()
{
self::checkAdminAccess();
@ -44,9 +44,9 @@ class Deleted extends BaseUsers
DI::baseUrl()->redirect('admin/users/deleted');
}
public static function content(array $parameters = [])
public function content(): string
{
parent::content($parameters);
parent::content();
$pager = new Pager(DI::l10n(), DI::args()->getQueryString(), 100);

View File

@ -30,7 +30,7 @@ use Friendica\Module\Admin\BaseUsers;
class Index extends BaseUsers
{
public static function post(array $parameters = [])
public function post()
{
self::checkAdminAccess();
@ -67,12 +67,12 @@ class Index extends BaseUsers
DI::baseUrl()->redirect(DI::args()->getQueryString());
}
public static function content(array $parameters = [])
public function content(): string
{
parent::content($parameters);
parent::content();
$action = $parameters['action'] ?? '';
$uid = $parameters['uid'] ?? 0;
$action = $this->parameters['action'] ?? '';
$uid = $this->parameters['uid'] ?? 0;
if ($uid) {
$user = User::getById($uid, ['username', 'blocked']);

View File

@ -33,7 +33,7 @@ use Friendica\Util\Temporal;
class Pending extends BaseUsers
{
public static function post(array $parameters = [])
public function post()
{
self::checkAdminAccess();
@ -58,12 +58,12 @@ class Pending extends BaseUsers
DI::baseUrl()->redirect('admin/users/pending');
}
public static function content(array $parameters = [])
public function content(): string
{
parent::content($parameters);
parent::content();
$action = $parameters['action'] ?? '';
$uid = $parameters['uid'] ?? 0;
$action = $this->parameters['action'] ?? '';
$uid = $this->parameters['uid'] ?? 0;
if ($uid) {
$user = User::getById($uid, ['username', 'blocked']);

View File

@ -40,7 +40,7 @@ use Friendica\Module\BaseApi;
*/
class Activity extends BaseApi
{
public static function rawContent(array $parameters = [])
public function rawContent()
{
self::checkAllowedScope(self::SCOPE_WRITE);
$uid = self::getCurrentUserID();
@ -49,17 +49,17 @@ class Activity extends BaseApi
'id' => 0, // Id of the post
]);
$res = Item::performActivity($request['id'], $parameters['verb'], $uid);
$res = Item::performActivity($request['id'], $this->parameters['verb'], $uid);
if ($res) {
if (!empty($parameters['extension']) && ($parameters['extension'] == 'xml')) {
if (!empty($this->parameters['extension']) && ($this->parameters['extension'] == 'xml')) {
$ok = 'true';
} else {
$ok = 'ok';
}
DI::apiResponse()->exit('ok', ['ok' => $ok], $parameters['extension'] ?? null);
DI::apiResponse()->exit('ok', ['ok' => $ok], $this->parameters['extension'] ?? null);
} else {
DI::apiResponse()->error(500, 'Error adding activity', '', $parameters['extension'] ?? null);
DI::apiResponse()->error(500, 'Error adding activity', '', $this->parameters['extension'] ?? null);
}
}
}

View File

@ -30,7 +30,7 @@ use Friendica\Module\BaseApi;
*/
class Setseen extends BaseApi
{
public static function rawContent(array $parameters = [])
public function rawContent()
{
self::checkAllowedScope(self::SCOPE_WRITE);
$uid = self::getCurrentUserID();
@ -42,13 +42,13 @@ class Setseen extends BaseApi
// return error if id is zero
if (empty($request['id'])) {
$answer = ['result' => 'error', 'message' => 'message id not specified'];
DI::apiResponse()->exit('direct_messages_setseen', ['$result' => $answer], $parameters['extension'] ?? null);
DI::apiResponse()->exit('direct_messages_setseen', ['$result' => $answer], $this->parameters['extension'] ?? null);
}
// error message if specified id is not in database
if (!DBA::exists('mail', ['id' => $request['id'], 'uid' => $uid])) {
$answer = ['result' => 'error', 'message' => 'message id not in database'];
DI::apiResponse()->exit('direct_messages_setseen', ['$result' => $answer], $parameters['extension'] ?? null);
DI::apiResponse()->exit('direct_messages_setseen', ['$result' => $answer], $this->parameters['extension'] ?? null);
}
// update seen indicator
@ -58,6 +58,6 @@ class Setseen extends BaseApi
$answer = ['result' => 'error', 'message' => 'unknown error'];
}
DI::apiResponse()->exit('direct_messages_setseen', ['$result' => $answer], $parameters['extension'] ?? null);
DI::apiResponse()->exit('direct_messages_setseen', ['$result' => $answer], $this->parameters['extension'] ?? null);
}
}

View File

@ -33,7 +33,7 @@ use Friendica\Module\BaseApi;
*/
class Index extends BaseApi
{
public static function rawContent(array $parameters = [])
public function rawContent()
{
self::checkAllowedScope(self::SCOPE_READ);
$uid = self::getCurrentUserID();
@ -70,6 +70,6 @@ class Index extends BaseApi
];
}
DI::apiResponse()->exit('events', ['events' => $items], $parameters['extension'] ?? null);
DI::apiResponse()->exit('events', ['events' => $items], $this->parameters['extension'] ?? null);
}
}

View File

@ -22,6 +22,7 @@
namespace Friendica\Module\Api\Friendica\Group;
use Friendica\Database\DBA;
use Friendica\DI;
use Friendica\Model\Group;
use Friendica\Module\BaseApi;
use Friendica\Network\HTTPException\BadRequestException;
@ -31,7 +32,7 @@ use Friendica\Network\HTTPException\BadRequestException;
*/
class Delete extends BaseApi
{
public static function rawContent(array $parameters = [])
public function rawContent()
{
self::checkAllowedScope(self::SCOPE_WRITE);
$uid = self::getCurrentUserID();
@ -69,7 +70,7 @@ class Delete extends BaseApi
if ($ret) {
// return success
$success = ['success' => $ret, 'gid' => $request['gid'], 'name' => $request['name'], 'status' => 'deleted', 'wrong users' => []];
self::exit('group_delete', ['$result' => $success], $parameters['extension'] ?? null);
DI::apiResponse()->exit('group_delete', ['$result' => $success], $parameters['extension'] ?? null);
} else {
throw new BadRequestException('other API error');
}

View File

@ -31,17 +31,17 @@ use Friendica\Module\BaseApi;
*/
class Index extends BaseApi
{
public static function post(array $parameters = [])
public function post()
{
self::checkAllowedScope(self::SCOPE_WRITE);
}
public static function delete(array $parameters = [])
public function delete()
{
self::checkAllowedScope(self::SCOPE_WRITE);
}
public static function rawContent(array $parameters = [])
public function rawContent()
{
echo api_call(DI::app());
exit();

View File

@ -31,7 +31,7 @@ use Friendica\Object\Api\Friendica\Notification as ApiNotification;
*/
class Notification extends BaseApi
{
public static function rawContent(array $parameters = [])
public function rawContent()
{
self::checkAllowedScope(self::SCOPE_READ);
$uid = self::getCurrentUserID();
@ -43,7 +43,7 @@ class Notification extends BaseApi
$notifications[] = new ApiNotification($Notify);
}
if (!empty($parameters['extension']) && ($parameters['extension'] == 'xml')) {
if (!empty($this->parameters['extension']) && ($this->parameters['extension'] == 'xml')) {
$xmlnotes = [];
foreach ($notifications as $notification) {
$xmlnotes[] = ['@attributes' => $notification->toArray()];
@ -56,6 +56,6 @@ class Notification extends BaseApi
$result = false;
}
DI::apiResponse()->exit('notes', ['note' => $result], $parameters['extension'] ?? null);
DI::apiResponse()->exit('notes', ['note' => $result], $this->parameters['extension'] ?? null);
}
}

View File

@ -33,7 +33,7 @@ use Friendica\Network\HTTPException\InternalServerErrorException;
*/
class Delete extends BaseApi
{
public static function rawContent(array $parameters = [])
public function rawContent()
{
self::checkAllowedScope(self::SCOPE_WRITE);
$uid = self::getCurrentUserID();
@ -64,7 +64,7 @@ class Delete extends BaseApi
Item::deleteForUser($condition, $uid);
$result = ['result' => 'deleted', 'message' => 'photo with id `' . $request['photo_id'] . '` has been deleted from server.'];
DI::apiResponse()->exit('photo_delete', ['$result' => $result], $parameters['extension'] ?? null);
DI::apiResponse()->exit('photo_delete', ['$result' => $result], $this->parameters['extension'] ?? null);
} else {
throw new InternalServerErrorException("unknown error on deleting photo from database table");
}

View File

@ -34,7 +34,7 @@ use Friendica\Network\HTTPException\InternalServerErrorException;
*/
class Delete extends BaseApi
{
public static function rawContent(array $parameters = [])
public function rawContent()
{
self::checkAllowedScope(self::SCOPE_WRITE);
$uid = self::getCurrentUserID();
@ -67,7 +67,7 @@ class Delete extends BaseApi
// return success of deletion or error message
if ($result) {
$answer = ['result' => 'deleted', 'message' => 'album `' . $request['album'] . '` with all containing photos has been deleted.'];
DI::apiResponse()->exit('photoalbum_delete', ['$result' => $answer], $parameters['extension'] ?? null);
DI::apiResponse()->exit('photoalbum_delete', ['$result' => $answer], $this->parameters['extension'] ?? null);
} else {
throw new InternalServerErrorException("unknown error - deleting from database failed");
}

View File

@ -32,7 +32,7 @@ use Friendica\Network\HTTPException\InternalServerErrorException;
*/
class Update extends BaseApi
{
public static function rawContent(array $parameters = [])
public function rawContent()
{
self::checkAllowedScope(self::SCOPE_WRITE);
$uid = self::getCurrentUserID();
@ -59,7 +59,7 @@ class Update extends BaseApi
// return success of updating or error message
if ($result) {
$answer = ['result' => 'updated', 'message' => 'album `' . $request['album'] . '` with all containing photos has been renamed to `' . $request['album_new'] . '`.'];
DI::apiResponse()->exit('photoalbum_update', ['$result' => $answer], $parameters['extension'] ?? null);
DI::apiResponse()->exit('photoalbum_update', ['$result' => $answer], $this->parameters['extension'] ?? null);
} else {
throw new InternalServerErrorException("unknown error - updating in database failed");
}

View File

@ -24,7 +24,6 @@ namespace Friendica\Module\Api\Friendica\Profile;
use Friendica\Profile\ProfileField\Collection\ProfileFields;
use Friendica\Content\Text\BBCode;
use Friendica\DI;
use Friendica\Model\Contact;
use Friendica\Model\Profile;
use Friendica\Module\BaseApi;
use Friendica\Network\HTTPException;
@ -34,7 +33,7 @@ use Friendica\Network\HTTPException;
*/
class Show extends BaseApi
{
public static function rawContent(array $parameters = [])
public function rawContent()
{
self::checkAllowedScope(self::SCOPE_READ);
$uid = self::getCurrentUserID();
@ -49,23 +48,20 @@ class Show extends BaseApi
$profile = self::formatProfile($profile, $profileFields);
$profiles = [];
if (!empty($parameters['extension']) && ($parameters['extension'] == 'xml')) {
if (!empty($this->parameters['extension']) && ($this->parameters['extension'] == 'xml')) {
$profiles['0:profile'] = $profile;
} else {
$profiles[] = $profile;
}
// return settings, authenticated user and profiles data
$self = Contact::selectFirst(['nurl'], ['uid' => $uid, 'self' => true]);
$result = [
'multi_profiles' => false,
'global_dir' => $directory,
'friendica_owner' => self::getUser($self['nurl']),
'friendica_owner' => DI::twitterUser()->createFromUserId($uid),
'profiles' => $profiles
];
DI::apiResponse()->exit('friendica_profiles', ['$result' => $result], $parameters['extension'] ?? null);
DI::apiResponse()->exit('friendica_profiles', ['$result' => $result], $this->parameters['extension'] ?? null);
}
/**

View File

@ -31,7 +31,7 @@ use Friendica\Module\Register;
*/
class Config extends BaseApi
{
public static function rawContent(array $parameters = [])
public function rawContent()
{
$config = [
'site' => [
@ -61,6 +61,6 @@ class Config extends BaseApi
],
];
self::exit('config', ['config' => $config], $parameters['extension'] ?? null);
DI::apiResponse()->exit('config', ['config' => $config], $this->parameters['extension'] ?? null);
}
}

View File

@ -29,8 +29,8 @@ use Friendica\DI;
*/
class Version extends BaseApi
{
public static function rawContent(array $parameters = [])
public function rawContent()
{
DI::apiResponse()->exit('version', ['version' => '0.9.7'], $parameters['extension'] ?? null);
DI::apiResponse()->exit('version', ['version' => '0.9.7'], $this->parameters['extension'] ?? null);
}
}

View File

@ -29,14 +29,14 @@ use Friendica\DI;
*/
class Test extends BaseApi
{
public static function rawContent(array $parameters = [])
public function rawContent()
{
if (!empty($parameters['extension']) && ($parameters['extension'] == 'xml')) {
if (!empty($this->parameters['extension']) && ($this->parameters['extension'] == 'xml')) {
$ok = 'true';
} else {
$ok = 'ok';
}
DI::apiResponse()->exit('ok', ['ok' => $ok], $parameters['extension'] ?? null);
DI::apiResponse()->exit('ok', ['ok' => $ok], $this->parameters['extension'] ?? null);
}
}

View File

@ -33,27 +33,26 @@ use Friendica\Module\BaseApi;
class Accounts extends BaseApi
{
/**
* @param array $parameters
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
*/
public static function rawContent(array $parameters = [])
public function rawContent()
{
$uid = self::getCurrentUserID();
if (empty($parameters['id']) && empty($parameters['name'])) {
if (empty($this->parameters['id']) && empty($this->parameters['name'])) {
DI::mstdnError()->UnprocessableEntity();
}
if (!empty($parameters['id'])) {
$id = $parameters['id'];
if (!empty($this->parameters['id'])) {
$id = $this->parameters['id'];
if (!DBA::exists('contact', ['id' => $id, 'uid' => 0])) {
DI::mstdnError()->RecordNotFound();
}
} else {
$contact = Contact::selectFirst(['id'], ['nick' => $parameters['name'], 'uid' => 0]);
$contact = Contact::selectFirst(['id'], ['nick' => $this->parameters['name'], 'uid' => 0]);
if (!empty($contact['id'])) {
$id = $contact['id'];
} elseif (!($id = Contact::getIdForURL($parameters['name'], 0, false))) {
} elseif (!($id = Contact::getIdForURL($this->parameters['name'], 0, false))) {
DI::mstdnError()->RecordNotFound();
}
}

View File

@ -32,12 +32,12 @@ use Friendica\Module\BaseApi;
*/
class Block extends BaseApi
{
public static function post(array $parameters = [])
public function post()
{
self::checkAllowedScope(self::SCOPE_FOLLOW);
$uid = self::getCurrentUserID();
if (empty($parameters['id'])) {
if (empty($this->parameters['id'])) {
DI::mstdnError()->UnprocessableEntity();
}
@ -46,7 +46,7 @@ class Block extends BaseApi
DI::mstdnError()->Forbidden();
}
$cdata = Contact::getPublicAndUserContactID($parameters['id'], $uid);
$cdata = Contact::getPublicAndUserContactID($this->parameters['id'], $uid);
if (empty($cdata['user'])) {
DI::mstdnError()->RecordNotFound();
}
@ -62,6 +62,6 @@ class Block extends BaseApi
Contact::terminateFriendship($owner, $contact);
Contact::revokeFollow($contact);
System::jsonExit(DI::mstdnRelationship()->createFromContactId($parameters['id'], $uid)->toArray());
System::jsonExit(DI::mstdnRelationship()->createFromContactId($this->parameters['id'], $uid)->toArray());
}
}

View File

@ -30,10 +30,9 @@ use Friendica\Module\BaseApi;
class FeaturedTags extends BaseApi
{
/**
* @param array $parameters
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
*/
public static function rawContent(array $parameters = [])
public function rawContent()
{
self::checkAllowedScope(self::SCOPE_READ);

View File

@ -31,16 +31,16 @@ use Friendica\Module\BaseApi;
*/
class Follow extends BaseApi
{
public static function post(array $parameters = [])
public function post()
{
self::checkAllowedScope(self::SCOPE_FOLLOW);
$uid = self::getCurrentUserID();
if (empty($parameters['id'])) {
if (empty($this->parameters['id'])) {
DI::mstdnError()->UnprocessableEntity();
}
$cid = Contact::follow($parameters['id'], $uid);
$cid = Contact::follow($this->parameters['id'], $uid);
System::jsonExit(DI::mstdnRelationship()->createFromContactId($cid, $uid)->toArray());
}

View File

@ -32,19 +32,18 @@ use Friendica\Module\BaseApi;
class Followers extends BaseApi
{
/**
* @param array $parameters
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
*/
public static function rawContent(array $parameters = [])
public function rawContent()
{
self::checkAllowedScope(self::SCOPE_READ);
$uid = self::getCurrentUserID();
if (empty($parameters['id'])) {
if (empty($this->parameters['id'])) {
DI::mstdnError()->UnprocessableEntity();
}
$id = $parameters['id'];
$id = $this->parameters['id'];
if (!DBA::exists('contact', ['id' => $id, 'uid' => 0])) {
DI::mstdnError()->RecordNotFound();
}
@ -73,7 +72,7 @@ class Followers extends BaseApi
$params['order'] = ['cid'];
}
$followers = DBA::select('contact-relation', ['relation-cid'], $condition, $parameters);
$followers = DBA::select('contact-relation', ['relation-cid'], $condition, $this->parameters);
while ($follower = DBA::fetch($followers)) {
self::setBoundaries($follower['relation-cid']);
$accounts[] = DI::mstdnAccount()->createFromContactId($follower['relation-cid'], $uid);

View File

@ -32,19 +32,18 @@ use Friendica\Module\BaseApi;
class Following extends BaseApi
{
/**
* @param array $parameters
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
*/
public static function rawContent(array $parameters = [])
public function rawContent()
{
self::checkAllowedScope(self::SCOPE_READ);
$uid = self::getCurrentUserID();
if (empty($parameters['id'])) {
if (empty($this->parameters['id'])) {
DI::mstdnError()->UnprocessableEntity();
}
$id = $parameters['id'];
$id = $this->parameters['id'];
if (!DBA::exists('contact', ['id' => $id, 'uid' => 0])) {
DI::mstdnError()->RecordNotFound();
}
@ -73,7 +72,7 @@ class Following extends BaseApi
$params['order'] = ['cid'];
}
$followers = DBA::select('contact-relation', ['cid'], $condition, $parameters);
$followers = DBA::select('contact-relation', ['cid'], $condition, $this->parameters);
while ($follower = DBA::fetch($followers)) {
self::setBoundaries($follower['cid']);
$accounts[] = DI::mstdnAccount()->createFromContactId($follower['cid'], $uid);

View File

@ -30,10 +30,9 @@ use Friendica\Module\BaseApi;
class IdentityProofs extends BaseApi
{
/**
* @param array $parameters
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
*/
public static function rawContent(array $parameters = [])
public function rawContent()
{
self::checkAllowedScope(self::SCOPE_READ);

View File

@ -33,19 +33,18 @@ use Friendica\Module\BaseApi;
class Lists extends BaseApi
{
/**
* @param array $parameters
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
*/
public static function rawContent(array $parameters = [])
public function rawContent()
{
self::checkAllowedScope(self::SCOPE_READ);
$uid = self::getCurrentUserID();
if (empty($parameters['id'])) {
if (empty($this->parameters['id'])) {
DI::mstdnError()->UnprocessableEntity();
}
$id = $parameters['id'];
$id = $this->parameters['id'];
if (!DBA::exists('contact', ['id' => $id, 'uid' => 0])) {
DI::mstdnError()->RecordNotFound();
}

View File

@ -31,17 +31,17 @@ use Friendica\Module\BaseApi;
*/
class Mute extends BaseApi
{
public static function post(array $parameters = [])
public function post()
{
self::checkAllowedScope(self::SCOPE_FOLLOW);
$uid = self::getCurrentUserID();
if (empty($parameters['id'])) {
if (empty($this->parameters['id'])) {
DI::mstdnError()->UnprocessableEntity();
}
Contact\User::setIgnored($parameters['id'], $uid, true);
Contact\User::setIgnored($this->parameters['id'], $uid, true);
System::jsonExit(DI::mstdnRelationship()->createFromContactId($parameters['id'], $uid)->toArray());
System::jsonExit(DI::mstdnRelationship()->createFromContactId($this->parameters['id'], $uid)->toArray());
}
}

View File

@ -32,12 +32,12 @@ use Friendica\Module\BaseApi;
*/
class Note extends BaseApi
{
public static function post(array $parameters = [])
public function post()
{
self::checkAllowedScope(self::SCOPE_WRITE);
$uid = self::getCurrentUserID();
if (empty($parameters['id'])) {
if (empty($this->parameters['id'])) {
DI::mstdnError()->UnprocessableEntity();
}
@ -45,13 +45,13 @@ class Note extends BaseApi
'comment' => '',
]);
$cdata = Contact::getPublicAndUserContactID($parameters['id'], $uid);
$cdata = Contact::getPublicAndUserContactID($this->parameters['id'], $uid);
if (empty($cdata['user'])) {
DI::mstdnError()->RecordNotFound();
}
Contact::update(['info' => $request['comment']], ['id' => $cdata['user']]);
System::jsonExit(DI::mstdnRelationship()->createFromContactId($parameters['id'], $uid)->toArray());
System::jsonExit(DI::mstdnRelationship()->createFromContactId($this->parameters['id'], $uid)->toArray());
}
}

View File

@ -32,10 +32,9 @@ use Friendica\Module\BaseApi;
class Relationships extends BaseApi
{
/**
* @param array $parameters
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
*/
public static function rawContent(array $parameters = [])
public function rawContent()
{
self::checkAllowedScope(self::SCOPE_READ);
$uid = self::getCurrentUserID();

View File

@ -35,10 +35,9 @@ use Friendica\Object\Search\ContactResult;
class Search extends BaseApi
{
/**
* @param array $parameters
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
*/
public static function rawContent(array $parameters = [])
public function rawContent()
{
self::checkAllowedScope(self::SCOPE_READ);
$uid = self::getCurrentUserID();

View File

@ -37,18 +37,17 @@ use Friendica\Protocol\Activity;
class Statuses extends BaseApi
{
/**
* @param array $parameters
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
*/
public static function rawContent(array $parameters = [])
public function rawContent()
{
$uid = self::getCurrentUserID();
if (empty($parameters['id'])) {
if (empty($this->parameters['id'])) {
DI::mstdnError()->UnprocessableEntity();
}
$id = $parameters['id'];
$id = $this->parameters['id'];
if (!DBA::exists('contact', ['id' => $id, 'uid' => 0])) {
DI::mstdnError()->RecordNotFound();
}

View File

@ -31,17 +31,17 @@ use Friendica\Module\BaseApi;
*/
class Unblock extends BaseApi
{
public static function post(array $parameters = [])
public function post()
{
self::checkAllowedScope(self::SCOPE_FOLLOW);
$uid = self::getCurrentUserID();
if (empty($parameters['id'])) {
if (empty($this->parameters['id'])) {
DI::mstdnError()->UnprocessableEntity();
}
Contact\User::setBlocked($parameters['id'], $uid, false);
Contact\User::setBlocked($this->parameters['id'], $uid, false);
System::jsonExit(DI::mstdnRelationship()->createFromContactId($parameters['id'], $uid)->toArray());
System::jsonExit(DI::mstdnRelationship()->createFromContactId($this->parameters['id'], $uid)->toArray());
}
}

View File

@ -31,17 +31,17 @@ use Friendica\Module\BaseApi;
*/
class Unfollow extends BaseApi
{
public static function post(array $parameters = [])
public function post()
{
self::checkAllowedScope(self::SCOPE_FOLLOW);
$uid = self::getCurrentUserID();
if (empty($parameters['id'])) {
if (empty($this->parameters['id'])) {
DI::mstdnError()->UnprocessableEntity();
}
Contact::unfollow($parameters['id'], $uid);
Contact::unfollow($this->parameters['id'], $uid);
System::jsonExit(DI::mstdnRelationship()->createFromContactId($parameters['id'], $uid)->toArray());
System::jsonExit(DI::mstdnRelationship()->createFromContactId($this->parameters['id'], $uid)->toArray());
}
}

View File

@ -31,17 +31,17 @@ use Friendica\Module\BaseApi;
*/
class Unmute extends BaseApi
{
public static function post(array $parameters = [])
public function post()
{
self::checkAllowedScope(self::SCOPE_FOLLOW);
$uid = self::getCurrentUserID();
if (empty($parameters['id'])) {
if (empty($this->parameters['id'])) {
DI::mstdnError()->UnprocessableEntity();
}
Contact\User::setIgnored($parameters['id'], $uid, false);
Contact\User::setIgnored($this->parameters['id'], $uid, false);
System::jsonExit(DI::mstdnRelationship()->createFromContactId($parameters['id'], $uid)->toArray());
System::jsonExit(DI::mstdnRelationship()->createFromContactId($this->parameters['id'], $uid)->toArray());
}
}

View File

@ -32,7 +32,7 @@ use Friendica\Util\HTTPInputData;
*/
class UpdateCredentials extends BaseApi
{
public static function patch(array $parameters = [])
public function patch()
{
self::checkAllowedScope(self::SCOPE_WRITE);
$uid = self::getCurrentUserID();

View File

@ -33,10 +33,9 @@ use Friendica\Module\BaseApi;
class VerifyCredentials extends BaseApi
{
/**
* @param array $parameters
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
*/
public static function rawContent(array $parameters = [])
public function rawContent()
{
self::checkAllowedScope(self::SCOPE_READ);
$uid = self::getCurrentUserID();

View File

@ -30,10 +30,9 @@ use Friendica\Module\BaseApi;
class Announcements extends BaseApi
{
/**
* @param array $parameters
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
*/
public static function rawContent(array $parameters = [])
public function rawContent()
{
self::checkAllowedScope(self::SCOPE_READ);

View File

@ -33,10 +33,9 @@ use Friendica\Util\Network;
class Apps extends BaseApi
{
/**
* @param array $parameters
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
*/
public static function post(array $parameters = [])
public function post()
{
$request = self::getRequest([
'client_name' => '',

View File

@ -30,7 +30,7 @@ use Friendica\Module\BaseApi;
*/
class VerifyCredentials extends BaseApi
{
public static function rawContent(array $parameters = [])
public function rawContent()
{
self::checkAllowedScope(self::SCOPE_READ);
$application = self::getCurrentApplication();

View File

@ -32,19 +32,18 @@ use Friendica\Module\BaseApi;
class Blocks extends BaseApi
{
/**
* @param array $parameters
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
*/
public static function rawContent(array $parameters = [])
public function rawContent()
{
self::checkAllowedScope(self::SCOPE_READ);
$uid = self::getCurrentUserID();
if (empty($parameters['id'])) {
if (empty($this->parameters['id'])) {
DI::mstdnError()->UnprocessableEntity();
}
$id = $parameters['id'];
$id = $this->parameters['id'];
if (!DBA::exists('contact', ['id' => $id, 'uid' => 0])) {
DI::mstdnError()->RecordNotFound();
}
@ -73,7 +72,7 @@ class Blocks extends BaseApi
$params['order'] = ['cid'];
}
$followers = DBA::select('user-contact', ['cid'], $condition, $parameters);
$followers = DBA::select('user-contact', ['cid'], $condition, $this->parameters);
while ($follower = DBA::fetch($followers)) {
self::setBoundaries($follower['cid']);
$accounts[] = DI::mstdnAccount()->createFromContactId($follower['cid'], $uid);

View File

@ -34,10 +34,9 @@ use Friendica\Network\HTTPException;
class Bookmarks extends BaseApi
{
/**
* @param array $parameters
* @throws HTTPException\InternalServerErrorException
*/
public static function rawContent(array $parameters = [])
public function rawContent()
{
self::checkAllowedScope(self::SCOPE_READ);
$uid = self::getCurrentUserID();

View File

@ -31,26 +31,25 @@ use Friendica\Module\BaseApi;
*/
class Conversations extends BaseApi
{
public static function delete(array $parameters = [])
public function delete()
{
self::checkAllowedScope(self::SCOPE_WRITE);
$uid = self::getCurrentUserID();
if (!empty($parameters['id'])) {
if (!empty($this->parameters['id'])) {
DI::mstdnError()->UnprocessableEntity();
}
DBA::delete('conv', ['id' => $parameters['id'], 'uid' => $uid]);
DBA::delete('mail', ['convid' => $parameters['id'], 'uid' => $uid]);
DBA::delete('conv', ['id' => $this->parameters['id'], 'uid' => $uid]);
DBA::delete('mail', ['convid' => $this->parameters['id'], 'uid' => $uid]);
System::jsonExit([]);
}
/**
* @param array $parameters
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
*/
public static function rawContent(array $parameters = [])
public function rawContent()
{
self::checkAllowedScope(self::SCOPE_READ);
$uid = self::getCurrentUserID();

View File

@ -31,17 +31,17 @@ use Friendica\Module\BaseApi;
*/
class Read extends BaseApi
{
public static function post(array $parameters = [])
public function post()
{
self::checkAllowedScope(self::SCOPE_WRITE);
$uid = self::getCurrentUserID();
if (!empty($parameters['id'])) {
if (!empty($this->parameters['id'])) {
DI::mstdnError()->UnprocessableEntity();
}
DBA::update('mail', ['seen' => true], ['convid' => $parameters['id'], 'uid' => $uid]);
DBA::update('mail', ['seen' => true], ['convid' => $this->parameters['id'], 'uid' => $uid]);
System::jsonExit(DI::mstdnConversation()->CreateFromConvId($parameters['id'])->toArray());
System::jsonExit(DI::mstdnConversation()->CreateFromConvId($this->parameters['id'])->toArray());
}
}

View File

@ -33,12 +33,11 @@ use Friendica\Network\HTTPException;
class CustomEmojis extends BaseApi
{
/**
* @param array $parameters
* @throws HTTPException\InternalServerErrorException
* @throws \ImagickException
* @see https://docs.joinmastodon.org/methods/accounts/follow_requests#pending-follows
*/
public static function rawContent(array $parameters = [])
public function rawContent()
{
$emojis = DI::mstdnEmoji()->createCollectionFromSmilies(Smilies::getList());

View File

@ -35,12 +35,11 @@ use Friendica\Network\HTTPException;
class Directory extends BaseApi
{
/**
* @param array $parameters
* @throws HTTPException\InternalServerErrorException
* @throws \ImagickException
* @see https://docs.joinmastodon.org/methods/instance/directory/
*/
public static function rawContent(array $parameters = [])
public function rawContent()
{
$request = self::getRequest([
'offset' => 0, // How many accounts to skip before returning results. Default 0.

View File

@ -30,10 +30,9 @@ use Friendica\Module\BaseApi;
class Endorsements extends BaseApi
{
/**
* @param array $parameters
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
*/
public static function rawContent(array $parameters = [])
public function rawContent()
{
System::jsonExit([]);
}

View File

@ -35,10 +35,9 @@ use Friendica\Protocol\Activity;
class Favourited extends BaseApi
{
/**
* @param array $parameters
* @throws HTTPException\InternalServerErrorException
*/
public static function rawContent(array $parameters = [])
public function rawContent()
{
self::checkAllowedScope(self::SCOPE_READ);
$uid = self::getCurrentUserID();

View File

@ -31,7 +31,7 @@ use Friendica\Module\BaseApi;
*/
class Filters extends BaseApi
{
public static function post(array $parameters = [])
public function post()
{
self::checkAllowedScope(self::SCOPE_WRITE);
@ -39,10 +39,9 @@ class Filters extends BaseApi
}
/**
* @param array $parameters
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
*/
public static function rawContent(array $parameters = [])
public function rawContent()
{
self::checkAllowedScope(self::SCOPE_READ);

View File

@ -33,7 +33,6 @@ use Friendica\Network\HTTPException;
class FollowRequests extends BaseApi
{
/**
* @param array $parameters
* @throws HTTPException\BadRequestException
* @throws HTTPException\InternalServerErrorException
* @throws HTTPException\NotFoundException
@ -43,16 +42,16 @@ class FollowRequests extends BaseApi
* @see https://docs.joinmastodon.org/methods/accounts/follow_requests#accept-follow
* @see https://docs.joinmastodon.org/methods/accounts/follow_requests#reject-follow
*/
public static function post(array $parameters = [])
public function post()
{
self::checkAllowedScope(self::SCOPE_FOLLOW);
$uid = self::getCurrentUserID();
$introduction = DI::intro()->selectOneById($parameters['id'], $uid);
$introduction = DI::intro()->selectOneById($this->parameters['id'], $uid);
$contactId = $introduction->cid;
switch ($parameters['action']) {
switch ($this->parameters['action']) {
case 'authorize':
Contact\Introduction::confirm($introduction);
$relationship = DI::mstdnRelationship()->createFromContactId($contactId, $uid);
@ -79,12 +78,11 @@ class FollowRequests extends BaseApi
}
/**
* @param array $parameters
* @throws HTTPException\InternalServerErrorException
* @throws \ImagickException
* @see https://docs.joinmastodon.org/methods/accounts/follow_requests/
*/
public static function rawContent(array $parameters = [])
public function rawContent()
{
self::checkAllowedScope(self::SCOPE_READ);
$uid = self::getCurrentUserID();

View File

@ -31,10 +31,9 @@ use Friendica\Object\Api\Mastodon\Instance as InstanceEntity;
class Instance extends BaseApi
{
/**
* @param array $parameters
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
*/
public static function rawContent(array $parameters = [])
public function rawContent()
{
System::jsonExit(InstanceEntity::get());
}

View File

@ -34,10 +34,9 @@ use Friendica\Util\Network;
class Peers extends BaseApi
{
/**
* @param array $parameters
* @throws HTTPException\InternalServerErrorException
*/
public static function rawContent(array $parameters = [])
public function rawContent()
{
$return = [];

View File

@ -34,10 +34,9 @@ use Friendica\Network\HTTPException;
class Rules extends BaseApi
{
/**
* @param array $parameters
* @throws HTTPException\InternalServerErrorException
*/
public static function rawContent(array $parameters = [])
public function rawContent()
{
$rules = [];
$id = 0;

Some files were not shown because too many files have changed in this diff Show More