]> git.mxchange.org Git - friendica.git/blobdiff - src/Model/Post/Collection.php
Merge branch 'develop' into new_image_presentation
[friendica.git] / src / Model / Post / Collection.php
index cf968d61744d30340eb4426f3b18addd18316823..2758d8027749684c1d9b8952d58572965813ac00 100644 (file)
 namespace Friendica\Model\Post;
 
 use Friendica\Database\DBA;
-use \BadMethodCallException;
+use BadMethodCallException;
 use Friendica\Database\Database;
+use Friendica\DI;
+use Friendica\Model\Item;
+use Friendica\Protocol\ActivityPub;
 
 class Collection
 {
@@ -34,14 +37,20 @@ class Collection
         *
         * @param integer $uri_id
         * @param integer $type
+        * @param integer $author_id
+        * @param integer $cache_uid If set to a non zero value, the featured cache is cleared
         */
-       public static function add(int $uri_id, int $type)
+       public static function add(int $uri_id, int $type, int $author_id, int $cache_uid = 0)
        {
                if (empty($uri_id)) {
                        throw new BadMethodCallException('Empty URI_id');
                }
 
-               DBA::insert('post-collection', ['uri-id' => $uri_id, 'type' => $type], Database::INSERT_IGNORE);
+               DBA::insert('post-collection', ['uri-id' => $uri_id, 'type' => $type, 'author-id' => $author_id], Database::INSERT_IGNORE);
+
+               if (!empty($cache_uid) && ($type == self::FEATURED)) {
+                       DI::cache()->delete(ActivityPub\Transmitter::CACHEKEY_FEATURED . $cache_uid);
+               }
        }
 
        /**
@@ -49,13 +58,31 @@ class Collection
         *
         * @param integer $uri_id
         * @param integer $type
+        * @param integer $cache_uid If set to a non zero value, the featured cache is cleared
         */
-       public static function remove(int $uri_id, int $type)
+       public static function remove(int $uri_id, int $type, int $cache_uid = 0)
        {
                if (empty($uri_id)) {
                        throw new BadMethodCallException('Empty URI_id');
                }
 
                DBA::delete('post-collection', ['uri-id' => $uri_id, 'type' => $type]);
+
+               if (!empty($cache_uid) && ($type == self::FEATURED)) {
+                       DI::cache()->delete(ActivityPub\Transmitter::CACHEKEY_FEATURED . $cache_uid);
+               }
+       }
+
+       /**
+        * Fetch collections for a given contact
+        *
+        * @param integer $cid
+        * @param [type] $type
+        * @param array $fields
+        * @return array
+        */
+       public static function selectToArrayForContact(int $cid, int $type = self::FEATURED, array $fields = []) 
+       {
+               return DBA::selectToArray('collection-view', $fields, ['cid' => $cid, 'private' => [Item::PUBLIC, Item::UNLISTED], 'deleted' => false, 'type' => $type]);
        }
 }