示例#1
0
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);
            }
        }
    }
}
示例#2
0
 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;
 }