]> git.mxchange.org Git - friendica.git/blobdiff - src/Model/Conversation.php
Merge pull request #9411 from tobiasd/20201011-de
[friendica.git] / src / Model / Conversation.php
index b8e55e5b961a349e10b4dee8b1a3412eb9d13f2e..1dcb6b0c2d7cc8476d1a0038eb613579d092a487 100644 (file)
@@ -1,6 +1,22 @@
 <?php
 /**
- * @file src/Model/Conversation
+ * @copyright Copyright (C) 2020, Friendica
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
  */
 
 namespace Friendica\Model;
@@ -25,20 +41,34 @@ class Conversation
        const PARCEL_TWITTER            = 67;
        const PARCEL_UNKNOWN            = 255;
 
+       /**
+        * Unknown message direction
+        */
+       const UNKNOWN = 0;
+       /**
+        * The message had been pushed to this sytem
+        */
+       const PUSH    = 1;
+       /**
+        * The message had been fetched by our system
+        */
+       const PULL    = 2;
+
        public static function getByItemUri($item_uri)
        {
                return DBA::selectFirst('conversation', [], ['item-uri' => $item_uri]);
        }
 
        /**
-        * @brief Store the conversation data
+        * Store the conversation data
         *
         * @param array $arr Item array with conversation data
         * @return array Item array with removed conversation data
+        * @throws \Exception
         */
        public static function insert(array $arr)
        {
-               if (in_array(defaults($arr, 'network', Protocol::PHANTOM),
+               if (in_array(($arr['network'] ?? '') ?: Protocol::PHANTOM,
                        [Protocol::ACTIVITYPUB, Protocol::DFRN, Protocol::DIASPORA, Protocol::OSTATUS, Protocol::TWITTER]) && !empty($arr['uri'])) {
                        $conversation = ['item-uri' => $arr['uri'], 'received' => DateTimeFormat::utcNow()];
 
@@ -62,6 +92,10 @@ class Conversation
                                $conversation['protocol'] = $arr['protocol'];
                        }
 
+                       if (isset($arr['direction'])) {
+                               $conversation['direction'] = $arr['direction'];
+                       }
+
                        if (isset($arr['source'])) {
                                $conversation['source'] = $arr['source'];
                        }
@@ -75,8 +109,13 @@ class Conversation
                                        unset($old_conv['source']);
                                }
                                // Update structure data all the time but the source only when its from a better protocol.
-                               if (empty($conversation['source']) || (!empty($old_conv['source']) &&
-                                       ($old_conv['protocol'] < defaults($conversation, 'protocol', PARCEL_UNKNOWN)))) {
+                               if (
+                                       empty($conversation['source'])
+                                       || (
+                                               !empty($old_conv['source'])
+                                               && ($old_conv['protocol'] < (($conversation['protocol'] ?? '') ?: self::PARCEL_UNKNOWN))
+                                       )
+                               ) {
                                        unset($conversation['protocol']);
                                        unset($conversation['source']);
                                }
@@ -96,6 +135,7 @@ class Conversation
                unset($arr['conversation-href']);
                unset($arr['protocol']);
                unset($arr['source']);
+               unset($arr['direction']);
 
                return $arr;
        }