function generateCompletename($input, $add = true)
{
global $DB;
// Force completename translated : used for the first translation
$_SESSION['glpi_dropdowntranslations'][$input['itemtype']]['completename'] = 'completename';
//If there's already a completename for this language, get it's ID, otherwise 0
$completenames_id = self::getTranslationID($input['items_id'], $input['itemtype'], 'completename', $input['language']);
$item = new $input['itemtype']();
//Completename is used only for tree dropdowns !
if ($item instanceof CommonTreeDropdown && isset($input['language'])) {
$item->getFromDB($input['items_id']);
$foreignKey = $item->getForeignKeyField();
//Regenerate completename : look for item's ancestors
$completename = "";
//Get ancestors as an array
if ($item->fields[$foreignKey] != 0) {
$completename = self::getTranslatedValue($item->fields[$foreignKey], $input['itemtype'], 'completename', $input['language']);
}
if ($completename != '') {
$completename .= " > ";
}
$completename .= self::getTranslatedValue($item->getID(), $input['itemtype'], 'name', $input['language']);
//Add or update completename for this language
$translation = new self();
$tmp = array();
$tmp['items_id'] = $input['items_id'];
$tmp['itemtype'] = $input['itemtype'];
$tmp['field'] = 'completename';
$tmp['value'] = addslashes($completename);
$tmp['language'] = $input['language'];
$tmp['_no_completename'] = true;
if ($completenames_id) {
$tmp['id'] = $completenames_id;
if ($completename === $item->fields['completename']) {
$translation->delete(array('id' => $completenames_id));
} else {
$translation->update($tmp);
}
} else {
if ($completename != $item->fields['completename']) {
$translation->add($tmp);
}
}
$query = "SELECT `id`\n FROM `" . $item->getTable() . "`\n WHERE `{$foreignKey}` = '" . $item->getID() . "'";
foreach ($DB->request($query) as $tmp) {
$input2 = $input;
$input2['items_id'] = $tmp['id'];
$this->generateCompletename($input2, $add);
}
}
}