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; }
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_getDropdown() { $dropdowns = array(); $field_obj = new PluginFieldsField(); $fields = $field_obj->find("`type` = 'dropdown'"); foreach ($fields as $field) { $dropdowns["PluginFields" . ucfirst($field['name']) . "Dropdown"] = $field['label']; } return $dropdowns; }
function plugin_fields_getDropdown() { $dropdowns = array(); $field_obj = new PluginFieldsField(); $fields = $field_obj->find("`type` = 'dropdown'"); foreach ($fields as $field) { $field['itemtype'] = PluginFieldsField::getType(); $label = PluginFieldsLabelTranslation::getLabelFor($field); $dropdowns["PluginFields" . ucfirst($field['name']) . "Dropdown"] = $label; } asort($dropdowns); return $dropdowns; }
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(); }
/** * Populates fields data from item * * @param integer $c_id Container ID * @param CommonDBTM $item Item instance * * @return array|false */ private static function populateData($c_id, CommonDBTM $item) { //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 data to update $data = ['plugin_fields_containers_id' => $c_id]; if ($item->isNewItem()) { //no ID yet while creating $data['items_id'] = $item->getID(); } $has_fields = false; 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])) { $has_fields = true; // Before is_number check, help user to have a number correct, during a massive action of a number field if ($field['type'] == 'number') { $item->input[$input] = str_replace(",", ".", $item->input[$input]); } $data[$input] = $item->input[$input]; } } if ($has_fields === true) { return $data; } else { return false; } }