namespace Friendica\Model;
-use Friendica\Database\DBA;
-
/**
* This class handles FileTag related functions
*
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;
- }
}
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.
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
+ ]);
+ }
}
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;
$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));
+ }
}
}
use Friendica\BaseModule;
use Friendica\Core\Renderer;
+use Friendica\Database\DBA;
use Friendica\DI;
use Friendica\Model;
use Friendica\Util\XML;
$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