function plugin_fields_checkFiles() { $plugin = new Plugin(); if (isset($_SESSION['glpiactiveentities']) && $plugin->isInstalled('fields') && $plugin->isActivated('fields')) { Plugin::registerClass('PluginFieldsContainer'); Plugin::registerClass('PluginFieldsDropdown'); Plugin::registerClass('PluginFieldsField'); if (TableExists("glpi_plugin_fields_containers")) { $container_obj = new PluginFieldsContainer(); $containers = $container_obj->find(); foreach ($containers as $container) { $classname = "PluginFields" . ucfirst($container['itemtype'] . preg_replace('/s$/', '', $container['name'])); if (!class_exists($classname)) { PluginFieldsContainer::generateTemplate($container); } } } if (TableExists("glpi_plugin_fields_fields")) { $fields_obj = new PluginFieldsField(); $fields = $fields_obj->find("`type` = 'dropdown'"); foreach ($fields as $field) { PluginFieldsDropdown::create($field); } } } }
static function uninstall() { global $DB; //remove dropdown tables and files if (TableExists("glpi_plugin_fields_fields")) { require_once "field.class.php"; $field = new PluginFieldsField(); $dropdowns = $field->find("`type` = 'dropdown'"); foreach ($dropdowns as $dropdown) { self::destroy($dropdown['name']); } } return true; }
<?php include "../../../inc/includes.php"; if (empty($_GET["id"])) { $_GET["id"] = ""; } Session::checkRight('entity', READ); $field = new PluginFieldsField(); if (isset($_POST["add"])) { $field->check(-1, CREATE, $_POST); $field->add($_POST); Html::back(); } else { if (isset($_POST["delete"])) { $field->check($_POST['id'], DELETE); $field->delete($_POST); Html::back(); } else { if (isset($_REQUEST["purge"])) { $field->check($_REQUEST['id'], PURGE); $field->delete($_REQUEST, 1); Html::back(); } else { if (isset($_POST["update"])) { $field->check($_POST['id'], UPDATE); $field->update($_POST); Html::back(); } else { if (isset($_GET["id"])) { $field->check($_GET['id'], READ); Html::header(PluginFieldsField::getTypeName(1), $_SERVER['PHP_SELF']);
static function showForTabContainer($c_id, $items_id) { global $CFG_GLPI; $field_obj = new PluginFieldsField(); //profile restriction (for reading profile) $canedit = false; $profile = new PluginFieldsProfile(); $found = $profile->find("`profiles_id` = '" . $_SESSION['glpiactiveprofile']['id'] . "'\n AND `plugin_fields_containers_id` = '{$c_id}'"); $first_found = array_shift($found); if ($first_found['right'] == CREATE) { $canedit = true; } //get fields for this container $fields = $field_obj->find("plugin_fields_containers_id = {$c_id} AND is_active = 1", "ranking"); echo "<form method='POST' action='" . $CFG_GLPI["root_doc"] . "/plugins/fields/front/container.form.php'>"; echo "<input type='hidden' name='plugin_fields_containers_id' value='{$c_id}'>"; echo "<input type='hidden' name='items_id' value='{$items_id}'>"; echo "<table class='tab_cadre_fixe'>"; echo self::prepareHtmlFields($fields, $items_id, $canedit); if ($canedit) { echo "<tr><td class='tab_bg_2 center' colspan='4'>"; echo "<input type='submit' name='update_fields_values' value=\"" . _sx("button", "Save") . "\" class='submit'>"; echo "</td></tr>"; } echo "</table>"; Html::closeForm(); return true; }
function plugin_fields_MassiveActionsFieldsDisplay($options = array()) { $itemtypes = PluginFieldsContainer::getEntries('all'); if (in_array($options['itemtype'], $itemtypes)) { PluginFieldsField::showSingle($options['itemtype'], $options['options'], true); return true; } // Need to return false on non display item return false; }
<?php include "../../inc/includes.php"; //change mimetype header("Content-type: application/javascript"); if ($plugin->isInstalled("fields") && $plugin->isActivated("fields")) { PluginFieldsField::showForDomContainer(); PluginFieldsField::showForDomtabContainer(); }
<?php include "../../../inc/includes.php"; if (isset($_REQUEST['itemtype']) && isset($_REQUEST['items_id'])) { PluginFieldsField::AjaxForDomContainer($_REQUEST['itemtype'], $_REQUEST['items_id'], isset($_REQUEST['type']) ? $_REQUEST['type'] : "dom", isset($_REQUEST['subtype']) ? $_REQUEST['subtype'] : ""); }
<?php include "../../../inc/includes.php"; if (empty($_GET["id"])) { $_GET["id"] = ""; } Session::checkRight('entity', READ); $field = new PluginFieldsField(); if (isset($_POST["add"])) { $field->check(-1, CREATE, $_POST); $field->add($_POST); } elseif (isset($_POST["delete"])) { $field->check($_POST['id'], DELETE); $field->delete($_POST); } elseif (isset($_REQUEST["purge"])) { $field->check($_REQUEST['id'], PURGE); $field->delete($_REQUEST, 1); } elseif (isset($_POST["update"])) { $field->check($_POST['id'], UPDATE); $field->update($_POST); } Html::back();
static function preItemUpdate(CommonDBTM $item) { //find container (if not exist, do nothing) if (isset($_REQUEST['c_id'])) { $c_id = $_REQUEST['c_id']; } else { $c_id = self::findContainer(get_Class($item), $item->fields['id'], "dom"); if ($c_id === false) { return false; } } //find fields associated to found container $field_obj = new PluginFieldsField(); $fields = $field_obj->find("plugin_fields_containers_id = {$c_id} AND type != 'header'", "ranking"); //prepare datas to update $datas = array('plugin_fields_containers_id' => $c_id, 'items_id' => $item->fields['id']); foreach ($fields as $field) { if (isset($item->input[$field['name']])) { //standard field $input = $field['name']; } else { //dropdown field $input = "plugin_fields_" . $field['name'] . "dropdowns_id"; } if (isset($item->input[$input])) { $datas[$input] = $item->input[$input]; } } //update datas $container = new self(); if ($container->updateFieldsValues($datas)) { return true; } return $item->input = array(); }
static function getAddSearchOptions($itemtype, $containers_id = false) { global $DB; $opt = array(); $i = 76665; $query = "SELECT fields.name, fields.label, fields.type, fields.is_readonly,\n containers.name as container_name, containers.label as container_label,\n containers.itemtypes, containers.id as container_id, fields.id as field_id\n FROM glpi_plugin_fields_containers containers\n INNER JOIN glpi_plugin_fields_fields fields\n ON containers.id = fields.plugin_fields_containers_id\n AND containers.is_active = 1\n WHERE containers.itemtypes LIKE '%{$itemtype}%'\n AND fields.type != 'header'\n ORDER BY fields.id ASC"; $res = $DB->query($query); while ($data = $DB->fetch_assoc($res)) { if ($containers_id !== false) { // Filter by container (don't filter by SQL for have $i value with few containers for a itemtype) if ($data['container_id'] != $containers_id) { $i++; continue; } } $tablename = "glpi_plugin_fields_" . strtolower($itemtype . getPlural(preg_replace('/s$/', '', $data['container_name']))); //get translations $container = ['itemtype' => PluginFieldsContainer::getType(), 'id' => $data['container_id'], 'label' => $data['container_label']]; $data['container_label'] = PluginFieldsLabelTranslation::getLabelFor($container); $field = ['itemtype' => PluginFieldsField::getType(), 'id' => $data['field_id'], 'label' => $data['label']]; $data['label'] = PluginFieldsLabelTranslation::getLabelFor($field); $opt[$i]['table'] = $tablename; $opt[$i]['field'] = $data['name']; $opt[$i]['name'] = $data['container_label'] . " - " . $data['label']; $opt[$i]['linkfield'] = $data['name']; $opt[$i]['joinparams']['jointype'] = "itemtype_item"; $opt[$i]['pfields_type'] = $data['type']; if ($data['is_readonly']) { $opt[$i]['massiveaction'] = false; } if ($data['type'] === "dropdown") { $opt[$i]['table'] = 'glpi_plugin_fields_' . $data['name'] . 'dropdowns'; $opt[$i]['field'] = 'completename'; $opt[$i]['linkfield'] = "plugin_fields_" . $data['name'] . "dropdowns_id"; $opt[$i]['forcegroupby'] = true; $opt[$i]['joinparams']['jointype'] = ""; $opt[$i]['joinparams']['beforejoin']['table'] = $tablename; $opt[$i]['joinparams']['beforejoin']['joinparams']['jointype'] = "itemtype_item"; } if ($data['type'] === "dropdownuser") { $opt[$i]['table'] = 'glpi_users'; $opt[$i]['field'] = 'name'; $opt[$i]['linkfield'] = $data['name']; $opt[$i]['right'] = 'all'; $opt[$i]['forcegroupby'] = true; $opt[$i]['joinparams']['jointype'] = ""; $opt[$i]['joinparams']['beforejoin']['table'] = $tablename; $opt[$i]['joinparams']['beforejoin']['joinparams']['jointype'] = "itemtype_item"; } switch ($data['type']) { case 'dropdown': case 'dropdownuser': $opt[$i]['datatype'] = "dropdown"; break; case 'yesno': $opt[$i]['datatype'] = "bool"; break; case 'textarea': $opt[$i]['datatype'] = "text"; break; case 'number': $opt[$i]['datatype'] = "number"; break; case 'date': case 'datetime': $opt[$i]['datatype'] = $data['type']; break; default: $opt[$i]['datatype'] = "string"; } $i++; } return $opt; }