UpdateCurrencyRate.php
[Pman.Core] / UpdateCurrencyRate.php
index 75f3700..5ba04b4 100644 (file)
@@ -7,7 +7,15 @@ class Pman_Core_UpdateCurrencyRate extends Pman
     
     static $cli_desc = "Update Currency Exchange Rate";
     
-    static $cli_opts = array();
+    static $cli_opts = array(
+        'procedures-only' => array(
+            'desc' => 'Only run procedures and return',
+            'short' => 'p',
+            'default' => '',
+            'min' => 1,
+            'max' => 1,
+        ),
+    );
     
     var $cli = false; 
     
@@ -28,62 +36,102 @@ class Pman_Core_UpdateCurrencyRate extends Pman
         die("NOT ALLOWED");
     }
     
-    function get()
-    {
-        echo "obtain the currency lists... \n";
-        
-        $currency = array();
-        
-        $response = $this->curl($this->actionUrl, array(), 'GET');
-        
-        libxml_use_internal_errors (true);
-        
-        $doc = new DOMDocument();
-        $doc->loadHTML($response);
-        
-        libxml_use_internal_errors (false);
-        
-        $xpath = new DOMXpath($doc);
-        
-        $elements = $xpath->query("//select[@name='exch']/option");
-        
-        foreach($elements as $el) {
-            $currency[] = $el->getAttribute('value');
+    function get($args, $opts)
+    {   
+//        $currency = array();
+//        
+//        $response = $this->curl($this->actionUrl, array(), 'GET');
+//        
+//        libxml_use_internal_errors (true);
+//        
+//        $doc = new DOMDocument();
+//        $doc->loadHTML($response);
+//        
+//        libxml_use_internal_errors (false);
+//        
+//        $xpath = new DOMXpath($doc);
+//        
+//        $elements = $xpath->query("//select[@name='exch']/option");
+//        
+//        foreach($elements as $el) {
+//            $currency[] = $el->getAttribute('value');
+//        }
+//        
+//        if(empty($currency)){
+//            die('no any currency');
+//        }
+//        
+//        $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);
+//            }
+//        }
+        
+        if(empty($opts['procedures-only'])){
+            $this->jok("DONE");
         }
         
-        if(empty($currency)){
-            die('no any currency');
-        }
-        
-        foreach ($currency as $c){
-            $params = array(
-                'lang' => 'en',
-                'result' => 1,
-                'date1' => date('m/d/y', strtotime("-6 MONTH")),
-                'date'=> date('m/d/y'),
-                'date_fmt' => 'us',
-                'exch' => $c,
-                'expr' => 'USD',
-                'margin_fixed' => 0,
-                'format'=> 'HTML'
-            );
+        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);
         
-        $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()]");
-        
-        print_r($elements->item(0));exit;
-        
+        return;
     }
     
     function curl($url, $request = array(), $method = 'GET')