function plugin_pre_item_update_tag($parm) { global $DB; if (isset($_REQUEST['plugin_tag_tag_id']) && isset($_REQUEST['plugin_tag_tag_itemtype'])) { $already_present = array(); $itemtype = PluginTagTag::getItemtype($_REQUEST['plugin_tag_tag_itemtype'], $_REQUEST['plugin_tag_tag_id']); $query_part = "`items_id`=" . $_REQUEST['plugin_tag_tag_id'] . " \n AND `itemtype` = '" . $itemtype . "'"; $item = new PluginTagTagItem(); foreach ($item->find($query_part) as $indb) { if (isset($_REQUEST["_plugin_tag_tag_values"]) && in_array($indb["plugin_tag_tags_id"], $_REQUEST["_plugin_tag_tag_values"])) { $already_present[] = $indb["plugin_tag_tags_id"]; } else { $item->delete(array("id" => $indb['id'])); } } if (isset($_REQUEST["_plugin_tag_tag_values"])) { foreach ($_REQUEST["_plugin_tag_tag_values"] as $tag_id) { if (!in_array($tag_id, $already_present)) { $item->add(array('plugin_tag_tags_id' => $tag_id, 'items_id' => $_REQUEST['plugin_tag_tag_id'], 'itemtype' => ucfirst($itemtype))); } } } } return $parm; }