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.