]> git.mxchange.org Git - friendica.git/blobdiff - src/Model/Post/Engagement.php
Use the owner, not the author
[friendica.git] / src / Model / Post / Engagement.php
index 48ce024d4984cb2d30220def89f39d303448a096..81ba6250233dfd7166d124777eb1473ea3e08dd3 100644 (file)
@@ -26,7 +26,6 @@ use Friendica\Core\Protocol;
 use Friendica\Database\Database;
 use Friendica\Database\DBA;
 use Friendica\DI;
-use Friendica\Model\Contact;
 use Friendica\Model\Item;
 use Friendica\Model\Post;
 use Friendica\Model\Verb;
@@ -37,6 +36,12 @@ use Friendica\Util\DateTimeFormat;
 
 class Engagement
 {
+       /**
+        * Store engagement data from an item array
+        *
+        * @param array $item
+        * @return void
+        */
        public static function storeFromItem(array $item)
        {
                if (!in_array($item['network'], Protocol::FEDERATED)) {
@@ -59,17 +64,12 @@ class Engagement
                        return;
                }
 
-               $parent = Post::selectFirst(['created', 'author-id', 'uid', 'private', 'contact-contact-type'], ['uri-id' => $item['parent-uri-id']]);
+               $parent = Post::selectFirst(['created', 'owner-id', 'uid', 'private', 'contact-contact-type'], ['uri-id' => $item['parent-uri-id']]);
                if ($parent['private'] != Item::PUBLIC) {
                        Logger::debug('Non public posts are not stored', ['uri-id' => $item['uri-id'], 'parent-uri-id' => $item['parent-uri-id'], 'uid' => $parent['uid'], 'private' => $parent['private']]);
                        return;
                }
 
-               if ($parent['contact-contact-type'] == Contact::TYPE_COMMUNITY) {
-                       Logger::debug('Group posts are not stored', ['uri-id' => $item['uri-id'], 'parent-uri-id' => $item['parent-uri-id'], 'author-id' => $parent['author-id']]);
-                       return;
-               }
-
                if ($parent['created'] < DateTimeFormat::utc('now - ' . DI::config()->get('channel', 'engagement_hours') . ' hour')) {
                        Logger::debug('Post is too old', ['uri-id' => $item['uri-id'], 'parent-uri-id' => $item['parent-uri-id'], 'created' => $parent['created']]);
                        return;
@@ -77,7 +77,7 @@ class Engagement
 
                $engagement = [
                        'uri-id'       => $item['parent-uri-id'],
-                       'author-id'    => $parent['author-id'],
+                       'owner-id'     => $parent['owner-id'],
                        'contact-type' => $parent['contact-contact-type'],
                        'created'      => $parent['created'],
                        'comments'     => DBA::count('post', ['parent-uri-id' => $item['parent-uri-id'], 'gravity' => Item::GRAVITY_COMMENT]),
@@ -87,10 +87,19 @@ class Engagement
                                Verb::getID(Activity::FOLLOW), Verb::getID(Activity::VIEW), Verb::getID(Activity::READ)
                        ])
                ];
+               if (($engagement['comments'] == 0) && ($engagement['activities'] == 0)) {
+                       Logger::debug('No comments nor activities. Engagement not stored', ['fields' => $engagement]);
+                       return;
+               }
                $ret = DBA::insert('post-engagement', $engagement, Database::INSERT_UPDATE);
                Logger::debug('Engagement stored', ['fields' => $engagement, 'ret' => $ret]);
        }
 
+       /**
+        * Expire old engagement data
+        *
+        * @return void
+        */
        public static function expire()
        {
                DBA::delete('post-engagement', ["`created` < ?", DateTimeFormat::utc('now - ' . DI::config()->get('channel', 'engagement_hours') . ' hour')]);