+<?php
+/**
+ * @file src/Model/Term
+ */
+namespace Friendica\Model;
+
+class Term
+{
+ /**
+ * @param integer $itemid item id
+ * @return void
+ */
+ function create_files_from_item($itemid)
+ {
+ $messages = q("SELECT `guid`, `uid`, `id`, `edited`, `deleted`, `file`, `parent` FROM `item` WHERE `id` = %d LIMIT 1", intval($itemid));
+ 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) {
+ 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_FILE), dbesc($file));
+ }
+ }
+
+ if (preg_match_all("/\<(.*?)\>/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));
+ }
+ }
+ }
+
+ /**
+ * @param string $itemuri item uri
+ * @param integer $uid uid
+ * @return void
+ */
+ 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"]);
+ }
+ }
+
+ /**
+ * @return void
+ */
+ 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"]);
+ }
+ }
+}
\ No newline at end of file