+ $fromDate = date('m/d/y', strtotime("-6 MONTH"));
+ $toDate = date('m/d/y');
+
+ $total = count($currency);
+
+ foreach ($currency as $k => $c){
+
+ echo "\nProcessing Currency : $c ($k / $total) \n";
+
+ $params = array(
+ 'lang' => 'en',
+ 'result' => 1,
+ 'date1' => $fromDate,
+ 'date' => $toDate,
+ 'date_fmt' => 'us',
+ 'exch' => $c,
+ 'expr' => 'USD',
+ 'margin_fixed' => 0,
+ 'format' => 'HTML'
+ );
+
+ $response = $this->curl($this->actionUrl, $params, 'POST');
+
+ libxml_use_internal_errors (true);
+
+ $doc = new DOMDocument();
+ $doc->loadHTML($response);
+
+ libxml_use_internal_errors (false);
+
+ $xpath = new DOMXpath($doc);
+
+ $elements = $xpath->query("//td[@id='content_section']/table/tr[last()]/td/table/tr[1]/td[last()]");
+
+ $rate = empty($elements->item(0)->nodeValue) ? 0 : $elements->item(0)->nodeValue * 1;
+
+ $this->processCurrRate($c, $rate, $fromDate, $toDate);
+
+ if(array_key_exists($c, $this->mapping)){
+ $this->processCurrRate($this->mapping[$c], $rate, $fromDate, $toDate);
+ }
+ }
+
+ return;
+ }
+
+ function processCurrRate($currency, $rate, $from, $to)
+ {
+ $curr = DB_DataObject::factory('core_curr_rate');
+
+ $curr->curr = $currency;
+
+ $o = false;
+
+ if($curr->find(true)){
+ $o = clone($curr);
+ }
+
+ $curr->setFrom(array(
+ 'rate' => $rate,
+ 'from_dt' => date('Y-m-d H:i:s', strtotime($from)),
+ 'to_dt' => date('Y-m-d H:i:s', strtotime($to))
+ ));
+
+ (empty($o)) ? $curr->insert() : $curr->update($o);
+
+ return;