13.6.3.9 Doc::duplicate()

Méthode utilisée pour dupliquer un document.

13.6.3.9.1 Description

Doc|string duplicate (bool $temporary = false, 
                      bool $control   = true, 
                      bool $linkfld   = false, 
                      bool $copyfile  = false )

Cette méthode réalise une copie de l'objet Document. Cette copie est enregistrée en base de donnée avec un nouvel identificateur.

La révision de la copie est affectée à zéro. Le profil de la copie est affectée au profil (cprofid) indiquée par la famille.

Si le document est lié à un cycle, l'état de la copie est l'état initial du cycle.

13.6.3.9.1.1 Avertissements

Aucun.

13.6.3.9.2 Liste des paramètres

(bool) temporary
Si true, le document en base est créé comme document temporaire.
Aucun profil n'est associé au document s'il est temporaire.
Si false : le document est crée avec un identificateur non temporaire
(bool) control
Si true, la duplication est contrôlé par le droit create.
Si false : aucun contrôle de droit est réalisé.
(bool) linkfld
Si true, et si le document est un dossier. alors les documents contenus dans le dossier original sont liés aussi au dossier copié. Les documents contenus ne sont pas dupliqués mais juste liés.
Si false : seul le document dossier est copié.
(bool) copyfile
Si true, les fichiers attachés au document (attribut de type file ou image) sont dupliqués aussi. Si false : les fichiers sont liés aux fichiers originaux.

13.6.3.9.3 Valeur de retour

En cas d'erreur : Message d'erreur. Si la chaîne retournée est non nulle, le message indique l'erreur qui a interdit la suppression.

En cas de succès : retourne l'objet Doc dupliqué.

13.6.3.9.4 Erreurs / Exceptions

Retourne un message d'erreur dans les cas suivants :

  • pas de droit de créer un document de la même famille,
  • retour du preDuplicate() non vide,
  • des attributs sont en visibilité I.

Exceptions :

  • \Dcp\Exception('DOC0203') si le document à dupliquer est invalide.

13.6.3.9.5 Historique

Anciennement Doc::copy().

13.6.3.9.6 Exemples

Duplication du document référencé par l'identificateur $documentId.

$doc=new_doc('', $documentId);
if ($doc->isAlive()) {
    $copyDoc=$doc->duplicate();
    // maintenant le document est dupliqué
    if (is_string($copyDoc)) {
        $err=copyDoc;
        printf ("Erreur de duplication %s", $err );
    } else {
        printf("Duplication de %s [%d] => %s [%d]", 
               $doc->getTitle(), $doc->id, 
               $copyDoc->getTitle(), $copyDoc->id);
    }
}

13.6.3.9.7 Notes

Une entrée dans l'historique du document dupliqué indique l'origine de la duplication.

Lors de la duplication à l'aide du menu "Dupliquer" (action GENERIC:GENERIC_DUPLICATE), le document dupliqué est inséré dans le même dossier primaire (propriété prelid) que l'origine.

13.6.3.9.8 Voir aussi

Les hameçons (hooks) :

×