<?php

include '../../../inc/includes.php';
// check if itemtype can display tag control
if (in_array(strtolower($_REQUEST['itemtype']), array_map('strtolower', getBlacklistItemtype()))) {
    return '';
}
$class = $_REQUEST['itemtype'] == 'ticket' ? "tab_bg_1" : '';
echo "<tr class='{$class}'>";
echo "<th>" . _n('Tag', 'Tags', 2, 'tag') . "</th>";
echo "<td colspan='3'>";
PluginTagTag::tagDropdownMultiple();
echo "</td>";
echo "</tr>";
示例#2
0
 /**
  * 
  * Note : can separe code of view list
  * @param PluginTagTag $tag
  * @return boolean
  */
 static function showForTag(PluginTagTag $tag)
 {
     global $DB;
     $instID = $tag->fields['id'];
     if (!$tag->can($instID, READ)) {
         return false;
     }
     $canedit = $tag->can($instID, UPDATE);
     $table = getTableForItemType(__CLASS__);
     $result = $DB->query("SELECT DISTINCT `itemtype`\n         FROM `{$table}`\n         WHERE `plugin_tag_tags_id` = '{$instID}'");
     $result2 = $DB->query("SELECT `itemtype`, items_id\n            FROM `{$table}`\n            WHERE `plugin_tag_tags_id` = '{$instID}'");
     $number = $DB->numrows($result);
     $rand = mt_rand();
     if ($canedit) {
         echo "<div class='firstbloc'>";
         //can use standart GLPI function
         $target = Toolbox::getItemTypeFormURL('PluginTagTag');
         echo "<form name='tagitem_form{$rand}' id='tagitem_form{$rand}' method='post' action='" . $target . "'>";
         echo "<table class='tab_cadre_fixe'>";
         echo "<tr class='tab_bg_2'><th colspan='2'>" . __('Add an item') . "</th></tr>";
         echo "<tr class='tab_bg_1'><td class='right'>";
         //Note : this function is deprecated (and replace by an other)
         $itemtypes_to_show = self::getItemtypes($tag->fields['type_menu']);
         Dropdown::showAllItems("items_id", 0, 0, $tag->fields['is_recursive'] ? -1 : $tag->fields['entities_id'], $itemtypes_to_show, false, true);
         echo "<style>.select2-container { text-align: left; } </style>";
         //minor
         echo "</td><td class='center'>";
         echo "<input type='hidden' name='plugin_tag_tags_id' value='{$instID}'>";
         //Note : can use standart GLPI method
         echo "<input type='submit' name='add' value=\"" . _sx('button', 'Add') . "\" class='submit'>";
         echo "</td></tr>";
         echo "</table>";
         Html::closeForm();
         echo "</div>";
     }
     echo "<div class='spaced'>";
     if ($canedit && $number) {
         Html::openMassiveActionsForm('mass' . __CLASS__ . $rand);
         Html::showMassiveActions();
     }
     echo "<table class='tab_cadre_fixe'>";
     echo "<tr>";
     if ($canedit && $number) {
         echo "<th width='10'>" . Html::getCheckAllAsCheckbox('mass' . __CLASS__ . $rand) . "</th>";
     }
     echo "<th>" . __('Type') . "</th>";
     echo "<th>" . __('Name') . "</th>";
     echo "<th>" . __('Entity') . "</th>";
     echo "<th>" . __('Serial number') . "</th>";
     echo "<th>" . __('Inventory number') . "</th>";
     echo "</tr>";
     for ($i = 0; $i < $number; $i++) {
         $itemtype = $DB->result($result, $i, "itemtype");
         if (!($item = getItemForItemtype($itemtype))) {
             continue;
         }
         $item_id = $DB->result($result2, $i, "items_id");
         if ($item->canView()) {
             $column = strtolower(substr($itemtype, 0, 6)) == "device" ? "designation" : "name";
             // For rules itemtypes (example : ruledictionnaryphonemodel)
             if (strtolower(substr($itemtype, 0, 4)) == 'rule' || $itemtype == "PluginResourcesRulechecklist") {
                 $itemtable = getTableForItemType('Rule');
             } else {
                 $itemtable = getTableForItemType($itemtype);
             }
             $obj = new $itemtype();
             $obj->getFromDB($item_id);
             $query = "SELECT `{$itemtable}`.*, `glpi_plugin_tag_tagitems`.`id` AS IDD, ";
             switch ($itemtype) {
                 case 'KnowbaseItem':
                     $query .= "-1 AS entity\n                  FROM `glpi_plugin_tag_tagitems`, `{$itemtable}`\n                  " . KnowbaseItem::addVisibilityJoins() . "\n                  WHERE `{$itemtable}`.`id` = `glpi_plugin_tag_tagitems`.`items_id`\n                  AND ";
                     break;
                 case 'Profile':
                 case 'RSSFeed':
                 case 'Reminder':
                 case 'Entity':
                     //Possible to add (in code) condition to visibility :
                     $query .= "-1 AS entity\n                  FROM `glpi_plugin_tag_tagitems`, `{$itemtable}`\n                  WHERE `{$itemtable}`.`id` = `glpi_plugin_tag_tagitems`.`items_id`\n                  AND ";
                     break;
                 default:
                     if (isset($obj->fields['entities_id'])) {
                         $query .= "`glpi_entities`.`id` AS entity\n                        FROM `glpi_plugin_tag_tagitems`, `{$itemtable}`\n                        LEFT JOIN `glpi_entities`\n                        ON (`glpi_entities`.`id` = `{$itemtable}`.`entities_id`)\n                        WHERE `{$itemtable}`.`id` = `glpi_plugin_tag_tagitems`.`items_id`\n                        AND ";
                     } else {
                         $query .= "-1 AS entity\n                        FROM `glpi_plugin_tag_tagitems`, `{$itemtable}`\n                        WHERE `{$itemtable}`.`id` = `glpi_plugin_tag_tagitems`.`items_id`\n                        AND ";
                     }
                     break;
             }
             $query .= "`glpi_plugin_tag_tagitems`.`itemtype` = '{$itemtype}'\n               AND `glpi_plugin_tag_tagitems`.`plugin_tag_tags_id` = '{$instID}' ";
             $query .= getEntitiesRestrictRequest(" AND ", $itemtable, '', '', $item->maybeRecursive());
             if ($item->maybeTemplate()) {
                 $query .= " AND `{$itemtable}`.`is_template` = '0'";
             }
             switch ($itemtype) {
                 case 'KnowbaseItem':
                 case 'Profile':
                 case 'RSSFeed':
                 case 'Reminder':
                 case 'Entity':
                     $query .= " ORDER BY `{$itemtable}`.`{$column}`";
                     break;
                 default:
                     if (isset($obj->fields['entities_id'])) {
                         $query .= " ORDER BY `glpi_entities`.`completename`, `{$itemtable}`.`{$column}`";
                     } else {
                         $query .= " ORDER BY `{$itemtable}`.`{$column}`";
                     }
                     break;
             }
             if ($result_linked = $DB->query($query)) {
                 if ($DB->numrows($result_linked)) {
                     while ($data = $DB->fetch_assoc($result_linked)) {
                         if ($itemtype == 'Softwarelicense') {
                             $soft = new Software();
                             $soft->getFromDB($data['softwares_id']);
                             $data["name"] .= ' - ' . $soft->getName();
                             //This add name of software
                         } elseif ($itemtype == "PluginResourcesResource") {
                             $data["name"] = formatUserName($data["id"], "", $data["name"], $data["firstname"]);
                         }
                         $linkname = $data[$column];
                         if ($_SESSION["glpiis_ids_visible"] || empty($data[$column])) {
                             $linkname = sprintf(__('%1$s (%2$s)'), $linkname, $data["id"]);
                         }
                         $name = "<a href=\"" . Toolbox::getItemTypeFormURL($itemtype) . "?id=" . $data["id"] . "\">" . $linkname . "</a>";
                         if ($itemtype == 'PluginProjetProjet' || $itemtype == 'PluginResourcesResource') {
                             $pieces = preg_split('/(?=[A-Z])/', $itemtype);
                             $plugin_name = $pieces[2];
                             $datas = array("entities_id" => $data["entity"], "ITEM_0" => $data["name"], "ITEM_0_2" => $data["id"], "id" => $data["id"], "META_0" => $data["name"]);
                             //for PluginResourcesResource
                             if (isset($data["is_recursive"])) {
                                 $datas["is_recursive"] = $data["is_recursive"];
                             }
                             Plugin::load(strtolower($plugin_name), true);
                             $function_giveitem = 'plugin_' . strtolower($plugin_name) . '_giveItem';
                             if (function_exists($function_giveitem)) {
                                 // For security
                                 $name = call_user_func($function_giveitem, $itemtype, 1, $datas, 0);
                             }
                         }
                         echo "<tr class='tab_bg_1'>";
                         if ($canedit) {
                             echo "<td width='10'>";
                             if ($item->canUpdate()) {
                                 Html::showMassiveActionCheckBox(__CLASS__, $data["IDD"]);
                             }
                             echo "</td>";
                         }
                         echo "<td class='center'>";
                         // Show plugin name (is to delete remove any ambiguity) :
                         $pieces = preg_split('/(?=[A-Z])/', $itemtype);
                         if ($pieces[1] == 'Plugin') {
                             $plugin_name = $pieces[2];
                             if (function_exists("plugin_version_" . $plugin_name)) {
                                 // For security
                                 $tab = call_user_func("plugin_version_" . $plugin_name);
                                 echo $tab["name"] . " : ";
                             }
                         }
                         echo $item->getTypeName(1) . "</td>";
                         echo "<td " . (isset($data['is_deleted']) && $data['is_deleted'] ? "class='tab_bg_2_2'" : "") . ">" . $name . "</td>";
                         echo "<td class='center'>";
                         $entity = $data['entity'];
                         //for Plugins :
                         if ($data["entity"] == -1) {
                             $item->getFromDB($data['id']);
                             if (isset($item->fields["entities_id"])) {
                                 $entity = $item->fields["entities_id"];
                             }
                         }
                         echo Dropdown::getDropdownName("glpi_entities", $entity);
                         echo "</td>";
                         echo "<td class='center'>" . (isset($data["serial"]) ? "" . $data["serial"] . "" : "-") . "</td>";
                         echo "<td class='center'>" . (isset($data["otherserial"]) ? "" . $data["otherserial"] . "" : "-") . "</td>";
                         echo "</tr>";
                     }
                 }
             }
         }
     }
     echo "</table>";
     if ($canedit && $number) {
         $massiveactionparams['ontop'] = false;
         Html::showMassiveActions($massiveactionparams);
         Html::closeForm();
     }
     echo "</div>";
 }
/**
 * Define Dropdown tables to be manage in GLPI :
 */
function plugin_tag_getDropdown()
{
    return array('PluginTagTag' => PluginTagTag::getTypeName(2));
}