X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FConsole%2FRelay.php;h=52682241e69c63941ec84610a70445fad4287b7b;hb=4e674d98eb1396f252988e3bde827e850b8a9239;hp=e1da56dba7431e6cef5e278e7be741621532cd2b;hpb=178455928a87b549cea8f1936baa5776b214b8bc;p=friendica.git diff --git a/src/Console/Relay.php b/src/Console/Relay.php index e1da56dba7..52682241e6 100644 --- a/src/Console/Relay.php +++ b/src/Console/Relay.php @@ -1,6 +1,6 @@ [-h|--help|-?] [-v] - bin/console relay remove [-h|--help|-?] [-v] + bin/console relay remove [-f|--force] [-h|--help|-?] [-v] Description - bin/console relay - Lists all active relais + bin/console relay list + Lists all active relay servers bin/console relay add - Add a relay actor + Add a relay actor in the format https://relayserver.tld/actor - bin/console relay remove - Remove a relay actor + bin/console relay remove + Remove a relay actor in the format https://relayserver.tld/actor Options + -f|--force Change the relay status in the system even if the unsubscribe message failed -h|--help|-? Show help information -v Show more debug information. HELP; return $help; } - public function __construct(App\Mode $appMode, array $argv = null) + public function __construct(\Friendica\Database\Database $dba, array $argv = null) { parent::__construct($argv); - $this->appMode = $appMode; + $this->dba = $dba; } - protected function doExecute() + protected function doExecute(): int { if ($this->getOption('v')) { $this->out('Executable: ' . $this->executable); @@ -104,18 +89,18 @@ HELP; throw new CommandArgsException('Too many arguments'); } - if (count($this->args) == 1) { - throw new CommandArgsException('Too few arguments'); - } - - if (count($this->args) == 0) { - $contacts = DBA::select('apcontact', ['url'], - ["`type` = ? AND `url` IN (SELECT `url` FROM `contact` WHERE `uid` = ? AND `rel` IN (?, ?))", - 'Application', 0, Contact::FOLLOWER, Contact::FRIEND]); - while ($contact = DBA::fetch($contacts)) { + if ((count($this->args) == 1) && ($this->getArgument(0) == 'list')) { + $contacts = $this->dba->select('apcontact', ['url'], + ["`type` IN (?, ?) AND `url` IN (SELECT `url` FROM `contact` WHERE `uid` = ? AND `rel` = ?)", + 'Application', 'Service', 0, Contact::FRIEND]); + while ($contact = $this->dba->fetch($contacts)) { $this->out($contact['url']); } - DBA::close($contacts); + $this->dba->close($contacts); + } elseif (count($this->args) == 0) { + throw new CommandArgsException('too few arguments'); + } elseif (count($this->args) == 1) { + throw new CommandArgsException($this->getArgument(0) . ' is no valid command'); } if (count($this->args) == 2) { @@ -123,7 +108,7 @@ HELP; $actor = $this->getArgument(1); $apcontact = APContact::getByURL($actor); - if (empty($apcontact) || ($apcontact['type'] != 'Application')) { + if (empty($apcontact) || !in_array($apcontact['type'], ['Application', 'Service'])) { $this->out($actor . ' is no relay actor'); return 1; } @@ -135,10 +120,14 @@ HELP; $this->out($actor . " couldn't be added"); } } elseif ($mode == 'remove') { - if (Transmitter::sendRelayUndoFollow($actor)) { + $force = $this->getOption(['f', 'force'], false); + + if (Transmitter::sendRelayUndoFollow($actor, $force)) { $this->out('Successfully removed ' . $actor); - } else { + } elseif (!$force) { $this->out($actor . " couldn't be removed"); + } else { + $this->out($actor . " is forcefully removed"); } } else { throw new CommandArgsException($mode . ' is no valid command');