13.5.1.1 Dir::insertDocument()
La méthode insertDocument permet d'insérer un document dans le dossier.
13.5.1.1.1 Description
string insertDocument ( string $docid, string $mode = "latest", bool $noprepost = false, bool $forcerestrict = false, bool $nocontrol = false )
Cette méthode permet d'ajouter une référence au dossier. Une référence
correspond à un document sans tenir compte de ses révisions. La
référence correspond à l'identifiant initial du document (initid).
13.5.1.1.1.1 Avertissements
Si la référence existe déjà dans le dossier, la référence est ignorée.
13.5.1.1.2 Liste des paramètres
- (string)
docid - L'identifiant (identifiant numérique ou nom logique) du document à insérer dans le dossier. Cet identifiant peut correspondre à n'importe quelle révision du document.
- (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çonspreInsertDocumentetpostInsertDocumentappelées respectivement avant et après l'insertion du document dans le dossier.Valeur par défaut :
false(activation des hameçons).Si
falseles hameçonspreInsertDocumentetpostInsertDocumentsont appelés.
Sitrue, les hameçons ne sont pas appelés. - (bool)
forcerestrict -
forcerestrictpermet de désactiver le contrôle des restrictions d'insertion.Valeur par défaut :
false(contrôle des restrictions effectuée).Si
false: le contrôle des restrictions d'insertion est effectué.
Sitrue: le contrôle des restrictions d'insertion n'est pas effectué. - (bool)
nocontrol -
nocontrolpermet de désactiver le contrôle du droit d'insertion de documents dans le dossier.Valeur par défaut :
false(contrôle de droits effectué).Si
false: le contrôle du droit d'insertion est effectué.
Sitrue: le contrôle du droit d'insertion n'est pas effectué.
13.5.1.1.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 dans le cas contraire.
13.5.1.1.4 Erreurs / Exceptions
Les erreurs peuvent êtres :
- L'utilisateur ne possède pas le droit d'insertion (droit
modify) de documents dans le dossier - Le dossier est verrouillé par un autre utilisateur.
(voir paramètre
nocontrolci-dessus). - Le document inséré n'est pas compatible par rapport aux
restrictions appliqués sur le dossier (voir paramètre
forcerestrictci-dessus). - Les méthodes d'hameçon
preInsertDocumentoupostInsertDocumentont retourné une erreur (voir paramètrenoprepostci-dessus).
13.5.1.1.5 Historique
13.5.1.1.5.1 Release 3.2.5
La méthode insertDocument remplace la méthode précédemment nommée addFile.
L'utilisation de addFile est obsolète depuis la version 3.2.5 de dynacase-
core.
13.5.1.1.6 Exemples
La famille Groupe d'utilisateurs (IGROUP) hérite de GROUP qui hérite de
DIR et permet de gérer l'affectation d'utilisateurs dans les groupes.
L'exemple ci-dessous montre comment insérer l'utilisateur ayant pour nom logique
USR_EMMA_PEEL dans le groupe ayant pour nom logique GRP_THE_AVENGERS :
<?php global $action; include_once 'FDL/freedom_util.php'; $grpName = 'GRP_THE_AVENGERS'; $usrName = 'USR_EMMA_PEEL'; /* * Instancier le groupe */ $group = new_Doc('', $grpName); /* * Instancier l'utilisateur */ $user = new_Doc('', $usrName); /* * Afficher le contenu du groupe */ printf("* Content of DIR '%s':\n", $grpName); $s = new SearchDoc(); $s->useCollection($group->id); $members = $s->search(); if (count($members) <= 0) { printf("\t<empty>\n"); } else { foreach ($members as $elmt) { printf("\t(%d) '%s'\n", $elmt['id'], $elmt['title']); } } /* * Insérer l'utilisateur dans le groupe */ printf("* Inserting '%s' into '%s'.\n", $usrName, $grpName); $err = $group->insertDocument($user->id); if ($err != '') { throw new \Exception(sprintf("Error inserting user (%d) '%s' into group (%d) '%s': %s", $user->id, $user->title, $group->id, $group->title, $err)); } /* * Afficher le contenu du groupe */ printf("* Content of DIR '%s':\n", $grpName); $s = new SearchDoc(); $s->useCollection($group->id); $members = $s->search(); if (count($members) <= 0) { printf("\t<empty>\n"); } else { foreach ($members as $elmt) { printf("\t(%d) '%s'\n", $elmt['id'], $elmt['title']); } }
Résultat :
* Content of DIR 'GRP_THE_AVENGERS':
<empty>
* Inserting 'USR_EMMA_PEEL' into 'GRP_AVENGERS'.
* Content of DIR 'GRP_THE_AVENGERS':
id = 1057 / title = 'Peel Emma'
13.5.1.1.7 Notes
Ordre d'appel des hameçons :
.-(1)--------------------------------------. | $this->preInsertDocument($docId, false); | '------------------------------------------' <Insertion du document $docId dans le dossier> .-(2)---------------------------------------. | $this->postInsertDocument($docId, false); | '-------------------------------------------'