diff --git a/include/files.php b/include/files.php deleted file mode 100644 index 64fe6a310..000000000 --- a/include/files.php +++ /dev/null @@ -1,55 +0,0 @@ -/ism", $message["file"], $files)) { - foreach ($files[1] as $file) { - q("INSERT INTO `term` (`uid`, `oid`, `otype`, `type`, `term`) VALUES (%d, %d, %d, %d, '%s')", - intval($message["uid"]), intval($itemid), intval(TERM_OBJ_POST), intval(TERM_CATEGORY), dbesc($file)); - } - } -} - -function create_files_from_itemuri($itemuri, $uid) -{ - $messages = q("SELECT `id` FROM `item` WHERE uri ='%s' AND uid=%d", dbesc($itemuri), intval($uid)); - - if (count($messages)) { - foreach ($messages as $message) - create_files_from_item($message["id"]); - } -} - -function update_files_for_items() -{ - $messages = q("SELECT `id` FROM `item` where file !=''"); - - foreach ($messages as $message) { - echo $message["id"] . "\n"; - create_files_from_item($message["id"]); - } -} diff --git a/include/items.php b/include/items.php index 3ddb1f279..83f7f76a8 100644 --- a/include/items.php +++ b/include/items.php @@ -12,6 +12,7 @@ use Friendica\Database\DBM; use Friendica\Model\Contact; use Friendica\Model\GContact; use Friendica\Model\Group; +use Friendica\Model\Term; use Friendica\Model\User; use Friendica\Object\Image; use Friendica\Protocol\DFRN; @@ -21,7 +22,6 @@ use Friendica\Util\ParseUrl; require_once 'include/bbcode.php'; require_once 'include/tags.php'; -require_once 'include/files.php'; require_once 'include/text.php'; require_once 'include/threads.php'; require_once 'include/plaintext.php'; @@ -1109,7 +1109,7 @@ function item_store($arr, $force_parent = false, $notify = false, $dontcache = f * This is not perfect - but a workable solution until we found the reason for the problem. */ create_tags_from_item($current_post); - create_files_from_item($current_post); + Term::createFromItem($current_post); /* * If this is now the last-child, force all _other_ children of this parent to *not* be last-child @@ -2157,7 +2157,7 @@ function drop_item($id, $interactive = true) { array('id' => $item['id'])); create_tags_from_item($item['id']); - create_files_from_item($item['id']); + Term::createFromItem($item['id']); delete_thread($item['id'], $item['parent-uri']); // clean up categories and tags so they don't end up as orphans @@ -2230,7 +2230,7 @@ function drop_item($id, $interactive = true) { array('parent-uri' => $item['parent-uri'], 'uid' => $item['uid'])); create_tags_from_itemuri($item['parent-uri'], $item['uid']); - create_files_from_itemuri($item['parent-uri'], $item['uid']); + Term::createFromItemURI($item['parent-uri'], $item['uid']); delete_thread_uri($item['parent-uri'], $item['uid']); // ignore the result } else { diff --git a/include/text.php b/include/text.php index 7ed561bbb..232cbc5c9 100644 --- a/include/text.php +++ b/include/text.php @@ -10,6 +10,7 @@ use Friendica\Core\Config; use Friendica\Core\PConfig; use Friendica\Core\System; use Friendica\Database\DBM; +use Friendica\Model\Term; use Friendica\Util\Map; require_once "include/friendica_smarty.php"; @@ -1895,9 +1896,8 @@ function file_tag_update_pconfig($uid, $file_old, $file_new, $type = 'file') { return true; } -function file_tag_save_file($uid, $item, $file) { - require_once "include/files.php"; - +function file_tag_save_file($uid, $item, $file) +{ if (! intval($uid)) { return false; } @@ -1915,7 +1915,7 @@ function file_tag_save_file($uid, $item, $file) { ); } - create_files_from_item($item); + Term::createFromItem($item); $saved = PConfig::get($uid, 'system', 'filetags'); if (!strlen($saved) || !stristr($saved, '[' . file_tag_encode($file) . ']')) { @@ -1926,9 +1926,8 @@ function file_tag_save_file($uid, $item, $file) { return true; } -function file_tag_unsave_file($uid, $item, $file, $cat = false) { - require_once "include/files.php"; - +function file_tag_unsave_file($uid, $item, $file, $cat = false) +{ if (! intval($uid)) { return false; } @@ -1955,7 +1954,7 @@ function file_tag_unsave_file($uid, $item, $file, $cat = false) { intval($uid) ); - create_files_from_item($item); + Term::createFromItem($item); $r = q("SELECT `oid` FROM `term` WHERE `term` = '%s' AND `otype` = %d AND `type` = %d AND `uid` = %d", dbesc($file), diff --git a/mod/item.php b/mod/item.php index 868ed54ad..e234ada98 100644 --- a/mod/item.php +++ b/mod/item.php @@ -29,7 +29,6 @@ use Friendica\Util\Emailer; require_once 'include/enotify.php'; require_once 'include/tags.php'; -require_once 'include/files.php'; require_once 'include/threads.php'; require_once 'include/text.php'; require_once 'include/items.php'; diff --git a/src/Model/Item.php b/src/Model/Item.php index 49cb499c3..2ad610cca 100644 --- a/src/Model/Item.php +++ b/src/Model/Item.php @@ -7,10 +7,10 @@ namespace Friendica\Model; use Friendica\Core\Worker; +use Friendica\Model\Term; use dba; require_once 'include/tags.php'; -require_once 'include/files.php'; require_once 'include/threads.php'; class Item @@ -52,7 +52,7 @@ class Item } create_tags_from_item($item['id']); - create_files_from_item($item['id']); + Term::createFromItem($item['id']); update_thread($item['id']); Worker::add(PRIORITY_HIGH, "Notifier", 'edit_post', $item['id']); diff --git a/src/Model/Term.php b/src/Model/Term.php new file mode 100644 index 000000000..07dec5213 --- /dev/null +++ b/src/Model/Term.php @@ -0,0 +1,64 @@ + $itemid], ['limit' => 1]); + if (!$messages) { + return; + } + + $message = $messages[0]; + + // Clean up all tags + q("DELETE FROM `term` WHERE `otype` = %d AND `oid` = %d AND `type` IN (%d, %d)", + intval(TERM_OBJ_POST), + intval($itemid), + intval(TERM_FILE), + intval(TERM_CATEGORY)); + + if ($message["deleted"]) + return; + + if (preg_match_all("/\[(.*?)\]/ism", $message["file"], $files)) { + foreach ($files[1] as $file) { + dba::insert('term', ['uid' => $message["uid"], 'oid' => $itemid, 'otype' => TERM_OBJ_POST, 'type' => TERM_FILE, 'term' => $file]); + } + } + + if (preg_match_all("/\<(.*?)\>/ism", $message["file"], $files)) { + foreach ($files[1] as $file) { + dba::insert('term', ['uid' => $message["uid"], 'oid' => $itemid, 'otype' => TERM_OBJ_POST, 'type' => TERM_CATEGORY, 'term' => $file]); + } + } + } + + /** + * @param string $itemuri item uri + * @param integer $uid uid + * @return void + */ + public static function createFromItemURI($itemuri, $uid) + { + $messages = q("SELECT `id` FROM `item` WHERE uri ='%s' AND uid=%d", dbesc($itemuri), intval($uid)); + + if (count($messages)) { + foreach ($messages as $message) { + self::createFromItem($message["id"]); + } + } + } +} diff --git a/src/Protocol/DFRN.php b/src/Protocol/DFRN.php index 4d63f2b0b..509d05e6c 100644 --- a/src/Protocol/DFRN.php +++ b/src/Protocol/DFRN.php @@ -17,6 +17,7 @@ use Friendica\Model\Contact; use Friendica\Model\GContact; use Friendica\Model\Group; use Friendica\Model\Profile; +use Friendica\Model\Term; use Friendica\Model\User; use Friendica\Object\Image; use Friendica\Protocol\OStatus; @@ -32,7 +33,6 @@ require_once "include/enotify.php"; require_once "include/threads.php"; require_once "include/items.php"; require_once "include/tags.php"; -require_once "include/files.php"; require_once "include/event.php"; require_once "include/text.php"; require_once "include/html2bbcode.php"; @@ -2912,7 +2912,7 @@ class DFRN intval($importer["uid"]) ); create_tags_from_itemuri($uri, $importer["uid"]); - create_files_from_itemuri($uri, $importer["uid"]); + Term::createFromItemURI($uri, $importer["uid"]); update_thread_uri($uri, $importer["uid"]); } else { $r = q( @@ -2925,7 +2925,7 @@ class DFRN intval($importer["uid"]) ); create_tags_from_itemuri($uri, $importer["uid"]); - create_files_from_itemuri($uri, $importer["uid"]); + Term::createFromItemURI($uri, $importer["uid"]); update_thread_uri($uri, $importer["importer_uid"]); if ($item["last-child"]) { // ensure that last-child is set in case the comment that had it just got wiped.