J’ai cherché une petite heure une réponse à ce problème, et la voici.
En analysant la classe Mage_Dataflow_Model_Batch, on remarque une méthode qui à l’air bien sympathique pour ce que l’on souhaite.
/** * Run finish actions for Adapter * */ public function beforeFinish() { if ($this->getAdapter()) { $adapter = Mage::getModel($this->getAdapter()); if (method_exists($adapter, 'finish')) { $adapter->finish(); } } }
Cette méthode va prendre l’Adapter défini dans le Profil, puis regarder si elle possède une méthode « finish ».
Pour savoir quelle est la classe de votre adapter, il faut aller dans le XML de votre profil d’import :
<action type="mymodule/convert_adapter_io" method="load"> <var name="type">file</var> <var name="path">var/import</var> <var name="filename"><![CDATA[myfile.csv]]></var> <var name="format"><![CDATA[csv]]></var> </action> <action type="dataflow/convert_parser_csv" method="parse"> <var name="delimiter"><![CDATA[\t]]></var> <var name="enclose"><![CDATA[]]></var> <var name="map"> <map name="mon_champ_1"><![CDATA[mon_champ_1]]></map> <map name="mon_champ_2"><![CDATA[mon_champ_2]]></map> <map name="mon_champ_3"><![CDATA[mon_champ_3]]></map> </var> <var name="adapter">mymodule/convert_adapter_myclass</var> </action>
La ligne contenant notre classe est donc la suivante :
<var name="adapter">mymodule/convert_adapter_myclass</var>
Il suffit de vous rendre dedans, et d’y ajouter une méthode « finish » :
<?php class Mypackage_Mymodule_Model_Convert_Adapter_Myclass extends Mage_Eav_Model_Convert_Adapter_Entity { public function finish(){ /** VOTRE CODE **/ } }
Lancer une méthode à la fin d’un Import de Profil Avancé