]> git.mxchange.org Git - friendica.git/blobdiff - src/Model/Post/Collection.php
Merge pull request #11526 from annando/ap-endpoint-cache
[friendica.git] / src / Model / Post / Collection.php
index cf968d61744d30340eb4426f3b18addd18316823..34b5dc6dee7a2ae83b3e22075fbb0833083b5043 100644 (file)
 namespace Friendica\Model\Post;
 
 use Friendica\Database\DBA;
-use \BadMethodCallException;
+use BadMethodCallException;
 use Friendica\Database\Database;
+use Friendica\DI;
+use Friendica\Protocol\ActivityPub;
 
 class Collection
 {
@@ -34,14 +36,19 @@ 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 add(int $uri_id, int $type)
+       public static function add(int $uri_id, int $type, 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);
+
+               if (!empty($cache_uid) && ($type == self::FEATURED)) {
+                       DI::cache()->delete(ActivityPub\Transmitter::CACHEKEY_FEATURED . $cache_uid);
+               }
        }
 
        /**
@@ -49,13 +56,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, 'type' => $type]);
        }
 }