function getUnicityErrorMessage($msgs, $unicity, $doubles)
{
$message = array();
foreach ($msgs as $field => $value) {
$table = getTableNameForForeignKeyField($field);
if ($table != '') {
$searchOption = $this->getSearchOptionByField('field', 'name', $table);
} else {
$searchOption = $this->getSearchOptionByField('field', $field);
}
$message[] = sprintf(__('%1$s = %2$s'), $searchOption['name'], $value);
}
if ($unicity['action_refuse']) {
$message_text = sprintf(__('Impossible record for %s'), implode(' & ', $message));
} else {
$message_text = sprintf(__('Item successfully added but duplicate record on %s'), implode(' & ', $message));
}
$message_text .= '<br>' . __('Other item exist');
foreach ($doubles as $double) {
$doubles_text = array();
if (in_array('CommonDBChild', class_parents($this))) {
if ($this->getField($this->itemtype)) {
$item = new $double['itemtype']();
} else {
$item = new $this->itemtype();
}
$item->getFromDB($double['items_id']);
} else {
$item = clone $this;
$item->getFromDB($double['id']);
}
$double_text = '';
if ($item->canView() && $item->canViewItem()) {
$double_text = $item->getLink(array('linkoption' => "target='_blank'"));
}
foreach ($this->getUnicityFieldsToDisplayInErrorMessage() as $key => $value) {
$field_value = $item->getField($key);
if ($field_value != NOT_AVAILABLE) {
if (getTableNameForForeignKeyField($key) != '') {
$field_value = Dropdown::getDropdownName(getTableNameForForeignKeyField($key), $field_value);
}
$new_text = sprintf(__('%1$s: %2$s'), $value, $field_value);
if (empty($double_text)) {
$double_text = $new_text;
} else {
$double_text = sprintf(__('%1$s - %2$s'), $double_text, $new_text);
}
}
}
// Add information on item in dustbin
if ($item->isField('is_deleted') && $item->getField('is_deleted')) {
$double_text = sprintf(__('%1$s - %2$s'), $double_text, __('Item in the dustbin'));
}
$message_text .= "<br>[{$double_text}]";
}
return $message_text;
}