X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FModel%2FPost%2FCategory.php;h=2c35a40ad4b8756adc990ecfe01bce85982ed371;hb=21f172c585aff8c606774a05fde1548ddff1667d;hp=f785ee62b8c4a710e5bff37e4a569210119fdce6;hpb=122ad0af14f046c2462a03fe33967dc41abfc8b5;p=friendica.git diff --git a/src/Model/Post/Category.php b/src/Model/Post/Category.php index f785ee62b8..2c35a40ad4 100644 --- a/src/Model/Post/Category.php +++ b/src/Model/Post/Category.php @@ -1,6 +1,6 @@ $uri_id, 'uid' => $uid]); + } + + /** + * Delete all categories and files from a given uri-id and user + * + * @param int $uri_id + * @param int $uid + * @return boolean success + * @throws \Exception + */ + public static function deleteFileByURIId(int $uri_id, int $uid, int $type, string $file) + { + $tagid = Tag::getID($file); + if (empty($tagid)) { + return false; + } + + return DBA::delete('post-category', ['uri-id' => $uri_id, 'uid' => $uid, 'type' => $type, 'tid' => $tagid]); + } /** * Generates the legacy item.file field string from an item ID. * Includes only file and category terms. * - * @param int $item_id + * @param int $uri_id + * @param int $uid * @return string * @throws \Exception */ @@ -61,6 +92,63 @@ class Category return $file_text; } + /** + * Generates an array of files or categories of a given uri-id + * + * @param int $uid + * @param int $type + * @return array + * @throws \Exception + */ + public static function getArray(int $uid, int $type) + { + $tags = DBA::selectToArray('category-view', ['name'], ['uid' => $uid, 'type' => $type], + ['group_by' => ['name'], 'order' => ['name']]); + if (empty($tags)) { + return []; + } + + return array_column($tags, 'name'); + } + + public static function existsForURIId(int $uri_id, int $uid) + { + return DBA::exists('post-category', ['uri-id' => $uri_id, 'uid' => $uid]); + } + + /** + * Generates an array of files or categories of a given uri-id + * + * @param int $uri_id + * @param int $uid + * @param int $type + * @return array + * @throws \Exception + */ + public static function getArrayByURIId(int $uri_id, int $uid, int $type = self::CATEGORY) + { + $tags = DBA::selectToArray('category-view', ['type', 'name'], ['uri-id' => $uri_id, 'uid' => $uid, 'type' => $type]); + if (empty($tags)) { + return []; + } + + return array_column($tags, 'name'); + } + + /** + * Generates a comma separated list of files or categories + * + * @param int $uri_id + * @param int $uid + * @param int $type + * @return string + * @throws \Exception + */ + public static function getCSVByURIId(int $uri_id, int $uid, int $type) + { + return implode(',', self::getArrayByURIId($uri_id, $uid, $type)); + } + /** * Inserts new terms for the provided item ID based on the legacy item.file field BBCode content. * Deletes all previous file terms for the same item ID. @@ -72,7 +160,7 @@ class Category */ public static function storeTextByURIId(int $uri_id, int $uid, string $files) { - $message = Item::selectFirst(['deleted'], ['uri-id' => $uri_id, 'uid' => $uid]); + $message = Post::selectFirst(['deleted'], ['uri-id' => $uri_id, 'uid' => $uid]); if (DBA::isResult($message)) { // Clean up all tags DBA::delete('post-category', ['uri-id' => $uri_id, 'uid' => $uid]); @@ -100,18 +188,23 @@ class Category if (preg_match_all("/\<(.*?)\>/ism", $files, $result)) { foreach ($result[1] as $file) { - $tagid = Tag::getID($file); - if (empty($tagid)) { - continue; - } - - DBA::replace('post-category', [ - 'uri-id' => $uri_id, - 'uid' => $uid, - 'type' => self::CATEGORY, - 'tid' => $tagid - ]); + self::storeFileByURIId($uri_id, $uid, self::CATEGORY, $file); } } } + + public static function storeFileByURIId(int $uri_id, int $uid, int $type, string $file) + { + $tagid = Tag::getID($file); + if (empty($tagid)) { + return false; + } + + return DBA::replace('post-category', [ + 'uri-id' => $uri_id, + 'uid' => $uid, + 'type' => $type, + 'tid' => $tagid + ]); + } }