. @package archires @author Nelly Mahu-Lasson, Xavier Caillaud @copyright Copyright (c) 2016-2018 Archires plugin team @license AGPL License 3.0 or (at your option) any later version http://www.gnu.org/licenses/agpl-3.0-standalone.html @link https://forge.glpi-project.org/projects/archires @since version 2.2 -------------------------------------------------------------------------- */ if (!defined('GLPI_ROOT')) { die("Sorry. You can't access directly to this file"); } class PluginArchiresQueryType extends CommonDBTM { static $rightname = "plugin_archires"; function getFromDBbyType($itemtype, $type,$type_query,$query_ID) { global $DB; $query = ['FROM' => $this->getTable(), 'WHERE' => ['itemtype' => $itemtype, 'type' => $type, 'querytype' => $type_query, 'plugin_archires_queries_id' => $query_ID]]; if ($result = $DB->request($query)) { if (count($result) != 1) { return false; } $this->fields = $result->next(); if (is_array($this->fields) && count($this->fields)) { return true; } } return false; } function addType($querytype, $type, $itemtype, $plugin_archires_queries_id) { global $DB; $dbu = new DbUtils(); if ($type != '-1') { if (!$this->getFromDBbyType($itemtype, $type, $querytype, $plugin_archires_queries_id)) { $this->add(['itemtype' => $itemtype, 'type' => $type, 'querytype' => $querytype, 'plugin_archires_queries_id' => $plugin_archires_queries_id]); } } else { $query = ['FROM' => $dbu->getTableForItemType($itemtype."Type")]; $result = $DB->request($query); $i = 0; while ($i < count($result)) { $row = $result->next(); $type_table = $row['id']; if (!$this->getFromDBbyType($itemtype, $type_table, $querytype, $plugin_archires_queries_id)) { $this->add(['itemtype' => $itemtype, 'type' => $type_table, 'querytype' => $querytype, 'plugin_archires_queries_id' => $plugin_archires_queries_id]); } $i++; } } } function queryTypeCheck($querytype, $plugin_archires_views_id, $val) { global $DB; $dbu = new DbUtils(); $query0 = ['FROM' => $this->getTable(), 'WHERE' => ['querytype' => $querytype, 'plugin_archires_queries_id' => $plugin_archires_views_id, 'itemtype' => $val]]; $result0 = $DB->request($query0); $query = ""; if (count($result0)) { $itemtable = $dbu->getTableForItemType($val); $query = "AND `$itemtable`.`".getForeignKeyFieldForTable($dbu->getTableForItemType($val."Type"))."` IN (0 "; while ($data0 = $result0->next()) { $query .= ", ".$data0["type"]; } $query .= ") "; } return $query; } static function showTypes($item) { global $DB; $type = $item->getType(); $ID = $item->getID(); if ($type == 'PluginArchiresLocationQuery') { $page = "locationquery"; } else if ($type == 'PluginArchiresNetworkEquipmentQuery') { $page = "networkequipmentquery"; } else if ($type == 'PluginArchiresApplianceQuery') { $page = "appliancequery"; } $PluginArchiresArchires = new PluginArchiresArchires(); if (Session::haveRight("plugin_archires", UPDATE)) { echo "