UpdateCurrencyRate.php
[Pman.Core] / UpdateCurrencyRate.php
1 <?php
2
3 require_once 'Pman.php';
4
5 class Pman_Core_UpdateCurrencyRate extends Pman
6 {
7     
8     static $cli_desc = "Update Currency Exchange Rate";
9     
10     static $cli_opts = array();
11     
12     var $cli = false; 
13     
14     var $actionUrl = 'http://www.oanda.com/currency/historical-rates-classic';
15     
16     var $mapping = array(
17         'CNY' => 'RMB'
18     );
19     
20     function getAuth() 
21     {
22         $ff = HTML_FlexyFramework::get();
23         if (!empty($ff->cli)) {
24             $this->cli = true;
25             return true;
26         }
27         
28         die("NOT ALLOWED");
29     }
30     
31     function get()
32     {
33         echo "obtain the currency lists... \n";
34         
35         $currency = array();
36         
37         $response = $this->curl($this->actionUrl, array(), 'GET');
38         
39         libxml_use_internal_errors (true);
40         
41         $doc = new DOMDocument();
42         $doc->loadHTML($response);
43         
44         libxml_use_internal_errors (false);
45         
46         $xpath = new DOMXpath($doc);
47         
48         $elements = $xpath->query("//select[@name='exch']/option");
49         
50         foreach($elements as $el) {
51             $currency[] = $el->getAttribute('value');
52         }
53         
54         if(empty($currency)){
55             die('no any currency');
56         }
57         
58         foreach ($currency as $c){
59             $params = array(
60                 'lang' => 'en',
61                 'result' => 1,
62                 'date1' => date('m/d/y', strtotime("-6 MONTH")),
63                 'date'=> date('m/d/y'),
64                 'date_fmt' => 'us',
65                 'exch' => $c,
66                 'expr' => 'USD',
67                 'margin_fixed' => 0,
68                 'format'=> 'HTML'
69             );
70         }
71         
72         $response = $this->curl($this->actionUrl, $params, 'POST');
73         
74         libxml_use_internal_errors (true);
75         
76         $doc = new DOMDocument();
77         $doc->loadHTML($response);
78         
79         libxml_use_internal_errors (false);
80         
81         $xpath = new DOMXpath($doc);
82         
83         $ts = $xpath->query("//table[@id='converter_table']");
84         
85         $elements = $xpath->query("tbody", $ts->item(0));
86         
87         print_r($ts->item(0)->firstChild);
88         
89     }
90     
91     function curl($url, $request = array(), $method = 'GET') 
92     {
93          
94         if(is_array($request)){
95             $request = http_build_query($request);
96         }
97         
98         $url = $url . ($method == 'GET' ? "?" . $request : '');  
99         $ch = curl_init($url);
100         
101         if ($method == 'POST') {
102             curl_setopt($ch, CURLOPT_POST, 1);
103             curl_setopt($ch, CURLOPT_POSTFIELDS, $request);
104             curl_setopt($ch, CURLOPT_HTTPHEADER,
105                     array("Content-Type: application/x-www-form-urlencoded", "Content-Length: " . strlen($request)));
106         }
107         
108         curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
109         
110         curl_setopt($ch, CURLOPT_HEADER, false);
111         curl_setopt($ch, CURLOPT_VERBOSE, 1);
112         curl_setopt($ch, CURLOPT_TIMEOUT, 30);
113         curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
114
115         $response = curl_exec($ch);
116
117         curl_close($ch);
118         
119         return $response;
120     }
121     
122     /*
123     lang:en
124     result:1
125     date1:10/14/14
126     date:10/20/14
127     date_fmt:us
128     exch:USD
129     exch2:
130     expr:EUR
131     expr2:
132     margin_fixed:0
133     format:HTML
134     SUBMIT:Get Table
135     */
136 }