Some more removed functionality from FileTag class

This commit is contained in:
Michael 2021-01-21 20:25:06 +00:00
parent d2ea3eabfb
commit fbcc59cc1d
4 changed files with 56 additions and 87 deletions

View 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;
}
}

View 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
]);
}
}