/** * Import a dropdown - check if already exists * * @param $input array of value to import (name or completename, ...) * * @return the ID of the new or existing dropdown **/ function import(array $input) { if (isset($input['name'])) { return parent::import($input); } if (!isset($input['completename']) || empty($input['completename'])) { return -1; } // Import a full tree from completename $names = explode('>', $input['completename']); $fk = $this->getForeignKeyField(); $i = count($names); $parent = 0; foreach ($names as $name) { $i--; if (empty($name)) { // Skip empty name (completename starting/endind with >, double >, ...) continue; } $tmp['name'] = $name; $tmp[$fk] = $parent; if (isset($input['entities_id'])) { $tmp['entities_id'] = $input['entities_id']; } if (!$i) { // Other fields (comment, ...) only for last node of the tree foreach ($input as $key => $val) { if ($key != 'completename') { $tmp[$key] = $val; } } } $parent = parent::import($tmp); } return $parent; }
/** * @param $input array * @param $add (true by default) * @param $rights array **/ function customimport($input = array(), $add = true, $rights = array()) { if (!isset($input['completename']) || empty($input['completename'])) { return -1; } // Import a full tree from completename $names = explode('>', $input['completename']); $fk = $this->getForeignKeyField(); $i = count($names); $parent = 0; $entity = new Entity(); $level = 0; foreach ($names as $name) { $name = trim($name); $i--; $level++; if (empty($name)) { // Skip empty name (completename starting/endind with >, double >, ...) continue; } $tmp['name'] = $name; if (!$i) { // Other fields (comment, ...) only for last node of the tree foreach ($input as $key => $val) { if ($key != 'completename') { $tmp[$key] = $val; } } } $tmp['level'] = $level; $tmp['entities_id'] = $parent; //Does the entity alread exists ? $results = getAllDatasFromTable('glpi_entities', "`name`='{$name}' AND `entities_id`='{$parent}'"); //Entity doesn't exists => create it if (empty($results)) { $parent = CommonDropdown::import($tmp); } else { //Entity already exists, use the ID as parent $ent = array_pop($results); $parent = $ent['id']; } } return $parent; }