60, CURLOPT_FAILONERROR => TRUE, CURLOPT_FOLLOWLOCATION => FALSE, CURLOPT_HEADER => FALSE, CURLOPT_HTTPPROXYTUNNEL => FALSE, CURLOPT_RETURNTRANSFER => TRUE, CURLOPT_TIMEOUT => 30, CURLOPT_SSL_VERIFYHOST => FALSE, CURLOPT_SSL_VERIFYPEER => FALSE, CURLOPT_VERBOSE => FALSE, ); /** * Setup this class. We need to get our supplier details out of the database. */ public function __construct() { // Our DB record must be the suffix of this class name $supplier = preg_replace('/^'.get_parent_class($this).'_/','',get_class($this)); $aso = ORM::factory('ADSL_Supplier') ->where('name','=',$supplier) ->find(); if (! $aso->loaded()) throw new Kohana_Exception('Supplier :supplier not defined in the database',array(':supplier'=>$supplier)); $this->aso = $aso; $this->today = date('Y-m-d',strtotime('yesterday')); } /** * Return an instance of this class */ public static function instance($supplier) { $sc = Kohana::classname(get_called_class().'_'.$supplier); if (! class_exists($sc)) throw new Kohana_Exception('Class doesnt exist for :supplier',array(':supplier'=>$supplier)); else return new $sc; } /** * Traffic data from supplier */ public function update_traffic() { if (Minion_CLI::options('verbose')) echo ' - Last: '.date('Y-m-d',strtotime($this->aso->stats_lastupdate.'+1 day'))."\n"; for ($querydate=date('Y-m-d',strtotime($this->aso->stats_lastupdate.'+1 day')); $querydate<=$this->today; $querydate=date('Y-m-d',strtotime($querydate.'+1 day'))) { if (Minion_CLI::options('verbose')) echo " - Date: $querydate\n"; $goodfetch = false; // @todo log this fetch in a "log" // Supplier specific output // Data returned should be in MB's $data = $this->getdata($querydate); if (Minion_CLI::options('verbose')) print_r($data); if (! $this->fetchresult) { echo 'Bad fetch'.get_class($this); break; } $traffic = ORM::factory('Service_Plugin_Adsl_Traffic'); foreach ($data as $item) { $traffic->values($item,array_keys($item)); $traffic->supplier_id = $this->aso->id; if ($traffic->check()) $traffic->save(); if (! $traffic->saved()) throw new Kohana_Exception('Unable to save traffic record'); $traffic->clear(); } } if ($this->fetchresult) { $this->aso->stats_lastupdate = $this->today; $this->aso->save(); } } } ?>