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
-
tdocs
est 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
-
noprepost
permet de désactiver l'appel des méthodes hameçonspreInsertMultipleDocuments
,preInsertDocument
,postInsertDocument
etpostInsertMultipleDocuments
appelées avant ou après l'insertion des documents dans le dossier.Valeur par défaut :
false
.Si
false
, les hameçonspreInsertMultipleDocuments
,preInsertDocument
etpostInsertMultipleDocuments
sont appelés. - [out] (string[])
tinserted
-
tinserted
ré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
-
twarning
ré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
-
info
ré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
,postInsertDocument
oupostInsertMultipleDocuments
ont retourné une erreur (voir paramètrenoprepost
ci-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); | '-----------------------------------------------------------'