13.6.2.14 Doc::preImport()

Hameçon (ou hook) utilisé par la méthode ImportSingleDocument::import(). Cette méthode est appelée avant l'enregistrement en base de données d'un document lors d'une importation.

Cette méthode n'est pas utilisée pour les importations de familles de document.

13.6.2.14.1 Description

string preImport ( array $extra = array() )

Cette méthode permet d'ajouter une condition spécifique d'importation ou de réaliser un pré-traitement avant l'enregistrement.

Au moment de l'appel, le document contient les nouvelles valeurs indiquées dans le fichiers d'importation mais elles ne sont pas encore enregistrées en base de données.

13.6.2.14.1.1 Avertissements

Cette méthode est appelée qu'il s'agisse d'une création ou d'une mise à jour. Dans le cas d'une création, le document n'a pas encore d'identificateur.

La méthode Doc::store() ne doit pas être appelée depuis cette méthode de manière explicite pour enregistrer les éventuelles modifications. Dans le cas d'une création, cela provoquerait une création prématurée en base de données.

13.6.2.14.2 Liste des paramètres

(array) extra

Contient les valeurs supplémentaires indiquées dans le fichier d'importation. Ces paramètres supplémentaires peuvent servir à réaliser le pré- traitement.

13.6.2.14.3 Valeur de retour

Message d'erreur. Si la méthode retourne une chaîne de caractères non vide, elle est considérée comme un message d'erreur et l'importation du document est abandonnée.

13.6.2.14.4 Erreurs / Exceptions

Aucune.

13.6.2.14.5 Historique

Aucun.

13.6.2.14.6 Exemples

Soit la ligne d'importation suivante :

ORDER ZOO_SPECIES spec id folder id sp_latinname extra:status extra:special
DOC ZOO_SPECIES MY_MAMMUTH - Mammuthus disappeared protected

Dans cette exemple, le document Mammuthus de la famille ZOO_SPECIES aura comme paramètre passé à preImport :

array(
    'status' => 'disappeared',
    'special' => 'protected'
);

 

namespace My;
use \Dcp\AttributeIdentifiers\MyFamily as MyAttributes;
 
class MyFamily extends Dcp\Family\Document
{
    public function preImport(array $extra=array()) {
        // ajout d'une condition d'importation
        if ($this->getRawValue(MyAttributes::sp_latinname) == '') {
            return _("Latin name must not be empty");
        }
 
        // modification d'attribut en fonction des extra
        if (isset($extra["status"]) && $extra["status"]=="alive") {
            $this->clearValue(MyAttributes::sp_deathdate);
        }
        if (isset($extra["special"]) && $extra["special"]=="protected") {
            $this->setAttributeValue(MyAttributes::sp_protectionlevel, "2");
        }
        return '';
    }
}

13.6.2.14.7 Notes

Dans le cas d'une modification de document, la méthode Doc::getOldRawValue() peut être utilisée pour avoir la valeur originelle d'un attribut.

13.6.2.14.8 Voir aussi

×