- added standard widget to select timezones
- modified egw_time::server2user and ::user2server to return NULL, if
time can not be parsed, not throwing an exception (as this are legacy
function meant to easy convert existing code, eg. replace strtotime())
- timezone data is imported from SQLite DB from Thunderbird Lighting 1.0pre
- contains iCal VTIMEZONE component
- also contains not yet used latitude and longitude for timezone
- methods to convert between TZID string, nummeric tz_id and VTIMEZONE
iCal component
--> preparation to store timezone information for each events
(using tz_id as foreing key into egw_cal_timezones table)
At the date when the change occured - yesterday ;-) - starttimes where
wrong by one hour, because difference of timestamp of daystart and
current time was one hour more (because of the switch)
installation time --> nice user experience and cleaner look (by hiding
exotic prefs by focing them to a usual value):
- settings returned from settings hook can contain values for keys
'default' or 'forced'
- if settings hook require part of api or application, which are not
available during installation time: use a method hook (instead of
an old $app/inc/hook_settings.inc.php file), and check if
$hook_param['setup'] is true
- default prefs created so far in setup/admin_account.php got removed
- common prefs in preferences_hooks::settings() got reworked to set
default and forced prefs
- calendar prefs in calendar_hooks::settings() got reworked to set
default and forced prefs
--> I will rework prefs of all our (default) applications according to a
best practice list of Stylite consultants
allow to do propfinds on hugh addressbooks independent of memory_limit:
- regular groupdav_handler::profind() method gets split in a method just
computing a filter and a callback to run that filter on the backend
- groupdav_propfind_iterator class is returned from profind method
instead of an array with information about the files
- iterator calls groupdav_hander::propfind_callback if there are no more
entries from the previous call
- constructor of groupdav_propfind_iterator allows to pass an extra array
with files to return, to simplify modifying existing implementation
(were eg. information about the current path, get's supplied from
calling groupdav class).