]> git.mxchange.org Git - friendica.git/blobdiff - src/Console/Contact.php
Convert class calls into DI calls
[friendica.git] / src / Console / Contact.php
index 8bff00f1d6a18686a8b7ebd0504240631d275ef6..f051d870a295c8710a72f21a7b7c57992fc3f486 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
- * @copyright Copyright (C) 2010-2021, the Friendica project
+ * @copyright Copyright (C) 2010-2022, the Friendica project
  *
  * @license GNU AGPL version 3 or any later version
  *
@@ -23,8 +23,10 @@ namespace Friendica\Console;
 
 use Console_Table;
 use Friendica\App;
+use Friendica\DI;
 use Friendica\Model\Contact as ContactModel;
 use Friendica\Model\User as UserModel;
+use Friendica\Network\Probe;
 use Friendica\Util\Temporal;
 use RuntimeException;
 use Seld\CliPrompt\CliPrompt;
@@ -153,18 +155,20 @@ HELP;
                        }
                }
 
+               $url = Probe::cleanURI($url);
+
                $contact = ContactModel::getByURLForUser($url, $user['uid']);
                if (!empty($contact)) {
                        throw new RuntimeException('Contact already exists');
                }
 
                $network = $this->getArgument(3);
-               if (empty($network) && $network !== '') {
+               if ($network === null) {
                        $this->out('Enter network, or leave blank: ');
                        $network = CliPrompt::prompt();
                }
 
-               $result = ContactModel::createFromProbe($user, $url, false, $network);
+               $result = ContactModel::createFromProbeForUser($user['uid'], $url, $network);
 
                if ($result['success']) {
                        $this->out('User ' . $user['nickname'] . ' now connected to ' . $url . ', contact ID ' . $result['cid']);
@@ -174,11 +178,12 @@ HELP;
        }
 
        /**
-        * Sends an unfriend message.  Does not remove the contact
+        * Sends an unfriend message.
         *
         * @return bool True, if the command was successful
+        * @throws \Exception
         */
-       private function terminateContact()
+       private function terminateContact(): bool
        {
                $cid = $this->getArgument(1);
                if (empty($cid)) {
@@ -194,15 +199,24 @@ HELP;
                        throw new RuntimeException('Contact not found');
                }
 
-               $user = UserModel::getById($contact['uid']);
+               if (empty($contact['uid'])) {
+                       throw new RuntimeException('Contact must be user-specific (uid != 0)');
+               }
+
+               try {
+                       ContactModel::unfollow($contact);
+
+                       $this->out('Contact was successfully unfollowed');
 
-               $result = ContactModel::terminateFriendship($user, $contact);
+                       return true;
+               } catch (\Exception $e) {
+                       DI::logger()->error($e->getMessage(), ['contact' => $contact]);
+                       throw new RuntimeException('Unable to unfollow this contact, please check the log');
+               }
        }
 
        /**
         * Marks a contact for removal
-        *
-        * @return bool True, if the command was successful
         */
        private function removeContact()
        {
@@ -215,7 +229,7 @@ HELP;
                        }
                }
 
-               $result = ContactModel::remove($cid);
+               ContactModel::remove($cid);
        }
 
        /**
@@ -268,7 +282,7 @@ HELP;
                                }
                                break;
                        case 'url':
-                               $user = $this->getUserByNick(2);
+                               $user    = $this->getUserByNick(2);
                                $url     = $this->getArgument(3);
                                $contact = ContactModel::getByURLForUser($url, $user['uid'], false, $fields);
                                if (!empty($contact)) {