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çons preInsertDocument et postInsertDocument 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çons preInsertDocument et postInsertDocument sont appelés.
Si true, 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é.
Si true : 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é.
Si true : 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 ou postInsertDocument ont retourné une erreur (voir paramètre noprepost 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); |
'-------------------------------------------'

13.5.1.1.8 Voir aussi

×
nouveauté