fix #8131 - chinese translations
[Pman.Core] / DataObjects / Core_holiday.php
1 <?php
2 /**
3  * Table Definition for core company
4  */
5 class_exists('DB_DataObject') ? '' : require_once 'DB/DataObject.php';
6
7 class Pman_Core_DataObjects_Core_holiday extends DB_DataObject 
8 {
9     ###START_AUTOCODE
10     /* the code below is auto generated do not remove the above tag */
11
12     public $__table = 'core_holiday';               // table name
13     public $id;                              
14     public $country;                            
15     public $holiday_date;                            
16
17     
18     /* the code above is auto generated do not remove the tag below */
19     ###END_AUTOCODE
20     
21     
22     static $map = array(
23         'hk' => 'http://www.1823.gov.hk/common/ical/gc/en.ics'
24     );
25     
26      
27     function updateHolidays($country)
28     {
29         
30         if (!isset(self::$map[$country])) {
31             die("invalid country");
32         }
33         
34         // do we alredy have the data for this year.
35         $d = DB_DataObject::Factory('core_holiday');
36         $d->country = $country;
37         $d->orderBy('holiday_date DESC');
38         $d->limit(1);
39         if ($d->count() && $d->find(true) && strtotime($d->holiday_date) > strtotime('NOW + 6 MONTHS')) {
40             // no need to fetch..
41             return;
42         }
43         
44         
45         
46         $data = file_get_contents("https://www.1823.gov.hk/common/ical/gc/en.ics", false,
47             stream_context_create(array(
48                 "ssl"=>array(
49                     "verify_peer"=>false,
50                     "verify_peer_name"=>false,
51                 ),
52             ))
53         );
54         
55         $vevents = explode('BEGIN:VEVENT', $data);
56         
57         foreach ($vevents as $vevent){
58             
59             $lines = explode("\n", $vevent);
60             
61             $start_dt = false;
62             $end_dt = false;
63             
64             foreach ($lines as $line){
65                 
66                 if(preg_match('/^DTSTART;VALUE=DATE:([0-9]+)/', $line, $matches)){
67                     $fmt = substr($matches[1], 0, 4) . "-" . substr($matches[1], 4, 2) . "-" . substr($matches[1], 6, 2);
68                     $start_dt = date('Y-m-d', strtotime($fmt));
69                 }
70                 
71                 if(preg_match('/^DTEND;VALUE=DATE:([0-9]+)/', $line, $matches)){
72                     $fmt = substr($matches[1], 0, 4) . "-" . substr($matches[1], 4, 2) . "-" . substr($matches[1], 6, 2);
73                     $end_dt = date('Y-m-d', strtotime($fmt));
74                 }
75                 
76             }
77             
78             if(empty($start_dt) || empty($end_dt)){
79                 continue;
80             }
81             
82             //var_dump($start_dt); var_dump($end_dt); exit;
83             
84             for ($i = strtotime($start_dt); $i < strtotime($end_dt) ; $i += (60 * 60 * 24)) {
85                 
86                 $d = DB_DataObject::Factory('core_holiday');
87                 $d->country = $country;
88                 $d->holiday_date = date('Y-m-d', $i);
89                 if (!$d->count()) {
90                     $d->insert();
91                 }
92                 
93                 
94             }
95             
96         }
97
98     }
99     function isHoliday($country, $date)
100     {
101         $d = DB_DataObject::Factory('core_holiday');
102         $d->country = $country;
103         $d->holiday_date = $date;
104         return $d->count();
105     }
106     
107 }