From fbcc59cc1d4d4f7cfeb736d2c7923a0aca137601 Mon Sep 17 00:00:00 2001 From: Michael Date: Thu, 21 Jan 2021 20:25:06 +0000 Subject: [PATCH] Some more removed functionality from FileTag class --- src/Model/FileTag.php | 65 ---------------------------------- src/Model/Post/Category.php | 44 +++++++++++++++++------ src/Module/Filer/RemoveTag.php | 26 +++++++++----- src/Module/Filer/SaveTag.php | 8 +++-- 4 files changed, 56 insertions(+), 87 deletions(-) diff --git a/src/Model/FileTag.php b/src/Model/FileTag.php index 70f934fc3c..15dadb44fd 100644 --- a/src/Model/FileTag.php +++ b/src/Model/FileTag.php @@ -21,8 +21,6 @@ namespace Friendica\Model; -use Friendica\Database\DBA; - /** * This class handles FileTag related functions * @@ -133,67 +131,4 @@ class FileTag return self::arrayToFile($list_array, $type); } - - /** - * Add tag to file - * - * @param int $uid Unique identity. - * @param int $item_id Item identity. - * @param string $file File tag. - * - * @return boolean A value indicating success or failure. - * @throws \Friendica\Network\HTTPException\InternalServerErrorException - */ - public static function saveFile($uid, $item_id, $file) - { - if (!intval($uid)) { - return false; - } - - $item = Post::selectFirst(['uri-id'], ['id' => $item_id, 'uid' => $uid]); - if (DBA::isResult($item)) { - $stored_file = Post\Category::getTextByURIId($item['uri-id'], $uid); - - if (!stristr($stored_file, '[' . self::encode($file) . ']')) { - Post\Category::storeTextByURIId($item['uri-id'], $uid, $stored_file . '[' . self::encode($file) . ']'); - } - } - - return true; - } - - /** - * Remove tag from file - * - * @param int $uid Unique identity. - * @param int $item_id Item identity. - * @param string $file File tag. - * @param boolean $cat Optional value indicating the term type (i.e. Category or File) - * - * @return boolean A value indicating success or failure. - * @throws \Friendica\Network\HTTPException\InternalServerErrorException - */ - public static function unsaveFile($uid, $item_id, $file, $cat = false) - { - if (!intval($uid)) { - return false; - } - - if ($cat == true) { - $pattern = '<' . self::encode($file) . '>'; - } else { - $pattern = '[' . self::encode($file) . ']'; - } - - $item = Post::selectFirst(['uri-id'], ['id' => $item_id, 'uid' => $uid]); - if (!DBA::isResult($item)) { - return false; - } - - $file = Post\Category::getTextByURIId($item['uri-id'], $uid); - - Post\Category::storeTextByURIId($item['uri-id'], $uid, str_replace($pattern, '', $file)); - - return true; - } } diff --git a/src/Model/Post/Category.php b/src/Model/Post/Category.php index b653f43a75..45afd81735 100644 --- a/src/Model/Post/Category.php +++ b/src/Model/Post/Category.php @@ -50,6 +50,23 @@ class Category return DBA::delete('post-category', ['uri-id' => $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. @@ -166,18 +183,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::FILE, $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 + ]); + } } diff --git a/src/Module/Filer/RemoveTag.php b/src/Module/Filer/RemoveTag.php index a8a8a896b3..58a71dcd98 100644 --- a/src/Module/Filer/RemoveTag.php +++ b/src/Module/Filer/RemoveTag.php @@ -22,8 +22,9 @@ namespace Friendica\Module\Filer; use Friendica\BaseModule; +use Friendica\Database\DBA; use Friendica\DI; -use Friendica\Model\FileTag; +use Friendica\Model\Post; use Friendica\Network\HTTPException; use Friendica\Util\XML; @@ -46,26 +47,33 @@ class RemoveTag extends BaseModule $term = XML::unescape(trim($_GET['term'] ?? '')); $cat = XML::unescape(trim($_GET['cat'] ?? '')); - $category = (($cat) ? true : false); - - if ($category) { + if (!empty($cat)) { + $type = Post\Category::CATEGORY; $term = $cat; + } else { + $type = Post\Category::FILE; } $logger->info('Filer - Remove Tag', [ - 'term' => $term, - 'item' => $item_id, - 'category' => ($category ? 'true' : 'false') + 'term' => $term, + 'item' => $item_id, + 'type' => $type ]); if ($item_id && strlen($term)) { - if (!FileTag::unsaveFile(local_user(), $item_id, $term, $category)) { + $item = Post::selectFirst(['uri-id'], ['id' => $item_id]); + if (!DBA::isResult($item)) { + return; + } + if (!Post\Category::deleteFileByURIId($item['uri-id'], local_user(), $type, $term)) { notice(DI::l10n()->t('Item was not removed')); } } else { notice(DI::l10n()->t('Item was not deleted')); } - DI::baseUrl()->redirect('network?file=' . rawurlencode($term)); + if ($type == Post\Category::FILE) { + DI::baseUrl()->redirect('filed?file=' . rawurlencode($term)); + } } } diff --git a/src/Module/Filer/SaveTag.php b/src/Module/Filer/SaveTag.php index a396c17707..fc995ce260 100644 --- a/src/Module/Filer/SaveTag.php +++ b/src/Module/Filer/SaveTag.php @@ -23,6 +23,7 @@ namespace Friendica\Module\Filer; use Friendica\BaseModule; use Friendica\Core\Renderer; +use Friendica\Database\DBA; use Friendica\DI; use Friendica\Model; use Friendica\Util\XML; @@ -52,8 +53,11 @@ class SaveTag extends BaseModule $logger->info('filer', ['tag' => $term, 'item' => $item_id]); if ($item_id && strlen($term)) { - // file item - Model\FileTag::saveFile(local_user(), $item_id, $term); + $item = Model\Post::selectFirst(['uri-id'], ['id' => $item_id]); + if (!DBA::isResult($item)) { + return; + } + Model\Post\Category::storeFileByURIId($item['uri-id'], local_user(), Model\Post\Category::FILE, $term); } // return filer dialog