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
-
noprepost
permet de désactiver l'appel des méthodes hameçonspreInsertDocument
etpostInsertDocument
appelées respectivement avant et après l'insertion du document dans le dossier.Valeur par défaut :
false
(activation des hameçons).Si
false
les hameçonspreInsertDocument
etpostInsertDocument
sont appelés.
Sitrue
, les hameçons ne sont pas appelés. - (bool)
forcerestrict
-
forcerestrict
permet 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
-
nocontrol
permet 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
nocontrol
ci-dessus). - Le document inséré n'est pas compatible par rapport aux
restrictions appliqués sur le dossier (voir paramètre
forcerestrict
ci-dessus). - Les méthodes d'hameçon
preInsertDocument
oupostInsertDocument
ont retourné une erreur (voir paramètrenoprepost
ci-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); | '-------------------------------------------'