]> git.mxchange.org Git - friendica.git/commitdiff
Some more removed functionality from FileTag class
authorMichael <heluecht@pirati.ca>
Thu, 21 Jan 2021 20:25:06 +0000 (20:25 +0000)
committerMichael <heluecht@pirati.ca>
Thu, 21 Jan 2021 20:25:06 +0000 (20:25 +0000)
src/Model/FileTag.php
src/Model/Post/Category.php
src/Module/Filer/RemoveTag.php
src/Module/Filer/SaveTag.php

index 70f934fc3c47e18dd7e2a13ac2fa52667c32a57d..15dadb44fd3848513ae0975363954b38453c2fb7 100644 (file)
@@ -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;
-       }
 }
index b653f43a754a6bdc2d760a2d4a10b5bd438277a1..45afd81735cd5115511f954be05f47c53061ab4e 100644 (file)
@@ -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
+               ]);
+       }
 }
index a8a8a896b3f3d49dd23afd16eb085a6967f8d91c..58a71dcd98fad5556096485583ac4518316f70ee 100644 (file)
@@ -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));
+               }
        }
 }
index a396c17707b5cafff510534d51ef1946c8b1fbe3..fc995ce2608e9afc76c3e23fd74be379d9c62135 100644 (file)
@@ -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