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); } } } }
function prepareInputForAdd($input) { global $DB; //parse name $input['name'] = $this->prepareName($input); //dropdowns : create files if ($input['type'] === "dropdown") { //search if dropdown already exist in this container $found = $this->find("name = '" . $input['name'] . "'\n AND plugin_fields_containers_id = '" . $input['plugin_fields_containers_id'] . "'"); //reject adding for same dropdown on same bloc if (!empty($found)) { Session::AddMessageAfterRedirect(__("You cannot add same field 'dropdown' on same bloc", 'fields', false, ERROR)); return false; } //search if dropdown already exist in other container $found = $this->find("name = '" . $input['name'] . "'"); //for dropdown, if already exist, don't create files if (empty($found)) { PluginFieldsDropdown::create($input); } $oldname = $input['name']; $input['name'] = getForeignKeyFieldForItemType(PluginFieldsDropdown::getClassname($input['name'])); } // Before adding, add the ranking of the new field if (empty($input["ranking"])) { $input["ranking"] = $this->getNextRanking(); } //add field to container table if ($input['type'] !== "header") { $container_obj = new PluginFieldsContainer(); $container_obj->getFromDB($input['plugin_fields_containers_id']); foreach (json_decode($container_obj->fields['itemtypes']) as $itemtype) { $classname = "PluginFields" . ucfirst(strtolower($itemtype . preg_replace('/s$/', '', $container_obj->fields['name']))); $classname::addField($input['name'], $input['type']); } } if (isset($oldname)) { $input['name'] = $oldname; } return $input; }