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; }
<?php include '../../../inc/includes.php'; Session::checkRight("config", UPDATE); Plugin::load('tag', true); $plugin = new Plugin(); if (!$plugin->isInstalled("tag") || !$plugin->isActivated("tag")) { Html::displayNotFoundError(); } if (isset($_POST['add']) || isset($_REQUEST['update'])) { if (isset($_POST['add'])) { $item = new PluginTagTagItem(); // Check unicity : if (isset($_REQUEST['plugin_tag_tags_id'])) { $found = $item->find('plugin_tag_tags_id = ' . $_REQUEST['plugin_tag_tags_id'] . ' AND items_id = ' . $_REQUEST['items_id'] . ' AND itemtype = "' . $_REQUEST['itemtype'] . '"'); if (count($found) == 0) { $item->add($_REQUEST); } } else { $item->add($_REQUEST); } } } $dropdown = new PluginTagTag(); include GLPI_ROOT . "/front/dropdown.common.form.php";