コード例 #1
0
    /**
     *      \brief      Fonction appelee lors du declenchement d'un evenement Dolibarr.
     *                  D'autres fonctions run_trigger peuvent etre presentes dans includes/triggers
     *      \param      action      Code de l'evenement
     *      \param      object      Objet concerne
     *      \param      user        Objet user
     *      \param      lang        Objet lang
     *      \param      conf        Objet conf
     *      \return     int         <0 if fatal error, 0 si nothing done, >0 if ok
     */
	function run_trigger($action,$object,$user,$langs,$conf)
    {
        // Mettre ici le code a executer en reaction de l'action
        // Les donnees de l'action sont stockees dans $object

        if ($action == 'PAYPAL_PAYMENT_OK')
        {
        	dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". source=".$object->source." ref=".$object->ref);

        	require_once(DOL_DOCUMENT_ROOT."/societe/class/societe.class.php");

        	$soc = new Societe($this->db);

        	// Parse element/subelement (ex: project_task)
	        $element = $path = $filename = $object->source;
	        if (preg_match('/^([^_]+)_([^_]+)/i',$object->source,$regs))
	        {
	            $element = $path = $regs[1];
	            $filename = $regs[2];
	        }
	        // For compatibility
            if ($element == 'order') { $path = $filename = 'commande'; }
            if ($element == 'invoice') { $path = 'compta/facture'; $filename = 'facture'; }

            dol_include_once('/'.$path.'/class/'.$filename.'.class.php');

            $classname = ucfirst($filename);
            $obj = new $classname($this->db);

            $ret = $obj->fetch('',$object->ref);
            if ($ret < 0) return -1;

            // Add payer id
            $soc->updateObjectField('societe', $obj->socid, 'ref_int', $object->payerID);

            // Add transaction id
            $obj->updateObjectField($obj->table_element,$obj->id,'ref_int',$object->resArray["TRANSACTIONID"]);

        }

		return 0;
    }