Advertisement
JDVU

Untitled

May 27th, 2014
240
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.34 KB | None | 0 0
  1. <?php
  2. /**
  3. * Exchange rate for PrivatBank
  4. *
  5. * @package stalker_portal
  6. * @author jdvusevas@gmail.com
  7. */
  8.  
  9. class CoursePrb
  10. {
  11. public $db;
  12. public $cache_table;
  13. public $content_url = 'http://privatbank.ua';
  14. public $codes = array('eur', 'usd', 'rub');
  15.  
  16. public function __construct(){
  17. $this->db = Mysql::getInstance();
  18. $this->cache_table = "course_cache";
  19. }
  20.  
  21. public function getData(){
  22. return $this->getDataFromDBCache();
  23. }
  24.  
  25. public function getDataFromURI(){
  26. $result = array();
  27. $content = file_get_contents($this->content_url);
  28. if ($content){
  29. $arr[1] = date("d.m.Y");
  30. $result['title'] = _('Exchange rate on').' '.$arr[1];
  31. $result['on_date'] = $arr[1];
  32. $result['data'] = array();
  33. $idx = 0;
  34.  
  35. $old_data = $this->getDataFromDBCache();
  36.  
  37. if (!array_key_exists('on_date', $old_data) || $result['on_date'] != $old_data['on_date']){
  38. //if (1){
  39.  
  40. foreach ($this->codes as $code){
  41.  
  42. preg_match("/<td width=\"26%\">$code<\/td>(.*)<td width=\"25%\" style=\"text-align:right;\">([\d,\.]+)<\/td>/",$content,$arr2);
  43.  
  44. // var_dump($arr2);
  45.  
  46. $result['data'][$idx] = array();
  47. $result['data'][$idx]['code'] = strtoupper($code);
  48. $result['data'][$idx]['currency'] = '1 '.strtoupper($code);
  49. $result['data'][$idx]['value'] = number_format($arr2[2], 4, '.', '');
  50. $result['data'][$idx]['diff'] = 0;
  51. $result['data'][$idx]['trend'] = 0;
  52.  
  53. if (is_array($old_data) && array_key_exists('data', $old_data) && array_key_exists($idx, $old_data['data'])){
  54.  
  55. $result['data'][$idx]['diff'] = round(($result['data'][$idx]['value'] - $old_data['data'][$idx]['value']), 4);
  56.  
  57. if ($result['data'][$idx]['diff'] > 0){
  58. $result['data'][$idx]['trend'] = 1;
  59. }else if ($result['data'][$idx]['diff'] < 0){
  60. $result['data'][$idx]['trend'] = -1;
  61. }
  62. }
  63.  
  64. $idx++;
  65. }
  66.  
  67. $this->setDataDBCache($result);
  68. }else{
  69. $result = $old_data;
  70. }
  71. }
  72. return $result;
  73. }
  74.  
  75. private function getDataFromDBCache(){
  76.  
  77. $content = System::base64_encode(serialize($arr));
  78.  
  79. $result = $this->db->from($this->cache_table)->where(array('url' => $this->content_url))->get();
  80. $crc = $result->get('crc');
  81.  
  82.  
  83. if (md5($content) != $crc){
  84.  
  85. $data = array(
  86. 'content' => $content,
  87. 'updated' => 'NOW()',
  88. 'url' => $this->content_url,
  89. 'crc' => md5($content)
  90. );
  91.  
  92. if ($result->count() == 1){
  93.  
  94. $this->db->update($this->cache_table,
  95. $data, array('url' => $this->content_url));
  96.  
  97. }else{
  98.  
  99. $this->db->insert($this->cache_table,
  100. $data);
  101. }
  102. }
  103. }
  104. }
  105. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement