13.5.1.2 Dir::insertMultipleDocuments()
La méthode insertMultipleDocuments permet d'insérer plusieurs documents dans
le même dossier.
13.5.1.2.1 Description
string insertMultipleDocuments ( array $tdocs, string $mode = "latest", bool $noprepost = false, & $tinserted = array(), & $twarning = array(), & $info = array() ) )
13.5.1.2.1.1 Avertissements
Aucun.
13.5.1.2.2 Liste des paramètres
- (array)
tdocs -
tdocsest une liste de documents bruts (voir Retour de documents bruts avecSearchDoc) à insérer dans le dossier. - (string)
mode - Seule la valeur
latest(valeur par défaut) est supportée. - (bool)
noprepost -
noprepostpermet de désactiver l'appel des méthodes hameçonspreInsertMultipleDocuments,preInsertDocument,postInsertDocumentetpostInsertMultipleDocumentsappelées avant ou après l'insertion des documents dans le dossier.Valeur par défaut :
false.Si
false, les hameçonspreInsertMultipleDocuments,preInsertDocumentetpostInsertMultipleDocumentssont appelés. - [out] (string[])
tinserted -
tinsertedréférence un array associatif retourné par la méthode.Les clés sont les identifiants (
initid) des documents insérés dans le dossier et la valeur est un message indiquant que le document a été inséré dans le dossier.Exemple de valeur retournée dans le array référencé :
array( 1234 => 'Document 1234 inséré', 2345 => 'Document 2345 inséré' )
- [out] (string[])
twarning -
twarningréférence un array associatif retourné par la méthode.Les clés sont les identifiants des documents qui n'ont pas pu être insérés dans le dossier et la valeur est le message d'erreur de l'insertion.
- [out] (array)
info -
inforéférence un array associatif retourné par la méthode.Il contient les erreurs retournés par les différents hameçons, et est de la forme suivante :
array( 'error' => "Message d'erreur global de insertMultipleDocuments", 'modifyError' => "Erreur lié au droit de modification" 'preInsertMultipleDocuments' => "Message d'erreur de preInsertMultipleDocuments", 'preInsertDocument' => array( "Message d'erreur de preInsertDocument#1", ... "Message d'erreur de perInsertDocument#N" ), 'postInsertDocument' => array( "Message d'erreur de postInsertDocument#1", ... "Message d'erreur de postInsertDocument#N" ), 'postInsertMultipleDocuments' => "Message d'erreur de postInsertMultipleDocuments()" )
13.5.1.2.3 Valeur de retour
La méthode retourne une chaîne vide s'il n'y a pas d'erreurs, ou une chaîne non- vide contenant le message d'erreur.
13.5.1.2.4 Erreurs / Exceptions
Les erreurs peuvent êtres :
- L'utilisateur ne possède pas le droit d'insertion de documents dans le dossier.
- Le dossier est verrouillé par un autre utilisateur.
- Le document inséré n'est pas compatible par rapport aux documents supportés par le dossier.
- Les méthodes d'hameçon
preInsertMultipleDocuments,preInsertDocument,postInsertDocumentoupostInsertMultipleDocumentsont retourné une erreur (voir paramètrenoprepostci-dessus).
Les documents qui n'ont pas pu être insérés dans le dossier peuvent être
consultés via l'argument retour $twarning passé à la méthode
insertMultipleDocuments.
13.5.1.2.5 Historique
13.5.1.2.5.1 Release 3.2.5
La méthode insertMultipleDocuments remplace la méthode précédemment nommée
InsertMDoc.
L'utilisation de InsertMDoc est obsolète depuis la version 3.2.5 de dynacase-
core.
13.5.1.2.5.2 Release 3.2.12
3.2.12 La méthode
Dir::insertMultipleDocuments a été modifiée afin de faire remonter le message
d'erreur de la méthode hameçon Dir::postInsertMultipleDocuments dans son
retour d'erreur.
La méthode Dir::insertMultipleDocuments ajoute un 6ème paramètre optionnel
info qui permet de récupérer les
différents messages d'erreurs rencontrés.
13.5.1.2.6 Exemples
L'exemple suivant va rechercher tous les utilisateurs dont l'adresse mail
contient @the-avengers.net, et les insérer dans un nouveau groupe
GRP_THE_AVENGERS :
include_once "FDL/freedom_util.php"; /* * Créer un nouveau groupe GRP_EXAMPLE_NET */ /** * @var \dcp\Family\Igroup $group */ $group = createDoc('', 'IGROUP'); $group->setAttributeValue('us_login', 'grp_the_avengers'); $group->setAttributeValue('grp_name', 'Groupe @the-avengers.net'); $group->store(); /* * Affecter un nom logique au groupe */ $group->setLogicalName('GRP_THE_AVENGERS'); /* * Rechercher tous les utilisateurs ayant une * adresse mail en "@the-avengers.net". */ $s = new SearchDoc('', 'IUSER'); $s->addFilter("us_extmail LIKE '%@the-avengers.net'"); $userList = $s->search(); if (count($userList) > 0) { /* * Insérer tous ces utilisateurs dans le groupe. */ $insertedList = array(); $warningList = array(); $err = $group->insertMultipleDocuments( $userList, "latest", false, $insertedList, $warningList ); if ($err != '') { printf("* Some documents have not been inserted: %s", $err); } printf("* %d insertions :\n", count($insertedList)); foreach ($insertedList as $docId => $msg) { printf("\t[%s] %s\n", $docId, $msg); } printf("* %d warnings :\n", count($warningList)); foreach ($warningList as $docId => $warningMsg) { printf("\t[%d] %s\n", $docId, $warningMsg); }
}
Résultat :
* 2 insertions :
[1057] Insertion document Peel Emma
[1058] Insertion document Steed John
* 0 warnings :
13.5.1.2.7 Notes
Ordre d'appel des hameçons :
.-(1)-------------------------------------------------------.
| $this->preInsertMultipleDocuments($rawDocumentList); |
'-----------------------------------------------------------'
foreach ($rawDocumentList as $rawDoc) {
.-(2)--------------------------------------.
| $this->preInsertDocument($rawDoc, true); |
'------------------------------------------'
<Insertion du document $rawDoc['id'] dans le dossier>
.-(3)---------------------------------------.
| $this->postInsertDocument($rawDoc, true); |
'-------------------------------------------'
}
.-(4)-------------------------------------------------------.
| $this->postInsertMultipleDocuments($rawDocumentList); |
'-----------------------------------------------------------'