From 94443dbf4f1a52328bd2ed288fa714eec9f78e86 Mon Sep 17 00:00:00 2001 From: skeeter Date: Mon, 30 Apr 2001 03:07:05 +0000 Subject: [PATCH] start of adding holiday support to the calendar --- calendar/inc/class.calendar.inc.php | 3 +- calendar/inc/class.calendar_holiday.inc.php | 149 ++++++++++++++++++++ calendar/preferences.php | 4 + 3 files changed, 155 insertions(+), 1 deletion(-) create mode 100755 calendar/inc/class.calendar_holiday.inc.php diff --git a/calendar/inc/class.calendar.inc.php b/calendar/inc/class.calendar.inc.php index 5509f3271e..53c6701c68 100755 --- a/calendar/inc/class.calendar.inc.php +++ b/calendar/inc/class.calendar.inc.php @@ -98,7 +98,8 @@ class calendar extends calendar_ { $this->users_timeformat = 'H:i'; } - + $cal = CreateObject('calendar.calendar_holiday',$this->owner); + $cal->read_holiday(); } // Generic functions that are derived from mcal functions. diff --git a/calendar/inc/class.calendar_holiday.inc.php b/calendar/inc/class.calendar_holiday.inc.php new file mode 100755 index 0000000000..d688efc154 --- /dev/null +++ b/calendar/inc/class.calendar_holiday.inc.php @@ -0,0 +1,149 @@ + * + * -------------------------------------------- * + * This program is free software; you can redistribute it and/or modify it * + * under the terms of the GNU General Public License as published by the * + * Free Software Foundation; either version 2 of the License, or (at your * + * option) any later version. * + \**************************************************************************/ + + /* $Id$ */ + +class calendar_holiday +{ + var $db; + var $holidays; + var $users; + + function calendar_holiday($owner='') + { + global $phpgw, $phpgw_info; + + $this->db = $phpgw->db; +// $phpgw_info['user']['preferences']['calendar']['locale'] = 'US'; + $this->users['user'] = $phpgw_info['user']['preferences']['calendar']['locale']; + $owner_id = get_account_id($owner); + if($owner_id != $phpgw_info['user']['account_id']) + { + $owner_pref = CreateObject('phpgwapi.preferences',$owner_id); + $owner_prefs = $owner_pref->read_repository(); +// $owner_prefs['calendar']['locale'] = 'UK'; + $this->users['owner'] = $owner_prefs['calendar']['locale']; + } + if($phpgw_info['server']['auto_load_holidays'] == True) + { + while(list($key,$value) = each($this->users)) + { + $this->is_network_load_needed($value); + } + } + } + + function is_network_load_needed($locale) + { + $sql = "SELECT count(*) FROM phpgw_cal_holidays WHERE locale='".$locale."'"; + $this->db->query($sql,__LINE__,__FILE__); + $this->db->next_record(); + $rows = $this->db->f(0); + if($rows==0) + { + $this->load_from_network($locale); + } + } + + function load_from_network($locale) + { + global $phpgw_info; + + @set_time_limit(0); + + // get the file that contains the calendar events for your locale + // "http://www.phpgroupware.org/headlines.rdf"; + $network = CreateObject('phpgwapi.network'); + if(isset($phpgw_info['server']['holidays_url_path'])) + { + $load_from = $phpgw_info['server']['holidays_url_path']; + } + else + { + $pos = strpos(' '.$phpgw_info['server']['webserver_url'],$HTTP_HOST); + if($pos === False) + { + switch($SERVER_PORT) + { + case 80: + $http_protocol = 'http://'; + break; + case 443: + $http_protocol = 'https://'; + break; + } + $server_host = $http_protocol.$HTTP_HOST.$phpgw_info['server']['webserver_url']; + } + else + { + $server_host = $phpgw_info['server']['webserver_url']; + } + $load_from = $server_host.'/calendar/setup'; + } + $lines = $network->gethttpsocketfile($load_from.'/holidays.'.$locale); +// if (!$lines) return false; + + } + + function read_holiday() + { + global $phpgw; + + $sql = $this->build_holiday_query(); + $this->holidays = Null; + $this->db->query($sql,__LINE__,__FILE__); + + $i = -1; + while($this->db->next_record()) + { + $i++; + $this->holidays[$i]['locale'] = $this->db->f('locale'); + $this->holidays[$i]['name'] = $this->db->f('name'); + $this->holidays[$i]['date'] = $this->db->f('date_time'); + if(count($find_locale) == 2 && $find_locale[0] != $find_locale[1]) + { + if($this->holidays[$i]['locale'] == $find_locale[1]) + { + $this->holidays[$i]['owner'] = 'user'; + } + else + { + $this->holidays[$i]['owner'] = 'owner'; + } + } + else + { + $this->holidays[$i]['owner'] = 'user'; + } + } + return $this->holidays; + } + + function build_holiday_query() + { + $sql = 'SELECT * FROM phpgw_cal_holidays WHERE locale in ('; + $find_it = ''; + reset($this->users); + while(list($key,$value) = each($this->users)) + { + if($find_it) + { + $find_it .= ','; + } + $find_it .= "'".$value."'"; + } + $sql .= $find_it.')'; + + return $sql; + } +} +?> diff --git a/calendar/preferences.php b/calendar/preferences.php index 9335216b72..2224a94f02 100644 --- a/calendar/preferences.php +++ b/calendar/preferences.php @@ -31,6 +31,7 @@ $phpgw->preferences->add('calendar','workdayends'); $phpgw->preferences->add('calendar','defaultcalendar'); $phpgw->preferences->add('calendar','defaultfilter'); + $phpgw->preferences->add('calendar','locale'); if ($mainscreen_showevents == True) { $phpgw->preferences->add('calendar','mainscreen_showevents'); @@ -181,6 +182,9 @@ $str = ''; display_item(lang('when creating new events default set to private'),$str); + + $country = CreateObject('phpgwapi.country'); + display_item(lang('Select country for including holidays'),$country->form_select($phpgw_info['user']['preferences']['calendar']['locale'],'locale')); $p->pparse('out','pref'); $phpgw->common->phpgw_footer();