ioFormat: add update_only mode

This commit is contained in:
Benjamin Renard 2023-07-19 12:08:38 +02:00
parent a4319237f2
commit 6ff53b412e
Signed by: bn8
GPG key ID: 3E2E1CE1907115BC
8 changed files with 400 additions and 255 deletions

View file

@ -10,7 +10,8 @@ Cette variable est un tableau associatif dont la clé est l'identifiant du forma
dont la valeur associée est la configuration du format. dont la valeur associée est la configuration du format.
<important><para>Le moteur d'importation simule la validation d'un formulaire de <important><para>Le moteur d'importation simule la validation d'un formulaire de
création du type d'&LSobject;. En conséquence : création du type d'&LSobject; (ou de modification en cas d'activation du mode mise à jour
uniquement, voir ci-dessous). En conséquence :
<itemizedlist> <itemizedlist>
<listitem><simpara>seul les attributs présent dans le formulaire de création peuvent <listitem><simpara>seul les attributs présent dans le formulaire de création peuvent
être importés.</simpara></listitem> être importés.</simpara></listitem>
@ -31,6 +32,7 @@ création du type d'&LSobject;. En conséquence :
'label' => '[Label du type de fichier]', 'label' => '[Label du type de fichier]',
'driver' => '[Pilote d'ioFormat utilisé]', 'driver' => '[Pilote d'ioFormat utilisé]',
'driver_options' => array([Options du pilote d'ioFormat utilisé]), 'driver_options' => array([Options du pilote d'ioFormat utilisé]),
'update_only' => '[Booléen]',
'fields => array ( 'fields => array (
'[champ 1]' => '[attribut 1]', '[champ 1]' => '[attribut 1]',
'[champ 2]' => '[attribut 2]', '[champ 2]' => '[attribut 2]',
@ -79,11 +81,28 @@ création du type d'&LSobject;. En conséquence :
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry>
<term>update_only</term>
<listitem>
<simpara>Booléen permetant d'activer le mode mise à jour uniquement pour ce format. Dans ce
mode, les données de l'objet LDAP correspondant seront chargées depuis l'annuaire avant toutes
validations des données fournies dans le fichier d'import, et ce, dans un formulaire de
modifications et non pas un formulaire de création autrement. Pour que cela soit possible, il
est indispensable que le DN de l'objet puisse être déduit depuis les données fournies dans le
fichier d'import. Pour cela, vous pouvez le fournir via un champ du fichier d'import associé
à la clé <literal>dn</literal> ou à défaut il sera généré à partir du RDN dont la valeur devra
être fournie dans le fichier d'import. Vous pouvez également le générer via le paramètre
<literal>generated_fields</literal> (voir ci-dessous).</simpara>
</listitem>
</varlistentry>
<varlistentry> <varlistentry>
<term>fields</term> <term>fields</term>
<listitem> <listitem>
<simpara>Tableau associatif permettant d'associer un champ du fichier source (la clé) <simpara>Tableau associatif permettant d'associer un champ du fichier source (la clé)
avec attribut de l'objet LDAP (la valeur).</simpara> avec attribut de l'objet LDAP (la valeur). Il est également possible d'associé un champ
avec la valeur <literal>dn</literal> pour fournir le DN de l'objet en mode mise à jour
uniquement (voir ci-dessus).</simpara>
</listitem> </listitem>
</varlistentry> </varlistentry>
@ -92,7 +111,8 @@ création du type d'&LSobject;. En conséquence :
<listitem> <listitem>
<simpara>Tableau associatif permettant de définir soit des &LSformats;, soit un <simpara>Tableau associatif permettant de définir soit des &LSformats;, soit un
<emphasis>callable</emphasis> (au sens PHP) pour générer les valeurs d'attributs automatiquement. <emphasis>callable</emphasis> (au sens PHP) pour générer les valeurs d'attributs automatiquement.
Ce tableau contient en clé, le nom de l'attribut à générer, et en valeur associée, un ou plusieurs Ce tableau contient en clé, le nom de l'attribut à générer (ou <literal>dn</literal> pour la
génération du DN de l'objet en mode mise à jour uniquement), et en valeur associée, un ou plusieurs
&LSformat; ou un <emphasis>callable</emphasis> à utiliser pour générer ses valeurs. En cas de &LSformat; ou un <emphasis>callable</emphasis> à utiliser pour générer ses valeurs. En cas de
&LSformat;, ils seront composés à l'aide des valeurs des autres attributs de l'objet. En cas d'un &LSformat;, ils seront composés à l'aide des valeurs des autres attributs de l'objet. En cas d'un
<emphasis>callable</emphasis>, il sera appeler avec en paramètre le tableau des valeurs des autres <emphasis>callable</emphasis>, il sera appeler avec en paramètre le tableau des valeurs des autres

View file

@ -133,6 +133,19 @@ $GLOBALS['LSobjects']['LSpeople'] = array (
'samba_password_cas_change' => 'sambaPwdCanChange', 'samba_password_cas_change' => 'sambaPwdCanChange',
), ),
), ),
'enable_disable_shell' => array (
'label' => 'Enable/disable commands shell',
'update_only' => true,
'driver' => 'CSV',
'driver_options' => array (
'delimiter' => ';',
'enclosure' => '"',
),
'fields' => array (
'login' => 'uid',
'shell' => 'loginShell',
),
),
), ),
'display_name_format' => '%{cn}', 'display_name_format' => '%{cn}',

View file

@ -216,6 +216,16 @@ class LSio extends LSlog_staticLoggerClass {
return $return; return $return;
} }
// Check update_only vs updateIfExists
if ($ioFormat -> update_only) {
self :: log_debug("import(): enable update only mode");
if (!$updateIfExists) {
self :: log_debug("import(): update only mode and updateIfExists not checked, stop");
LSerror :: addErrorCode('LSio_11');
return $return;
}
}
// Load data in LSioFormat object // Load data in LSioFormat object
if (!$ioFormat -> loadFile($input_file)) { if (!$ioFormat -> loadFile($input_file)) {
LSerror :: addErrorCode('LSio_05'); LSerror :: addErrorCode('LSio_05');
@ -331,97 +341,140 @@ class LSio extends LSlog_staticLoggerClass {
$globalErrors = array(); $globalErrors = array();
// Instanciate an LSobject // Instanciate an LSobject
$object = new $LSobject(); $object = new $LSobject();
// Instanciate a creation LSform (in API mode)
$form = $object -> getForm('create', null, true); // Load object data on update_only mode
// Set form data from inputed data if ($ioFormat -> update_only) {
if (!$form -> setPostData($objData, true)) { // Retrieve/compute object DN
self :: log_debug('import(): Failed to setPostData on: '.print_r($objData,True)); $dn = null;
$globalErrors[] = _('Failed to set post data on creation form.'); if (array_key_exists('dn', $objData)) {
} $dn = $objData['dn']?$objData['dn'][0]:null;
// Validate form // Remove field in object data
else if (!$form -> validate(true)) { unset($objData['dn']);
self :: log_debug('import(): Failed to validate form on: '.print_r($objData,True)); if ($dn)
self :: log_debug('import(): Form errors: '.print_r($form->getErrors(),True)); self :: log_debug("import(): Object DN provided ($dn)");
$globalErrors[] = _('Error validating creation form.'); else
} $globalErrors[] = _('Object DN is empty in provided data.');
// Validate data (just check mode)
else if (!$object -> updateData('create', True)) {
self :: log_debug('import(): fail to validate object data: '.varDump($objData));
$globalErrors[] = _('Failed to validate object data.');
}
else {
self :: log_debug('import(): Data is correct, retrieve object DN');
$dn = $object -> getDn();
if (!$dn) {
self :: log_debug('import(): fail to generate for this object: '.varDump($objData));
$globalErrors[] = _('Failed to generate DN for this object.');
} }
else { // DN not provided, compute it
// Check if object already exists if (!$dn) {
if (!LSldap :: exists($dn)) { $rdn_attr = $object->rdn_attr;
// Creation mode if (!$rdn_attr || !array_key_exists($rdn_attr, $objData) || !$objData[$rdn_attr]) {
self :: log_debug('import(): New object, perform creation'); self :: log_debug('import(): Failed to compute object DN from provided data (no RDN value): '.print_r($objData,True));
if ($justTry || $object -> updateData('create')) { $globalErrors[] = _('Failed to compute object DN from provided data (no RDN value).');
self :: log_info('Object '.$object -> getDn().' imported');
$return['imported'][$object -> getDn()] = array(
'name' => $object -> getDisplayName(),
'messages' => $_SESSION['LSsession_infos'],
'errors' => LSerror :: getErrors(),
);
$_SESSION['LSsession_infos'] = array();
continue;
}
else {
self :: log_error('Failed to updateData on : '.print_r($objData, True));
$globalErrors[]=_('Error creating object on LDAP server.');
}
}
// This object already exist, check 'updateIfExists' mode
elseif (!$updateIfExists) {
self :: log_debug('import(): Object '.$dn.' already exist');
$globalErrors[] = getFData(_('An object already exist on LDAP server with DN %{dn}.'),$dn);
} }
else { else {
self :: log_info('Object '.$object -> getDn().' exist, perform update'); $dn = sprintf("%s=%s,%s", $rdn_attr, $objData[$rdn_attr][0], $object -> getContainerDn());
self :: log_debug("import(): Computed object DN is '$dn'");
}
}
// Load object data from DN
if ($dn && !$object -> loadData($dn)) {
self :: log_debug('import(): Failed to load data of '.$dn);
$globalErrors[] = getFData(
_("Failed to load existing object %{dn} from LDAP server. Can't update object."),
$dn
);
}
}
// Restart import in update mode if (!$globalErrors) {
// Instanciate a creation/modification LSform (based on update_only mode and force API mode)
// Instanciate a new LSobject and load data from it's DN $form_id = $ioFormat -> update_only ? 'modify' : 'create';
$object = new $LSobject(); $form = $object -> getForm($form_id, null, true);
if (!$object -> loadData($dn)) { // Set form data from inputed data
self :: log_debug('import(): Failed to load data of '.$dn); if (!$form -> setPostData($objData, true)) {
$globalErrors[] = getFData( self :: log_debug('import(): Failed to setPostData on: '.print_r($objData,True));
_("Failed to load existing object %{dn} from LDAP server. Can't update object."), $globalErrors[] = _('Failed to set post data on creation form.');
$dn); }
} // Validate form
else { else if (!$form -> validate(true)) {
// Instanciate a modify form (in API mode) self :: log_debug('import(): Failed to validate form on: '.print_r($objData,True));
$form = $object -> getForm('modify', null, true); self :: log_debug('import(): Form errors: '.print_r($form->getErrors(),True));
// Set form data from inputed data $globalErrors[] = _('Error validating creation form.');
if (!$form -> setPostData($objData, true)) { }
self :: log_debug('import(): Failed to setPostData on update form : '.print_r($objData, True)); // Validate data (just check mode)
$globalErrors[] = _('Failed to set post data on update form.'); else if (!$object -> updateData($form_id, True)) {
} self :: log_debug('import(): fail to validate object data: '.varDump($objData));
// Validate form $globalErrors[] = _('Failed to validate object data.');
else if (!$form -> validate(true)) { }
self :: log_debug('import(): Failed to validate update form on : '.print_r($objData, True)); else {
self :: log_debug('import(): Form errors : '.print_r($form->getErrors(), True)); self :: log_debug('import(): Data is correct, retrieve object DN');
$globalErrors[] = _('Error validating update form.'); $dn = $object -> getDn();
} if (!$dn) {
// Update data on LDAP server self :: log_debug('import(): fail to generate for this object: '.varDump($objData));
else if ($justTry || $object -> updateData('modify')) { $globalErrors[] = _('Failed to generate DN for this object.');
self :: log_info('Object '.$object -> getDn().' updated'); }
$return['updated'][$object -> getDn()] = array( else {
// Check if object already exists
if (!$ioFormat -> update_only && !LSldap :: exists($dn)) {
// Creation mode
self :: log_debug('import(): New object, perform creation');
if ($justTry || $object -> updateData('create')) {
self :: log_info('Object '.$object -> getDn().' imported');
$return['imported'][$object -> getDn()] = array(
'name' => $object -> getDisplayName(), 'name' => $object -> getDisplayName(),
'infos' => $_SESSION['LSsession_infos'], 'messages' => $_SESSION['LSsession_infos'],
'errors' => LSerror :: getErrors(), 'errors' => LSerror :: getErrors(),
); );
$_SESSION['LSsession_infos'] = array(); $_SESSION['LSsession_infos'] = array();
continue; continue;
} }
else { else {
self :: log_error('Object '.$object -> getDn().': Failed to updateData (modify) on : '.print_r($objData, True)); self :: log_error('Failed to updateData on : '.print_r($objData, True));
$globalErrors[] = _('Error updating object on LDAP server.'); $globalErrors[]=_('Error creating object on LDAP server.');
}
}
// This object already exist, check 'updateIfExists' mode
elseif (!$updateIfExists) {
self :: log_debug('import(): Object '.$dn.' already exist');
$globalErrors[] = getFData(_('An object already exist on LDAP server with DN %{dn}.'),$dn);
}
else {
self :: log_info('Object '.$object -> getDn().' exist, perform update');
// Restart import in update mode
// Instanciate a new LSobject and load data from it's DN
// Note: expected in update_only mode, it's already done.
if (!$ioFormat -> update_only) {
$object = new $LSobject();
if (!$object -> loadData($dn)) {
self :: log_debug('import(): Failed to load data of '.$dn);
$globalErrors[] = getFData(
_("Failed to load existing object %{dn} from LDAP server. Can't update object."),
$dn);
}
}
if (!$globalErrors) {
// Instanciate a modify form (in API mode)
$form = $object -> getForm('modify', null, true);
// Set form data from inputed data
if (!$form -> setPostData($objData, true)) {
self :: log_debug('import(): Failed to setPostData on update form : '.print_r($objData, True));
$globalErrors[] = _('Failed to set post data on update form.');
}
// Validate form
else if (!$form -> validate(true)) {
self :: log_debug('import(): Failed to validate update form on : '.print_r($objData, True));
self :: log_debug('import(): Form errors : '.print_r($form->getErrors(), True));
$globalErrors[] = _('Error validating update form.');
}
// Update data on LDAP server
else if ($justTry || $object -> updateData('modify')) {
self :: log_info('Object '.$object -> getDn().' updated');
$return['updated'][$object -> getDn()] = array(
'name' => $object -> getDisplayName(),
'infos' => $_SESSION['LSsession_infos'],
'errors' => LSerror :: getErrors(),
);
$_SESSION['LSsession_infos'] = array();
continue;
}
else {
self :: log_error('Object '.$object -> getDn().': Failed to updateData (modify) on : '.print_r($objData, True));
$globalErrors[] = _('Error updating object on LDAP server.');
}
} }
} }
} }
@ -432,11 +485,15 @@ class LSio extends LSlog_staticLoggerClass {
'data' => $objData, 'data' => $objData,
'errors' => array ( 'errors' => array (
'globals' => $globalErrors, 'globals' => $globalErrors,
'attrs' => $form->getErrors(), 'attrs' => isset($form)?$form->getErrors():array(),
), ),
'messages' => $_SESSION['LSsession_infos'], 'messages' => $_SESSION['LSsession_infos'],
); );
$_SESSION['LSsession_infos'] = array(); $_SESSION['LSsession_infos'] = array();
// Clean iteration objects
unset($object);
if (isset($form)) unset($form);
} }
$return['errors'] = $objectsInError; $return['errors'] = $objectsInError;
$return['success'] = empty($objectsInError); $return['success'] = empty($objectsInError);
@ -856,6 +913,9 @@ ___("LSio: An error occured running after import hooks.")
LSerror :: defineError('LSio_10', LSerror :: defineError('LSio_10',
___("LSio: Error occured loading objects's data from input file.") ___("LSio: Error occured loading objects's data from input file.")
); );
LSerror :: defineError('LSio_11',
___("LSio: This input/output format only support update. You must check the 'Update objects if exists' box.")
);
// Defined CLI commands functions only on CLI context // Defined CLI commands functions only on CLI context
if (php_sapi_name() != 'cli') if (php_sapi_name() != 'cli')

View file

@ -25,6 +25,7 @@ LSsession :: loadLSclass('LSlog_staticLoggerClass');
/** /**
* Manage IOformat of LSldapObject import/export * Manage IOformat of LSldapObject import/export
* *
* @property-read bool $update_only
* @author Benjamin Renard <brenard@easter-eggs.com> * @author Benjamin Renard <brenard@easter-eggs.com>
*/ */
class LSioFormat extends LSlog_staticLoggerClass { class LSioFormat extends LSlog_staticLoggerClass {
@ -85,6 +86,22 @@ class LSioFormat extends LSlog_staticLoggerClass {
} }
} }
/**
* Access to infos of the ioFormat
*
* @param string $key The name of the value
*
* @return mixed The value
**/
public function __get($key) {
switch($key) {
case 'update_only':
return $this -> getConfig('update_only', false, 'bool');
}
// Unknown key, log warning
self :: log_warning("__get($key): invalid property requested\n".LSlog :: get_debug_backtrace_context());
}
/** /**
* Check if ioFormat driver is ready * Check if ioFormat driver is ready
* *
@ -162,17 +179,22 @@ class LSioFormat extends LSlog_staticLoggerClass {
// Add attributes to export and put their values to data to export // Add attributes to export and put their values to data to export
foreach($fields as $key => $attr_name) { foreach($fields as $key => $attr_name) {
$objects_data[$dn][$key] = null; $objects_data[$dn][$key] = null;
if (!isset($object -> attrs[$attr_name])) { if ($attr_name == 'dn') {
$objects_data[$dn][$key] = $dn;
}
else if (!isset($object -> attrs[$attr_name])) {
self :: log_warning("exportObjects($object): attribute '$attr_name' does not exist !"); self :: log_warning("exportObjects($object): attribute '$attr_name' does not exist !");
continue; continue;
} }
$object -> attrs[$attr_name] -> addToExport($export); else {
if (!isset($export -> elements[$attr_name])) { $object -> attrs[$attr_name] -> addToExport($export);
// @phpstan-ignore-next-line if (!isset($export -> elements[$attr_name])) {
self :: log_debug("exportObjects($object): attribute '$attr_name' not added to export : may be user can't read it"); // @phpstan-ignore-next-line
continue; self :: log_debug("exportObjects($object): attribute '$attr_name' not added to export : may be user can't read it");
continue;
}
$objects_data[$dn][$key] = $export -> elements[$attr_name] -> getApiValue(false);
} }
$objects_data[$dn][$key] = $export -> elements[$attr_name] -> getApiValue(false);
} }
} }
self :: log_trace('exportObjects(): objects data = '.varDump($objects_data)); self :: log_trace('exportObjects(): objects data = '.varDump($objects_data));

View file

@ -30,6 +30,7 @@ LSsession :: loadLSclass('LSattribute');
* *
* @property-read string $subDnValue * @property-read string $subDnValue
* @property-read string $subDnName * @property-read string $subDnName
* @property-read string $rdn_attr
* @property-read string $rdn * @property-read string $rdn
* @property-read string $type * @property-read string $type
* @author Benjamin Renard <brenard@easter-eggs.com> * @author Benjamin Renard <brenard@easter-eggs.com>
@ -2003,13 +2004,15 @@ class LSldapObject extends LSlog_staticLoggerClass {
$this -> cache['subDnName'] = self :: getSubDnName($this -> dn); $this -> cache['subDnName'] = self :: getSubDnName($this -> dn);
return $this -> cache['subDnName']; return $this -> cache['subDnName'];
} }
elseif ($key=='rdn') { elseif ($key=='rdn_attr') {
$rdn_attr = $this -> getConfig('rdn'); $rdn_attr = $this -> getConfig('rdn');
if ($rdn_attr && isset($this -> attrs[ $rdn_attr ])) { if ($rdn_attr && isset($this -> attrs[ $rdn_attr ]))
return $this -> attrs[ $rdn_attr ] -> getValue(); return $rdn_attr;
}
return false; return false;
} }
elseif ($key=='rdn') {
return $this -> rdn_attr?$this -> attrs[ $this -> rdn_attr ] -> getValue():false;
}
elseif ($key=='type') { elseif ($key=='type') {
return $this -> getType(); return $this -> getType();
} }

View file

@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: LdapSaisie\n" "Project-Id-Version: LdapSaisie\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n" "POT-Creation-Date: \n"
"PO-Revision-Date: 2023-07-03 12:30+0200\n" "PO-Revision-Date: 2023-07-19 12:07+0200\n"
"Last-Translator: Benjamin Renard <brenard@easter-eggs.com>\n" "Last-Translator: Benjamin Renard <brenard@easter-eggs.com>\n"
"Language-Team: LdapSaisie <ldapsaisie-users@lists.labs.libre-entreprise." "Language-Team: LdapSaisie <ldapsaisie-users@lists.labs.libre-entreprise."
"org>\n" "org>\n"
@ -633,10 +633,6 @@ msgstr ""
"MAILDIR : Erreur durant la récupération du chemin distant du dossier des " "MAILDIR : Erreur durant la récupération du chemin distant du dossier des "
"mails." "mails."
#: includes/addons/LSaddons.watermark.php:78
msgid "PRE-PRODUCTION"
msgstr "PRÉ-PRODUCTION"
#: includes/addons/LSaddons.showTechInfo.php:63 #: includes/addons/LSaddons.showTechInfo.php:63
#: templates/default/showTechInfo.tpl:16 #: templates/default/showTechInfo.tpl:16
msgid "Structural object class" msgid "Structural object class"
@ -752,101 +748,119 @@ msgstr "Valeur invalide"
msgid "LSformRule_%{type}: Parameter %{param} is not found." msgid "LSformRule_%{type}: Parameter %{param} is not found."
msgstr "LSformRule_%{type} : Le paramètre %{param} n'est pas défini." msgstr "LSformRule_%{type} : Le paramètre %{param} n'est pas défini."
#: includes/class/class.LSio.php:339 #: includes/class/class.LSio.php:356
msgid "Failed to set post data on creation form." msgid "Object DN is empty in provided data."
msgstr "Impossible de définir les données dans le formulaire de création." msgstr "Le DN de l'object est vide dans les données fournies."
#: includes/class/class.LSio.php:345 #: includes/class/class.LSio.php:363
msgid "Error validating creation form." msgid "Failed to compute object DN from provided data (no RDN value)."
msgstr "Une erreur est survenue en validant le formulaire de création."
#: includes/class/class.LSio.php:350
msgid "Failed to validate object data."
msgstr "Impossible de valider les données de l'objet."
#: includes/class/class.LSio.php:357
msgid "Failed to generate DN for this object."
msgstr "Impossible de générer le DN de cet objet."
#: includes/class/class.LSio.php:376
msgid "Error creating object on LDAP server."
msgstr "" msgstr ""
"Une erreur est survenue durant la création de cet objet dans l'annuaire LDAP." "Impossible de générer le DN de l'objet depuis les données fournies (pas de "
"valeur pour le RDN)."
#: includes/class/class.LSio.php:382 #: includes/class/class.LSio.php:374 includes/class/class.LSio.php:444
msgid "An object already exist on LDAP server with DN %{dn}."
msgstr "Un objet existe déjà dans l'annuaire LDAP avec le DN %{dn}."
#: includes/class/class.LSio.php:394
msgid "" msgid ""
"Failed to load existing object %{dn} from LDAP server. Can't update object." "Failed to load existing object %{dn} from LDAP server. Can't update object."
msgstr "" msgstr ""
"Impossible de charger l'objet existant %{dn} depuis l'annuaire LDAP. " "Impossible de charger l'objet existant %{dn} depuis l'annuaire LDAP. "
"Impossible de mettre à jour cet objet." "Impossible de mettre à jour cet objet."
#: includes/class/class.LSio.php:403 #: includes/class/class.LSio.php:387
msgid "Failed to set post data on creation form."
msgstr "Impossible de définir les données dans le formulaire de création."
#: includes/class/class.LSio.php:393
msgid "Error validating creation form."
msgstr "Une erreur est survenue en validant le formulaire de création."
#: includes/class/class.LSio.php:398
msgid "Failed to validate object data."
msgstr "Impossible de valider les données de l'objet."
#: includes/class/class.LSio.php:405
msgid "Failed to generate DN for this object."
msgstr "Impossible de générer le DN de cet objet."
#: includes/class/class.LSio.php:424
msgid "Error creating object on LDAP server."
msgstr ""
"Une erreur est survenue durant la création de cet objet dans l'annuaire LDAP."
#: includes/class/class.LSio.php:430
msgid "An object already exist on LDAP server with DN %{dn}."
msgstr "Un objet existe déjà dans l'annuaire LDAP avec le DN %{dn}."
#: includes/class/class.LSio.php:455
msgid "Failed to set post data on update form." msgid "Failed to set post data on update form."
msgstr "Impossible de définir les données dans le formulaire de mise à jour." msgstr "Impossible de définir les données dans le formulaire de mise à jour."
#: includes/class/class.LSio.php:409 #: includes/class/class.LSio.php:461
msgid "Error validating update form." msgid "Error validating update form."
msgstr "Une erreur est survenue en validant le formulaire de mise à jour." msgstr "Une erreur est survenue en validant le formulaire de mise à jour."
#: includes/class/class.LSio.php:424 #: includes/class/class.LSio.php:476
msgid "Error updating object on LDAP server." msgid "Error updating object on LDAP server."
msgstr "" msgstr ""
"Une erreur est survenue en mettant à jour cet objet dans l'annuaire LDAP." "Une erreur est survenue en mettant à jour cet objet dans l'annuaire LDAP."
#: includes/class/class.LSio.php:830 #: includes/class/class.LSio.php:883
msgid "LSio: Post data not found or not completed." msgid "LSio: Post data not found or not completed."
msgstr "LSio : les données transmises sont introuvables ou incomplètes." msgstr "LSio : les données transmises sont introuvables ou incomplètes."
#: includes/class/class.LSio.php:833 #: includes/class/class.LSio.php:886
msgid "LSio: object type invalid." msgid "LSio: object type invalid."
msgstr "LSio : type d'objet invalide." msgstr "LSio : type d'objet invalide."
#: includes/class/class.LSio.php:836 #: includes/class/class.LSio.php:889
msgid "LSio: input/output format %{format} invalid." msgid "LSio: input/output format %{format} invalid."
msgstr "LSio : Le format d'entrée/sortie %{format} est invalide." msgstr "LSio : Le format d'entrée/sortie %{format} est invalide."
#: includes/class/class.LSio.php:839 #: includes/class/class.LSio.php:892
msgid "LSio: Fail to initialize input/output driver." msgid "LSio: Fail to initialize input/output driver."
msgstr "LSio : Impossible d'initialiser le pilote d'entrée/sortie." msgstr "LSio : Impossible d'initialiser le pilote d'entrée/sortie."
#: includes/class/class.LSio.php:842 #: includes/class/class.LSio.php:895
msgid "LSio: Fail to load objects's data from input file." msgid "LSio: Fail to load objects's data from input file."
msgstr "" msgstr ""
"LSio: Impossible de charger les données des objets depuis le fichier " "LSio: Impossible de charger les données des objets depuis le fichier "
"d'import." "d'import."
#: includes/class/class.LSio.php:845 #: includes/class/class.LSio.php:898
msgid "LSio: Fail to load objects's data to export from LDAP directory." msgid "LSio: Fail to load objects's data to export from LDAP directory."
msgstr "" msgstr ""
"LSio: Impossible de charger les données des objets à exporter depuis " "LSio: Impossible de charger les données des objets à exporter depuis "
"l'annuaire LDAP." "l'annuaire LDAP."
#: includes/class/class.LSio.php:848 #: includes/class/class.LSio.php:901
msgid "LSio: Fail to export objects's data." msgid "LSio: Fail to export objects's data."
msgstr "LSio: Impossible d'exporter les données des objets." msgstr "LSio: Impossible d'exporter les données des objets."
#: includes/class/class.LSio.php:851 #: includes/class/class.LSio.php:904
msgid "LSio: An error occured running before import hooks. Stop the import." msgid "LSio: An error occured running before import hooks. Stop the import."
msgstr "" msgstr ""
"LSio : Une erreur est survenue durant l'exécution des déclencheurs d'avant " "LSio : Une erreur est survenue durant l'exécution des déclencheurs d'avant "
"import. Arrêt de l'import." "import. Arrêt de l'import."
#: includes/class/class.LSio.php:854 #: includes/class/class.LSio.php:907
msgid "LSio: An error occured running after import hooks." msgid "LSio: An error occured running after import hooks."
msgstr "" msgstr ""
"LSio : Une erreur est survenue durant l'exécution des déclencheurs d'après " "LSio : Une erreur est survenue durant l'exécution des déclencheurs d'après "
"import." "import."
#: includes/class/class.LSio.php:857 #: includes/class/class.LSio.php:910
msgid "LSio: Error occured loading objects's data from input file." msgid "LSio: Error occured loading objects's data from input file."
msgstr "" msgstr ""
"LSio: Une erreur est survenue en chargeant les données des objets depuis le " "LSio: Une erreur est survenue en chargeant les données des objets depuis le "
"fichier d'import." "fichier d'import."
#: includes/class/class.LSio.php:913
msgid ""
"LSio: This input/output format only support update. You must check the "
"'Update objects if exists' box."
msgstr ""
"LSio : Ce format d'import/export ne supporte que les mises à jour. Vous "
"devez cocher la case \"Mise à jour des objets existants\"."
#: includes/class/class.LSformElement_supannRessourceEtatDate.php:61 #: includes/class/class.LSformElement_supannRessourceEtatDate.php:61
msgid "Start date" msgid "Start date"
msgstr "Date de début" msgstr "Date de début"
@ -1738,25 +1752,25 @@ msgstr ""
msgid "Invalid file type (%{type})." msgid "Invalid file type (%{type})."
msgstr "Type de fichier invalide (%{type})." msgstr "Type de fichier invalide (%{type})."
#: includes/class/class.LSldapObject.php:584 #: includes/class/class.LSldapObject.php:585
msgid "The attribute %{attr} is not valid." msgid "The attribute %{attr} is not valid."
msgstr "L'attribut %{attr} n'est pas valide." msgstr "L'attribut %{attr} n'est pas valide."
#: includes/class/class.LSldapObject.php:3157 #: includes/class/class.LSldapObject.php:3160
msgid "LSldapObject : Object type unknown." msgid "LSldapObject : Object type unknown."
msgstr "LSldapObject : Type d'objet inconnu." msgstr "LSldapObject : Type d'objet inconnu."
#: includes/class/class.LSldapObject.php:3160 #: includes/class/class.LSldapObject.php:3163
msgid "LSldapObject : Update form is not defined for the object %{obj}." msgid "LSldapObject : Update form is not defined for the object %{obj}."
msgstr "" msgstr ""
"LSldapObject : Le formulaire de mise à jour n'est pas défini pour l'objet " "LSldapObject : Le formulaire de mise à jour n'est pas défini pour l'objet "
"%{obj}." "%{obj}."
#: includes/class/class.LSldapObject.php:3163 #: includes/class/class.LSldapObject.php:3166
msgid "LSldapObject : No form exists for the object %{obj}." msgid "LSldapObject : No form exists for the object %{obj}."
msgstr "LSldapObject : Aucun formulaire n'existe pour l'objet %{obj}" msgstr "LSldapObject : Aucun formulaire n'existe pour l'objet %{obj}"
#: includes/class/class.LSldapObject.php:3166 #: includes/class/class.LSldapObject.php:3169
msgid "" msgid ""
"LSldapObject : The function %{func} to validate the attribute %{attr} the " "LSldapObject : The function %{func} to validate the attribute %{attr} the "
"object %{obj} is unknow." "object %{obj} is unknow."
@ -1764,7 +1778,7 @@ msgstr ""
"LSldapObject : La fonction %{func} pour valider l'attribut %{attr} de " "LSldapObject : La fonction %{func} pour valider l'attribut %{attr} de "
"l'objet %{obj} est inconnue." "l'objet %{obj} est inconnue."
#: includes/class/class.LSldapObject.php:3169 #: includes/class/class.LSldapObject.php:3172
msgid "" msgid ""
"LSldapObject : Configuration data are missing to validate the attribute " "LSldapObject : Configuration data are missing to validate the attribute "
"%{attr} of the object %{obj}." "%{attr} of the object %{obj}."
@ -1772,7 +1786,7 @@ msgstr ""
"LSldapObject : Des données de configurations sont manquantes pour pouvoir " "LSldapObject : Des données de configurations sont manquantes pour pouvoir "
"valider l'attribut %{attr} de l'objet %{obj}." "valider l'attribut %{attr} de l'objet %{obj}."
#: includes/class/class.LSldapObject.php:3173 #: includes/class/class.LSldapObject.php:3176
msgid "" msgid ""
"LSldapObject : The function %{func} to be executed on the object event " "LSldapObject : The function %{func} to be executed on the object event "
"%{event} doesn't exist." "%{event} doesn't exist."
@ -1780,14 +1794,14 @@ msgstr ""
"LSldapObject : La fonction %{func} devant être exécutée lors de l'évènement " "LSldapObject : La fonction %{func} devant être exécutée lors de l'évènement "
"%{event} de l'objet n'existe pas." "%{event} de l'objet n'existe pas."
#: includes/class/class.LSldapObject.php:3176 #: includes/class/class.LSldapObject.php:3179
msgid "" msgid ""
"LSldapObject : The %{func} execution on the object event %{event} failed." "LSldapObject : The %{func} execution on the object event %{event} failed."
msgstr "" msgstr ""
"LSldapObject : L'exécution de la fonction %{func} lors de l'évènement " "LSldapObject : L'exécution de la fonction %{func} lors de l'évènement "
"%{event} de l'objet a échouée." "%{event} de l'objet a échouée."
#: includes/class/class.LSldapObject.php:3180 #: includes/class/class.LSldapObject.php:3183
msgid "" msgid ""
"LSldapObject : Class %{class}, which method %{meth} to be executed on the " "LSldapObject : Class %{class}, which method %{meth} to be executed on the "
"object event %{event}, doesn't exist." "object event %{event}, doesn't exist."
@ -1795,7 +1809,7 @@ msgstr ""
"La classe %{class}, contenant la méthode %{meth} devant être exécutée lors " "La classe %{class}, contenant la méthode %{meth} devant être exécutée lors "
"de l'évènement %{event} de l'objet, n'existe pas." "de l'évènement %{event} de l'objet, n'existe pas."
#: includes/class/class.LSldapObject.php:3183 #: includes/class/class.LSldapObject.php:3186
msgid "" msgid ""
"LSldapObject : Method %{meth} within %{class} class to be executed on object " "LSldapObject : Method %{meth} within %{class} class to be executed on object "
"event %{event}, doesn't exist." "event %{event}, doesn't exist."
@ -1803,7 +1817,7 @@ msgstr ""
"LSldapObject : La méthode %{meth} de la classe %{class} devant être exécutée " "LSldapObject : La méthode %{meth} de la classe %{class} devant être exécutée "
"lors de l'évènement %{event} de l'objet n'existe pas." "lors de l'évènement %{event} de l'objet n'existe pas."
#: includes/class/class.LSldapObject.php:3186 #: includes/class/class.LSldapObject.php:3189
msgid "" msgid ""
"LSldapObject : Error during execute %{meth} method within %{class} class, to " "LSldapObject : Error during execute %{meth} method within %{class} class, to "
"be executed on object event %{event}." "be executed on object event %{event}."
@ -1811,7 +1825,7 @@ msgstr ""
"LSldapObject : Erreur durant l'exécution de la méthode %{meth} de la classe " "LSldapObject : Erreur durant l'exécution de la méthode %{meth} de la classe "
"%{class} devant être exécutée lors de l'évènement %{event} de l'objet." "%{class} devant être exécutée lors de l'évènement %{event} de l'objet."
#: includes/class/class.LSldapObject.php:3190 #: includes/class/class.LSldapObject.php:3193
msgid "" msgid ""
"LSldapObject : Some configuration data of the object type %{obj} are missing " "LSldapObject : Some configuration data of the object type %{obj} are missing "
"to generate the DN of the new object." "to generate the DN of the new object."
@ -1819,7 +1833,7 @@ msgstr ""
"LSldapObject : Des informations de configuration du type d'objet %{obj} sont " "LSldapObject : Des informations de configuration du type d'objet %{obj} sont "
"manquantes pour la génération du DN du nouvel objet." "manquantes pour la génération du DN du nouvel objet."
#: includes/class/class.LSldapObject.php:3193 #: includes/class/class.LSldapObject.php:3196
msgid "" msgid ""
"LSldapObject : The attibute %{attr} of the object is not yet defined. Can't " "LSldapObject : The attibute %{attr} of the object is not yet defined. Can't "
"generate DN." "generate DN."
@ -1827,11 +1841,11 @@ msgstr ""
"LSldapObject : L'attribut %{attr} de l'objet n'est pas encore défini. " "LSldapObject : L'attribut %{attr} de l'objet n'est pas encore défini. "
"Impossible de générer le DN." "Impossible de générer le DN."
#: includes/class/class.LSldapObject.php:3196 #: includes/class/class.LSldapObject.php:3199
msgid "LSldapObject : Without DN, the object could not be changed." msgid "LSldapObject : Without DN, the object could not be changed."
msgstr "LSldapObject : Sans DN, l'objet ne peut pas être modifié." msgstr "LSldapObject : Sans DN, l'objet ne peut pas être modifié."
#: includes/class/class.LSldapObject.php:3199 #: includes/class/class.LSldapObject.php:3202
msgid "" msgid ""
"LSldapObject : The attribute %{attr_depend} depending on the attribute " "LSldapObject : The attribute %{attr_depend} depending on the attribute "
"%{attr} doesn't exist." "%{attr} doesn't exist."
@ -1839,39 +1853,39 @@ msgstr ""
"LSldapObject : L'attritbut %{attr_depend} dépendant de l'attribut %{attr} " "LSldapObject : L'attritbut %{attr_depend} dépendant de l'attribut %{attr} "
"n'existe pas." "n'existe pas."
#: includes/class/class.LSldapObject.php:3202 #: includes/class/class.LSldapObject.php:3205
msgid "LSldapObject : Error during deleting the object %{objectname}." msgid "LSldapObject : Error during deleting the object %{objectname}."
msgstr "LSldapObject : Erreur durant la suppression de l'objet %{objectname}" msgstr "LSldapObject : Erreur durant la suppression de l'objet %{objectname}"
#: includes/class/class.LSldapObject.php:3206 #: includes/class/class.LSldapObject.php:3209
msgid "" msgid ""
"LSldapObject : Error during actions to be executed before renaming the objet." "LSldapObject : Error during actions to be executed before renaming the objet."
msgstr "" msgstr ""
"LSldapObject : Erreur durant les actions devant être exécutée avant de " "LSldapObject : Erreur durant les actions devant être exécutée avant de "
"renommer l'objet." "renommer l'objet."
#: includes/class/class.LSldapObject.php:3209 #: includes/class/class.LSldapObject.php:3212
msgid "" msgid ""
"LSldapObject : Error during actions to be executed after renaming the objet." "LSldapObject : Error during actions to be executed after renaming the objet."
msgstr "" msgstr ""
"LSldapObject : Erreur durant les actions devant être exécutée après avoir " "LSldapObject : Erreur durant les actions devant être exécutée après avoir "
"renommé l'objet." "renommé l'objet."
#: includes/class/class.LSldapObject.php:3213 #: includes/class/class.LSldapObject.php:3216
msgid "" msgid ""
"LSldapObject : Error during actions to be executed before deleting the objet." "LSldapObject : Error during actions to be executed before deleting the objet."
msgstr "" msgstr ""
"LSldapObject : Erreur durant les actions devant être exécutée avant de " "LSldapObject : Erreur durant les actions devant être exécutée avant de "
"supprimer l'objet." "supprimer l'objet."
#: includes/class/class.LSldapObject.php:3216 #: includes/class/class.LSldapObject.php:3219
msgid "" msgid ""
"LSldapObject : Error during actions to be executed after deleting the objet." "LSldapObject : Error during actions to be executed after deleting the objet."
msgstr "" msgstr ""
"LSldapObject : Erreur durant les actions devant être exécutée après avoir " "LSldapObject : Erreur durant les actions devant être exécutée après avoir "
"supprimé l'objet." "supprimé l'objet."
#: includes/class/class.LSldapObject.php:3220 #: includes/class/class.LSldapObject.php:3223
msgid "" msgid ""
"LSldapObject : Error during the actions to be executed before creating the " "LSldapObject : Error during the actions to be executed before creating the "
"object." "object."
@ -1879,7 +1893,7 @@ msgstr ""
"LSldapObject : Erreur durant les actions devant être exécutée avant de créer " "LSldapObject : Erreur durant les actions devant être exécutée avant de créer "
"l'objet." "l'objet."
#: includes/class/class.LSldapObject.php:3223 #: includes/class/class.LSldapObject.php:3226
msgid "" msgid ""
"LSldapObject : Error during the actions to be executed after creating the " "LSldapObject : Error during the actions to be executed after creating the "
"object. It was created anyway." "object. It was created anyway."
@ -1887,7 +1901,7 @@ msgstr ""
"LSldapObject : Erreur durant les actions devant être exécutées après la " "LSldapObject : Erreur durant les actions devant être exécutées après la "
"création de l'objet. Il a tout de même été créé." "création de l'objet. Il a tout de même été créé."
#: includes/class/class.LSldapObject.php:3227 #: includes/class/class.LSldapObject.php:3230
msgid "" msgid ""
"LSldapObject : The function %{func} to be executed before creating the " "LSldapObject : The function %{func} to be executed before creating the "
"object doesn't exist." "object doesn't exist."
@ -1895,7 +1909,7 @@ msgstr ""
"LSldapObject : La fonction %{func} devant être exécutée avant la création de " "LSldapObject : La fonction %{func} devant être exécutée avant la création de "
"l'objet n'existe pas." "l'objet n'existe pas."
#: includes/class/class.LSldapObject.php:3230 #: includes/class/class.LSldapObject.php:3233
msgid "" msgid ""
"LSldapObject : Error executing the function %{func} to be execute after " "LSldapObject : Error executing the function %{func} to be execute after "
"deleting the object." "deleting the object."
@ -1903,7 +1917,7 @@ msgstr ""
"LSldapObject : Erreur durant l'exécution de la fonction %{func} devant être " "LSldapObject : Erreur durant l'exécution de la fonction %{func} devant être "
"exécutée après la suppression de l'objet." "exécutée après la suppression de l'objet."
#: includes/class/class.LSldapObject.php:3233 #: includes/class/class.LSldapObject.php:3236
msgid "" msgid ""
"LSldapObject : The function %{func} to be executed after deleting the object " "LSldapObject : The function %{func} to be executed after deleting the object "
"doesn't exist." "doesn't exist."
@ -1911,7 +1925,7 @@ msgstr ""
"LSldapObject : La fonction %{func} devant être exécutée après la suppression " "LSldapObject : La fonction %{func} devant être exécutée après la suppression "
"de l'objet n'existe pas." "de l'objet n'existe pas."
#: includes/class/class.LSldapObject.php:3236 #: includes/class/class.LSldapObject.php:3239
msgid "" msgid ""
"LSldapObject : Error executing the function %{func} to be execute after " "LSldapObject : Error executing the function %{func} to be execute after "
"creating the object." "creating the object."
@ -1919,7 +1933,7 @@ msgstr ""
"LSldapObject : Erreur durant l'exécution de la fonction %{func} devant être " "LSldapObject : Erreur durant l'exécution de la fonction %{func} devant être "
"exécutée après la création de l'objet." "exécutée après la création de l'objet."
#: includes/class/class.LSldapObject.php:3240 #: includes/class/class.LSldapObject.php:3243
msgid "" msgid ""
"LSldapObject : %{func} function, to be executed on object event %{event}, " "LSldapObject : %{func} function, to be executed on object event %{event}, "
"doesn't exist." "doesn't exist."
@ -1927,7 +1941,7 @@ msgstr ""
"LSldapObject : La fonction %{func}, devant être exécutée lors de l'évènement " "LSldapObject : La fonction %{func}, devant être exécutée lors de l'évènement "
"%{event} de l'objet, n'existe pas." "%{event} de l'objet, n'existe pas."
#: includes/class/class.LSldapObject.php:3243 #: includes/class/class.LSldapObject.php:3246
msgid "" msgid ""
"LSldapObject : Error during the execution of %{func} function on object " "LSldapObject : Error during the execution of %{func} function on object "
"event %{event}." "event %{event}."
@ -1935,7 +1949,7 @@ msgstr ""
"LSldapObject : Erreur durant l'exécution de la fonction %{func} lors de " "LSldapObject : Erreur durant l'exécution de la fonction %{func} lors de "
"l'évènement %{event} de l'objet." "l'évènement %{event} de l'objet."
#: includes/class/class.LSldapObject.php:3247 #: includes/class/class.LSldapObject.php:3250
msgid "" msgid ""
"LSldapObject : %{meth} method, to be executed on object event %{event}, " "LSldapObject : %{meth} method, to be executed on object event %{event}, "
"doesn't exist." "doesn't exist."
@ -1943,7 +1957,7 @@ msgstr ""
"LSldapObject : La méthode %{meth}, devant être exécutée lors de l'évènement " "LSldapObject : La méthode %{meth}, devant être exécutée lors de l'évènement "
"%{event} de l'objet, n'existe pas." "%{event} de l'objet, n'existe pas."
#: includes/class/class.LSldapObject.php:3250 #: includes/class/class.LSldapObject.php:3253
msgid "" msgid ""
"LSldapObject : Error during execution of %{meth} method on object event " "LSldapObject : Error during execution of %{meth} method on object event "
"%{event}." "%{event}."
@ -1951,13 +1965,13 @@ msgstr ""
"LSldapObject : Erreur durant l'exécution de la méthode %{meth} lors de " "LSldapObject : Erreur durant l'exécution de la méthode %{meth} lors de "
"l'évènement %{event} de l'objet." "l'évènement %{event} de l'objet."
#: includes/class/class.LSldapObject.php:3253 #: includes/class/class.LSldapObject.php:3256
msgid "LSldapObject : Error during generate LDAP filter for %{LSobject}." msgid "LSldapObject : Error during generate LDAP filter for %{LSobject}."
msgstr "" msgstr ""
"LSldapObject : Erreur durant la génération du filtre LDAP de l'objet " "LSldapObject : Erreur durant la génération du filtre LDAP de l'objet "
"%{LSobject}." "%{LSobject}."
#: includes/class/class.LSldapObject.php:3257 #: includes/class/class.LSldapObject.php:3260
msgid "" msgid ""
"LSldapObject : Error during execution of the custom action %{customAction} " "LSldapObject : Error during execution of the custom action %{customAction} "
"on %{objectname}." "on %{objectname}."
@ -1965,22 +1979,22 @@ msgstr ""
"LSldapObject : Erreur durant l'exécution de l'action personnalisée " "LSldapObject : Erreur durant l'exécution de l'action personnalisée "
"%{customAction} sur l'objet %{objectname}." "%{customAction} sur l'objet %{objectname}."
#: includes/class/class.LSldapObject.php:3261 #: includes/class/class.LSldapObject.php:3264
msgid "LSldapObject : Fail to retrieve container DN." msgid "LSldapObject : Fail to retrieve container DN."
msgstr "LSldapObject : Impossible de récupérer le DN parent." msgstr "LSldapObject : Impossible de récupérer le DN parent."
#: includes/class/class.LSldapObject.php:3264 #: includes/class/class.LSldapObject.php:3267
msgid "" msgid ""
"LSldapObject : The function %{func} to generate container DN is not callable." "LSldapObject : The function %{func} to generate container DN is not callable."
msgstr "" msgstr ""
"LSldapObject : La fonction %{func} pour générer le DN parent n'est pas " "LSldapObject : La fonction %{func} pour générer le DN parent n'est pas "
"exécutable." "exécutable."
#: includes/class/class.LSldapObject.php:3267 #: includes/class/class.LSldapObject.php:3270
msgid "LSldapObject : Error during generating container DN : %{error}" msgid "LSldapObject : Error during generating container DN : %{error}"
msgstr "LSldapObject : Erreur durant la génération du DN parent : %{error}." msgstr "LSldapObject : Erreur durant la génération du DN parent : %{error}."
#: includes/class/class.LSldapObject.php:3270 #: includes/class/class.LSldapObject.php:3273
msgid "" msgid ""
"LSldapObject : An LDAP object with the same DN as generated for this new one " "LSldapObject : An LDAP object with the same DN as generated for this new one "
"already exists. Please verify your configuration." "already exists. Please verify your configuration."
@ -1988,7 +2002,7 @@ msgstr ""
"LSldapObject : Un objet LDAP avec le même DN que celui généré pour ce nouvel " "LSldapObject : Un objet LDAP avec le même DN que celui généré pour ce nouvel "
"objet existe déjà. Merci de vérifier votre configuration." "objet existe déjà. Merci de vérifier votre configuration."
#: includes/class/class.LSldapObject.php:3275 #: includes/class/class.LSldapObject.php:3278
msgid "" msgid ""
"LSrelation : Some parameters are missing in the call of methods to handle " "LSrelation : Some parameters are missing in the call of methods to handle "
"standard relations (Method : %{meth})." "standard relations (Method : %{meth})."
@ -3203,7 +3217,7 @@ msgstr ""
"LSsearchEntry : formaterFunction %{func} invalide utilisé pour " "LSsearchEntry : formaterFunction %{func} invalide utilisé pour "
"l'extraDisplayedColumns %{column}." "l'extraDisplayedColumns %{column}."
#: includes/class/class.LSioFormat.php:224 #: includes/class/class.LSioFormat.php:246
msgid "LSioFormat : IOformat driver %{driver} invalid or unavailable." msgid "LSioFormat : IOformat driver %{driver} invalid or unavailable."
msgstr "" msgstr ""
"LSioFormat : Le pilote d'IOformat %{driver} est invalide ou n'est pas " "LSioFormat : Le pilote d'IOformat %{driver} est invalide ou n'est pas "
@ -3744,3 +3758,6 @@ msgstr "événement(s) trouvé(s) pour cet objet."
#: templates/default/import.tpl:27 templates/default/import.tpl:33 #: templates/default/import.tpl:27 templates/default/import.tpl:33
msgid "no" msgid "no"
msgstr "non" msgstr "non"
#~ msgid "PRE-PRODUCTION"
#~ msgstr "PRÉ-PRODUCTION"

View file

@ -527,10 +527,6 @@ msgstr ""
msgid "MAILDIR : Error retrieving remote path of the maildir." msgid "MAILDIR : Error retrieving remote path of the maildir."
msgstr "" msgstr ""
#: includes/addons/LSaddons.watermark.php:78
msgid "PRE-PRODUCTION"
msgstr ""
#: includes/addons/LSaddons.showTechInfo.php:63 #: includes/addons/LSaddons.showTechInfo.php:63
#: templates/default/showTechInfo.tpl:16 #: templates/default/showTechInfo.tpl:16
msgid "Structural object class" msgid "Structural object class"
@ -638,87 +634,101 @@ msgstr ""
msgid "LSformRule_%{type}: Parameter %{param} is not found." msgid "LSformRule_%{type}: Parameter %{param} is not found."
msgstr "" msgstr ""
#: includes/class/class.LSio.php:339 #: includes/class/class.LSio.php:356
msgid "Failed to set post data on creation form." msgid "Object DN is empty in provided data."
msgstr "" msgstr ""
#: includes/class/class.LSio.php:345 #: includes/class/class.LSio.php:363
msgid "Error validating creation form." msgid "Failed to compute object DN from provided data (no RDN value)."
msgstr "" msgstr ""
#: includes/class/class.LSio.php:350 #: includes/class/class.LSio.php:374 includes/class/class.LSio.php:444
msgid "Failed to validate object data."
msgstr ""
#: includes/class/class.LSio.php:357
msgid "Failed to generate DN for this object."
msgstr ""
#: includes/class/class.LSio.php:376
msgid "Error creating object on LDAP server."
msgstr ""
#: includes/class/class.LSio.php:382
msgid "An object already exist on LDAP server with DN %{dn}."
msgstr ""
#: includes/class/class.LSio.php:394
msgid "" msgid ""
"Failed to load existing object %{dn} from LDAP server. Can't update object." "Failed to load existing object %{dn} from LDAP server. Can't update object."
msgstr "" msgstr ""
#: includes/class/class.LSio.php:403 #: includes/class/class.LSio.php:387
msgid "Failed to set post data on update form." msgid "Failed to set post data on creation form."
msgstr "" msgstr ""
#: includes/class/class.LSio.php:409 #: includes/class/class.LSio.php:393
msgid "Error validating update form." msgid "Error validating creation form."
msgstr ""
#: includes/class/class.LSio.php:398
msgid "Failed to validate object data."
msgstr ""
#: includes/class/class.LSio.php:405
msgid "Failed to generate DN for this object."
msgstr "" msgstr ""
#: includes/class/class.LSio.php:424 #: includes/class/class.LSio.php:424
msgid "Error creating object on LDAP server."
msgstr ""
#: includes/class/class.LSio.php:430
msgid "An object already exist on LDAP server with DN %{dn}."
msgstr ""
#: includes/class/class.LSio.php:455
msgid "Failed to set post data on update form."
msgstr ""
#: includes/class/class.LSio.php:461
msgid "Error validating update form."
msgstr ""
#: includes/class/class.LSio.php:476
msgid "Error updating object on LDAP server." msgid "Error updating object on LDAP server."
msgstr "" msgstr ""
#: includes/class/class.LSio.php:830 #: includes/class/class.LSio.php:883
msgid "LSio: Post data not found or not completed." msgid "LSio: Post data not found or not completed."
msgstr "" msgstr ""
#: includes/class/class.LSio.php:833 #: includes/class/class.LSio.php:886
msgid "LSio: object type invalid." msgid "LSio: object type invalid."
msgstr "" msgstr ""
#: includes/class/class.LSio.php:836 #: includes/class/class.LSio.php:889
msgid "LSio: input/output format %{format} invalid." msgid "LSio: input/output format %{format} invalid."
msgstr "" msgstr ""
#: includes/class/class.LSio.php:839 #: includes/class/class.LSio.php:892
msgid "LSio: Fail to initialize input/output driver." msgid "LSio: Fail to initialize input/output driver."
msgstr "" msgstr ""
#: includes/class/class.LSio.php:842 #: includes/class/class.LSio.php:895
msgid "LSio: Fail to load objects's data from input file." msgid "LSio: Fail to load objects's data from input file."
msgstr "" msgstr ""
#: includes/class/class.LSio.php:845 #: includes/class/class.LSio.php:898
msgid "LSio: Fail to load objects's data to export from LDAP directory." msgid "LSio: Fail to load objects's data to export from LDAP directory."
msgstr "" msgstr ""
#: includes/class/class.LSio.php:848 #: includes/class/class.LSio.php:901
msgid "LSio: Fail to export objects's data." msgid "LSio: Fail to export objects's data."
msgstr "" msgstr ""
#: includes/class/class.LSio.php:851 #: includes/class/class.LSio.php:904
msgid "LSio: An error occured running before import hooks. Stop the import." msgid "LSio: An error occured running before import hooks. Stop the import."
msgstr "" msgstr ""
#: includes/class/class.LSio.php:854 #: includes/class/class.LSio.php:907
msgid "LSio: An error occured running after import hooks." msgid "LSio: An error occured running after import hooks."
msgstr "" msgstr ""
#: includes/class/class.LSio.php:857 #: includes/class/class.LSio.php:910
msgid "LSio: Error occured loading objects's data from input file." msgid "LSio: Error occured loading objects's data from input file."
msgstr "" msgstr ""
#: includes/class/class.LSio.php:913
msgid ""
"LSio: This input/output format only support update. You must check the "
"'Update objects if exists' box."
msgstr ""
#: includes/class/class.LSformElement_supannRessourceEtatDate.php:61 #: includes/class/class.LSformElement_supannRessourceEtatDate.php:61
msgid "Start date" msgid "Start date"
msgstr "" msgstr ""
@ -1474,199 +1484,199 @@ msgstr ""
msgid "Invalid file type (%{type})." msgid "Invalid file type (%{type})."
msgstr "" msgstr ""
#: includes/class/class.LSldapObject.php:584 #: includes/class/class.LSldapObject.php:585
msgid "The attribute %{attr} is not valid." msgid "The attribute %{attr} is not valid."
msgstr "" msgstr ""
#: includes/class/class.LSldapObject.php:3157 #: includes/class/class.LSldapObject.php:3160
msgid "LSldapObject : Object type unknown." msgid "LSldapObject : Object type unknown."
msgstr "" msgstr ""
#: includes/class/class.LSldapObject.php:3160 #: includes/class/class.LSldapObject.php:3163
msgid "LSldapObject : Update form is not defined for the object %{obj}." msgid "LSldapObject : Update form is not defined for the object %{obj}."
msgstr "" msgstr ""
#: includes/class/class.LSldapObject.php:3163 #: includes/class/class.LSldapObject.php:3166
msgid "LSldapObject : No form exists for the object %{obj}." msgid "LSldapObject : No form exists for the object %{obj}."
msgstr "" msgstr ""
#: includes/class/class.LSldapObject.php:3166 #: includes/class/class.LSldapObject.php:3169
msgid "" msgid ""
"LSldapObject : The function %{func} to validate the attribute %{attr} the " "LSldapObject : The function %{func} to validate the attribute %{attr} the "
"object %{obj} is unknow." "object %{obj} is unknow."
msgstr "" msgstr ""
#: includes/class/class.LSldapObject.php:3169 #: includes/class/class.LSldapObject.php:3172
msgid "" msgid ""
"LSldapObject : Configuration data are missing to validate the attribute " "LSldapObject : Configuration data are missing to validate the attribute "
"%{attr} of the object %{obj}." "%{attr} of the object %{obj}."
msgstr "" msgstr ""
#: includes/class/class.LSldapObject.php:3173 #: includes/class/class.LSldapObject.php:3176
msgid "" msgid ""
"LSldapObject : The function %{func} to be executed on the object event " "LSldapObject : The function %{func} to be executed on the object event "
"%{event} doesn't exist." "%{event} doesn't exist."
msgstr "" msgstr ""
#: includes/class/class.LSldapObject.php:3176 #: includes/class/class.LSldapObject.php:3179
msgid "" msgid ""
"LSldapObject : The %{func} execution on the object event %{event} failed." "LSldapObject : The %{func} execution on the object event %{event} failed."
msgstr "" msgstr ""
#: includes/class/class.LSldapObject.php:3180 #: includes/class/class.LSldapObject.php:3183
msgid "" msgid ""
"LSldapObject : Class %{class}, which method %{meth} to be executed on the " "LSldapObject : Class %{class}, which method %{meth} to be executed on the "
"object event %{event}, doesn't exist." "object event %{event}, doesn't exist."
msgstr "" msgstr ""
#: includes/class/class.LSldapObject.php:3183 #: includes/class/class.LSldapObject.php:3186
msgid "" msgid ""
"LSldapObject : Method %{meth} within %{class} class to be executed on object " "LSldapObject : Method %{meth} within %{class} class to be executed on object "
"event %{event}, doesn't exist." "event %{event}, doesn't exist."
msgstr "" msgstr ""
#: includes/class/class.LSldapObject.php:3186 #: includes/class/class.LSldapObject.php:3189
msgid "" msgid ""
"LSldapObject : Error during execute %{meth} method within %{class} class, to " "LSldapObject : Error during execute %{meth} method within %{class} class, to "
"be executed on object event %{event}." "be executed on object event %{event}."
msgstr "" msgstr ""
#: includes/class/class.LSldapObject.php:3190 #: includes/class/class.LSldapObject.php:3193
msgid "" msgid ""
"LSldapObject : Some configuration data of the object type %{obj} are missing " "LSldapObject : Some configuration data of the object type %{obj} are missing "
"to generate the DN of the new object." "to generate the DN of the new object."
msgstr "" msgstr ""
#: includes/class/class.LSldapObject.php:3193 #: includes/class/class.LSldapObject.php:3196
msgid "" msgid ""
"LSldapObject : The attibute %{attr} of the object is not yet defined. Can't " "LSldapObject : The attibute %{attr} of the object is not yet defined. Can't "
"generate DN." "generate DN."
msgstr "" msgstr ""
#: includes/class/class.LSldapObject.php:3196 #: includes/class/class.LSldapObject.php:3199
msgid "LSldapObject : Without DN, the object could not be changed." msgid "LSldapObject : Without DN, the object could not be changed."
msgstr "" msgstr ""
#: includes/class/class.LSldapObject.php:3199 #: includes/class/class.LSldapObject.php:3202
msgid "" msgid ""
"LSldapObject : The attribute %{attr_depend} depending on the attribute " "LSldapObject : The attribute %{attr_depend} depending on the attribute "
"%{attr} doesn't exist." "%{attr} doesn't exist."
msgstr "" msgstr ""
#: includes/class/class.LSldapObject.php:3202 #: includes/class/class.LSldapObject.php:3205
msgid "LSldapObject : Error during deleting the object %{objectname}." msgid "LSldapObject : Error during deleting the object %{objectname}."
msgstr "" msgstr ""
#: includes/class/class.LSldapObject.php:3206
msgid ""
"LSldapObject : Error during actions to be executed before renaming the objet."
msgstr ""
#: includes/class/class.LSldapObject.php:3209 #: includes/class/class.LSldapObject.php:3209
msgid "" msgid ""
"LSldapObject : Error during actions to be executed after renaming the objet." "LSldapObject : Error during actions to be executed before renaming the objet."
msgstr "" msgstr ""
#: includes/class/class.LSldapObject.php:3213 #: includes/class/class.LSldapObject.php:3212
msgid "" msgid ""
"LSldapObject : Error during actions to be executed before deleting the objet." "LSldapObject : Error during actions to be executed after renaming the objet."
msgstr "" msgstr ""
#: includes/class/class.LSldapObject.php:3216 #: includes/class/class.LSldapObject.php:3216
msgid "" msgid ""
"LSldapObject : Error during actions to be executed before deleting the objet."
msgstr ""
#: includes/class/class.LSldapObject.php:3219
msgid ""
"LSldapObject : Error during actions to be executed after deleting the objet." "LSldapObject : Error during actions to be executed after deleting the objet."
msgstr "" msgstr ""
#: includes/class/class.LSldapObject.php:3220 #: includes/class/class.LSldapObject.php:3223
msgid "" msgid ""
"LSldapObject : Error during the actions to be executed before creating the " "LSldapObject : Error during the actions to be executed before creating the "
"object." "object."
msgstr "" msgstr ""
#: includes/class/class.LSldapObject.php:3223 #: includes/class/class.LSldapObject.php:3226
msgid "" msgid ""
"LSldapObject : Error during the actions to be executed after creating the " "LSldapObject : Error during the actions to be executed after creating the "
"object. It was created anyway." "object. It was created anyway."
msgstr "" msgstr ""
#: includes/class/class.LSldapObject.php:3227 #: includes/class/class.LSldapObject.php:3230
msgid "" msgid ""
"LSldapObject : The function %{func} to be executed before creating the " "LSldapObject : The function %{func} to be executed before creating the "
"object doesn't exist." "object doesn't exist."
msgstr "" msgstr ""
#: includes/class/class.LSldapObject.php:3230 #: includes/class/class.LSldapObject.php:3233
msgid "" msgid ""
"LSldapObject : Error executing the function %{func} to be execute after " "LSldapObject : Error executing the function %{func} to be execute after "
"deleting the object." "deleting the object."
msgstr "" msgstr ""
#: includes/class/class.LSldapObject.php:3233 #: includes/class/class.LSldapObject.php:3236
msgid "" msgid ""
"LSldapObject : The function %{func} to be executed after deleting the object " "LSldapObject : The function %{func} to be executed after deleting the object "
"doesn't exist." "doesn't exist."
msgstr "" msgstr ""
#: includes/class/class.LSldapObject.php:3236 #: includes/class/class.LSldapObject.php:3239
msgid "" msgid ""
"LSldapObject : Error executing the function %{func} to be execute after " "LSldapObject : Error executing the function %{func} to be execute after "
"creating the object." "creating the object."
msgstr "" msgstr ""
#: includes/class/class.LSldapObject.php:3240 #: includes/class/class.LSldapObject.php:3243
msgid "" msgid ""
"LSldapObject : %{func} function, to be executed on object event %{event}, " "LSldapObject : %{func} function, to be executed on object event %{event}, "
"doesn't exist." "doesn't exist."
msgstr "" msgstr ""
#: includes/class/class.LSldapObject.php:3243 #: includes/class/class.LSldapObject.php:3246
msgid "" msgid ""
"LSldapObject : Error during the execution of %{func} function on object " "LSldapObject : Error during the execution of %{func} function on object "
"event %{event}." "event %{event}."
msgstr "" msgstr ""
#: includes/class/class.LSldapObject.php:3247 #: includes/class/class.LSldapObject.php:3250
msgid "" msgid ""
"LSldapObject : %{meth} method, to be executed on object event %{event}, " "LSldapObject : %{meth} method, to be executed on object event %{event}, "
"doesn't exist." "doesn't exist."
msgstr "" msgstr ""
#: includes/class/class.LSldapObject.php:3250 #: includes/class/class.LSldapObject.php:3253
msgid "" msgid ""
"LSldapObject : Error during execution of %{meth} method on object event " "LSldapObject : Error during execution of %{meth} method on object event "
"%{event}." "%{event}."
msgstr "" msgstr ""
#: includes/class/class.LSldapObject.php:3253 #: includes/class/class.LSldapObject.php:3256
msgid "LSldapObject : Error during generate LDAP filter for %{LSobject}." msgid "LSldapObject : Error during generate LDAP filter for %{LSobject}."
msgstr "" msgstr ""
#: includes/class/class.LSldapObject.php:3257 #: includes/class/class.LSldapObject.php:3260
msgid "" msgid ""
"LSldapObject : Error during execution of the custom action %{customAction} " "LSldapObject : Error during execution of the custom action %{customAction} "
"on %{objectname}." "on %{objectname}."
msgstr "" msgstr ""
#: includes/class/class.LSldapObject.php:3261 #: includes/class/class.LSldapObject.php:3264
msgid "LSldapObject : Fail to retrieve container DN." msgid "LSldapObject : Fail to retrieve container DN."
msgstr "" msgstr ""
#: includes/class/class.LSldapObject.php:3264 #: includes/class/class.LSldapObject.php:3267
msgid "" msgid ""
"LSldapObject : The function %{func} to generate container DN is not callable." "LSldapObject : The function %{func} to generate container DN is not callable."
msgstr "" msgstr ""
#: includes/class/class.LSldapObject.php:3267 #: includes/class/class.LSldapObject.php:3270
msgid "LSldapObject : Error during generating container DN : %{error}" msgid "LSldapObject : Error during generating container DN : %{error}"
msgstr "" msgstr ""
#: includes/class/class.LSldapObject.php:3270 #: includes/class/class.LSldapObject.php:3273
msgid "" msgid ""
"LSldapObject : An LDAP object with the same DN as generated for this new one " "LSldapObject : An LDAP object with the same DN as generated for this new one "
"already exists. Please verify your configuration." "already exists. Please verify your configuration."
msgstr "" msgstr ""
#: includes/class/class.LSldapObject.php:3275 #: includes/class/class.LSldapObject.php:3278
msgid "" msgid ""
"LSrelation : Some parameters are missing in the call of methods to handle " "LSrelation : Some parameters are missing in the call of methods to handle "
"standard relations (Method : %{meth})." "standard relations (Method : %{meth})."
@ -2724,7 +2734,7 @@ msgid ""
"%{column}." "%{column}."
msgstr "" msgstr ""
#: includes/class/class.LSioFormat.php:224 #: includes/class/class.LSioFormat.php:246
msgid "LSioFormat : IOformat driver %{driver} invalid or unavailable." msgid "LSioFormat : IOformat driver %{driver} invalid or unavailable."
msgstr "" msgstr ""