]> git.mxchange.org Git - friendica.git/blobdiff - src/Core/Console/GlobalCommunityBlock.php
Merge pull request #6746 from nupplaphil/issue/6338-notices
[friendica.git] / src / Core / Console / GlobalCommunityBlock.php
index 569bd78162b1f847033ad419ecfb38523d57bd5f..d99d99ceeaf86208919f04cd5d372fa39873d24b 100644 (file)
@@ -1,70 +1,75 @@
-<?php\r
-\r
-namespace Friendica\Core\Console;\r
-\r
-use Friendica\Core\L10n;\r
-use Friendica\Model\Contact;\r
-\r
-/**\r
- * Description of GlobalCommunityBlock\r
- *\r
- * @author Hypolite Petovan <mrpetovan@gmail.com>\r
- */\r
-class GlobalCommunityBlock extends \Asika\SimpleConsole\Console\r
-{\r
-       protected $helpOptions = ['h', 'help', '?'];\r
-\r
-       protected function getHelp()\r
-       {\r
-               $help = <<<HELP\r
-console globalcommunityblock - Silence remote profile from global community page\r
-Usage\r
-       bin/console globalcommunityblock <profile_url> [-h|--help|-?] [-v]\r
-\r
-Description\r
-       bin/console globalcommunityblock <profile_url>\r
-               Silences the provided remote profile URL from the global community page\r
-\r
-Options\r
-    -h|--help|-? Show help information\r
-    -v           Show more debug information.\r
-HELP;\r
-               return $help;\r
-       }\r
-\r
-       protected function doExecute()\r
-       {\r
-               if ($this->getOption('v')) {\r
-                       $this->out('Class: ' . __CLASS__);\r
-                       $this->out('Arguments: ' . var_export($this->args, true));\r
-                       $this->out('Options: ' . var_export($this->options, true));\r
-               }\r
-\r
-               if (count($this->args) == 0) {\r
-                       $this->out($this->getHelp());\r
-                       return 0;\r
-               }\r
-\r
-               if (count($this->args) > 1) {\r
-                       throw new \Asika\SimpleConsole\CommandArgsException('Too many arguments');\r
-               }\r
-\r
-               require_once '.htconfig.php';\r
-               $result = \dba::connect($db_host, $db_user, $db_pass, $db_data);\r
-               unset($db_host, $db_user, $db_pass, $db_data);\r
-\r
-               if (!$result) {\r
-                       throw new \RuntimeException('Unable to connect to database');\r
-               }\r
-\r
-               $contact_id = Contact::getIdForURL($argv[1]);\r
-               if (!$contact_id) {\r
-                       throw new \RuntimeException(L10n::t('Could not find any contact entry for this URL (%s)', $nurl));\r
-               }\r
-               Contact::block($contact_id);\r
-               $this->out(L10n::t('The contact has been blocked from the node'));\r
-\r
-               return 0;\r
-       }\r
-\r
-}\r
+<?php
+
+namespace Friendica\Core\Console;
+
+use Friendica\Core\L10n;
+use Friendica\Model\Contact;
+
+/**
+ * @brief tool to block an account from the node
+ *
+ * With this tool, you can block an account in such a way, that no postings
+ * or comments this account writes are accepted to the node.
+ *
+ * License: AGPLv3 or later, same as Friendica
+ *
+ * @author Tobias Diekershoff <tobias.diekershoff@gmx.net>
+ * @author Hypolite Petovan <hypolite@mrpetovan.com>
+ */
+class GlobalCommunityBlock extends \Asika\SimpleConsole\Console
+{
+       protected $helpOptions = ['h', 'help', '?'];
+
+       protected function getHelp()
+       {
+               $help = <<<HELP
+console globalcommunityblock - Block remote profile from interacting with this node
+Usage
+       bin/console globalcommunityblock <profile_url> [-h|--help|-?] [-v]
+
+Description
+       Blocks an account in such a way that no postings or comments this account writes are accepted to this node.
+
+Options
+    -h|--help|-? Show help information
+    -v           Show more debug information.
+HELP;
+               return $help;
+       }
+
+       protected function doExecute()
+       {
+               $a = \get_app();
+
+               if ($this->getOption('v')) {
+                       $this->out('Class: ' . __CLASS__);
+                       $this->out('Arguments: ' . var_export($this->args, true));
+                       $this->out('Options: ' . var_export($this->options, true));
+               }
+
+               if (count($this->args) == 0) {
+                       $this->out($this->getHelp());
+                       return 0;
+               }
+
+               if (count($this->args) > 1) {
+                       throw new \Asika\SimpleConsole\CommandArgsException('Too many arguments');
+               }
+
+               if ($a->getMode()->isInstall()) {
+                       throw new \RuntimeException('Database isn\'t ready or populated yet');
+               }
+
+               $contact_id = Contact::getIdForURL($this->getArgument(0));
+               if (!$contact_id) {
+                       throw new \RuntimeException(L10n::t('Could not find any contact entry for this URL (%s)', $this->getArgument(0)));
+               }
+               if(Contact::block($contact_id)) {
+                       $this->out(L10n::t('The contact has been blocked from the node'));
+               } else {
+                       throw new \RuntimeException('The contact block failed.');
+               }
+
+               return 0;
+       }
+}