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 avec SearchDoc) à 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çons preInsertMultipleDocuments, preInsertDocument, postInsertDocument et postInsertMultipleDocuments appelées avant ou après l'insertion des documents dans le dossier.

Valeur par défaut : false.

Si false, les hameçons preInsertMultipleDocuments, preInsertDocument et postInsertMultipleDocuments 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 :

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);     |
'-----------------------------------------------------------'

13.5.1.2.8 Voir aussi

×
nouveauté