Changeset 7594


Ignore:
Timestamp:
12/03/12 17:01:59 (11 years ago)
Author:
douglas
Message:

Ticket #3143 - problema ao copiar evento ou tarefa no modulo expressocalendar

Location:
branches/2.4
Files:
1 added
8 edited

Legend:

Unmodified
Added
Removed
  • branches/2.4/expressoCalendar/setup/setup.inc.php

    r7228 r7594  
    1313        $setup_info['expressoCalendar']['title']        = 'Expresso Calendar'; 
    1414        /* Ao incrementar versão, não esquecer de declarar função do tables_update.inc.php*/ 
    15         $setup_info['expressoCalendar']['version']      = '1.009'; 
     15        $setup_info['expressoCalendar']['version']      = '1.011'; 
    1616        $setup_info['expressoCalendar']['app_order']    = 10; 
    1717 
  • branches/2.4/expressoCalendar/setup/tables_current.inc.php

    r7383 r7594  
    321321 
    322322                                 
    323         'module_preference' => array( 
     323            'module_preference' => array( 
    324324            'fd' => array( 
    325325                'id' => array( 'type' => 'auto', 'nullable' => False), 
     
    334334            'uc' => array() 
    335335                ), 
    336                  
     336 
     337        'calendar_timezones' => array( 
     338            'fd' => array( 
     339            'id' => array( 'type' => 'auto', 'nullable' => False), 
     340            'timezone' => array(  'type' => 'varchar','precision' => '150', 'nullable' => False), 
     341 
     342            'standard_frequency' => array(  'type' => 'varchar','precision' => '20', 'nullable' => False), 
     343            'standard_dtstart' => array(  'type' => 'varchar','precision' => '20', 'nullable' => True), 
     344            'standard_byday' => array(  'type' => 'varchar','precision' => '50', 'nullable' => True), 
     345            'standard_bymonth' => array(  'type' => 'varchar','precision' => '50', 'nullable' => True), 
     346            'standard_from' => array(  'type' => 'varchar','precision' => '10', 'nullable' => True), 
     347            'standard_to' => array(  'type' => 'varchar','precision' => '10', 'nullable' => True), 
     348 
     349            'daylight_frequency' => array(  'type' => 'varchar','precision' => '20', 'nullable' => False), 
     350            'daylight_dtstart' => array(  'type' => 'varchar','precision' => '20', 'nullable' => True), 
     351            'daylight_byday' => array(  'type' => 'varchar','precision' => '50', 'nullable' => True), 
     352            'daylight_bymonth' => array(  'type' => 'varchar','precision' => '50', 'nullable' => True), 
     353            'daylight_from' => array(  'type' => 'varchar','precision' => '10', 'nullable' => True), 
     354            'daylight_to' => array(  'type' => 'varchar','precision' => '10', 'nullable' => True), 
     355 
     356            'dtstamp' => array( 'type' => 'bigint', 'precision' => '16', 'precision' => '16', 'nullable' => False) 
     357        ), 
     358        'pk' => array('id'), 
     359        'fk' => array(), 
     360        'ix' => array(), 
     361        'uc' => array() 
     362    ), 
     363 
    337364        ); 
    338365?> 
  • branches/2.4/expressoCalendar/setup/tables_update.inc.php

    r7383 r7594  
    190190        $GLOBALS['setup_info']['expressoCalendar']['currentver'] = '1.010';  
    191191        return $GLOBALS['setup_info']['expressoCalendar']['currentver'];  
    192     };     
     192    }; 
     193 
     194    $test[] = '1.010'; 
     195    function expressoCalendar_upgrade1_010() { 
     196        $oProc = $GLOBALS['phpgw_setup']->oProc; 
     197            $oProc->CreateTable('calendar_timezones', array( 
     198                'fd' => array( 
     199                    'id' => array( 'type' => 'auto', 'nullable' => False), 
     200                    'timezone' => array(  'type' => 'varchar','precision' => '150', 'nullable' => False), 
     201 
     202                    'standard_frequency' => array(  'type' => 'varchar','precision' => '20', 'nullable' => False), 
     203                    'standard_dtstart' => array(  'type' => 'varchar','precision' => '20', 'nullable' => True), 
     204                    'standard_byday' => array(  'type' => 'varchar','precision' => '50', 'nullable' => True), 
     205                    'standard_bymonth' => array(  'type' => 'varchar','precision' => '50', 'nullable' => True), 
     206                    'standard_from' => array(  'type' => 'varchar','precision' => '10', 'nullable' => True), 
     207                    'standard_to' => array(  'type' => 'varchar','precision' => '10', 'nullable' => True), 
     208 
     209                    'daylight_frequency' => array(  'type' => 'varchar','precision' => '20', 'nullable' => False), 
     210                    'daylight_dtstart' => array(  'type' => 'varchar','precision' => '20', 'nullable' => True), 
     211                    'daylight_byday' => array(  'type' => 'varchar','precision' => '50', 'nullable' => True), 
     212                    'daylight_bymonth' => array(  'type' => 'varchar','precision' => '50', 'nullable' => True), 
     213                    'daylight_from' => array(  'type' => 'varchar','precision' => '10', 'nullable' => True), 
     214                    'daylight_to' => array(  'type' => 'varchar','precision' => '10', 'nullable' => True), 
     215 
     216                    'dtstamp' => array( 'type' => 'bigint', 'precision' => '16', 'precision' => '16', 'nullable' => False) 
     217                ), 
     218                'pk' => array('id'), 
     219                'fk' => array(), 
     220                'ix' => array(), 
     221                'uc' => array() 
     222            ) 
     223        ); 
     224 
     225        $oProc->query("INSERT INTO calendar_timezones(timezone, standard_frequency, standard_dtstart, standard_byday, 
     226        standard_bymonth, standard_from, standard_to, daylight_frequency, daylight_dtstart, daylight_byday, 
     227        daylight_bymonth, daylight_from, daylight_to, dtstamp) VALUES ('America/Sao_Paulo', 'YEARLY', '23:59', 
     228        '4SA', '2', '-0200','-0300', 'YEARLY', '23:59', '3SA', '10', '-0300','-0200', '". time() ."');"); 
     229 
     230        $GLOBALS['setup_info']['expressoCalendar']['currentver'] = '1.011'; 
     231        return $GLOBALS['setup_info']['expressoCalendar']['currentver']; 
     232    };  
    193233 
    194234?> 
  • branches/2.4/prototype/modules/calendar/interceptors/DBMapping.php

    r7556 r7594  
    822822    //TODO: Remover apos suporte a deepness na api  
    823823    public function deepnessFindEvent(&$uri, &$result, &$criteria, $original) { 
    824         if (isset($original['criteria']['deepness']) && $original['criteria']['deepness'] != 0) { 
    825             $Time = new DateTime('now', new DateTimeZone('UTC')); 
    826             $DayLigth = array(); 
    827             foreach ($result as $i => $v) { 
    828  
    829                 if ( isset($v['calendar']) && (!isset($currentTimezone) || $currentTimezone != $original['criteria']['timezones'][$v['calendar']]))  { 
    830                     $currentTimezone = isset($original['criteria']['timezones'][$v['calendar']]) ? $original['criteria']['timezones'][$v['calendar']] : $v['timezone']; 
    831                     $Time->setTimezone(new DateTimeZone($currentTimezone)); 
    832                 } 
    833  
    834                 $Time->setTimestamp((int) ($v['startTime'] / 1000)); 
    835                 $DayLigth['calendar']['startTime'] = $Time->format('I') ? 1 : 0; 
    836  
    837                 $Time->setTimestamp((int) ($v['endTime'] / 1000)); 
    838                 $DayLigth['calendar']['endTime'] = $Time->format('I') ? 1 : 0; 
    839  
    840                 if (!isset($currentTimezone) || ($currentTimezone != $v['timezone'])) { 
    841                     $currentTimezone = $v['timezone']; 
    842                     $Time->setTimezone(new DateTimeZone($v['timezone'])); 
    843  
    844                     $Time->setTimestamp((int) ($v['startTime'] / 1000)); 
    845                     $DayLigth['event']['startTime'] = $Time->format('I') ? 1 : 0; 
    846  
    847                     $Time->setTimestamp((int) ($v['endTime'] / 1000)); 
    848                     $DayLigth['event']['endTime'] = $Time->format('I') ? 1 : 0; 
    849                 }else 
    850                     $DayLigth['event'] = $DayLigth['calendar']; 
    851  
    852  
    853                 $result[$i]['DayLigth'] = $DayLigth; 
    854  
    855         if(((int)$v['type']) == 2){ 
    856  
    857             $taskToActivity = Controller::find(array('concept' => 'taskToActivity'), false, array('filter' => array('AND', array('=', 'activity', $v['id']), array('=','owner', Config::me('uidNumber'))) , 'deepness' => 2)); 
    858  
    859             if($taskToActivity) 
    860                 $result[$i]['taskToActivity'] = $taskToActivity; 
    861  
    862             $result[$i]['historic'] = Controller::find(array('concept' => 'calendarHistoric'), false, array('filter' => array('=', 'schedulable', $v['id']) , 'deepness' => 2)); 
    863  
    864         } 
    865  
    866                 if (isset($v['id'])) { 
    867                     $data = self::decodeParticipantsEvent($uri, $v, $criteria, $original); 
    868  
    869                     $result[$i]['statusAttendees'] = isset($data['statusAttendees']) ? $data['statusAttendees'] : false; 
    870                     $result[$i]['sizeAttendees'] = isset($data['sizeAttendees']) ? $data['sizeAttendees'] : false; 
    871                     $result[$i]['participants'] = $data['attendees']; 
    872  
    873                     $attachmentRelation = Controller::find(array('concept' => 'schedulableToAttachment'), false, array('filter' => array('=', 'schedulable', $v['id']))); 
    874                     if (is_array($attachmentRelation)) { 
    875                         $attachments = array(); 
    876                         foreach ($attachmentRelation as $key => $value) 
    877                             if (isset($value['attachment']) || !!$value['attachment']) 
    878                                 $attachments[$key] = $value['attachment']; 
    879                         //Pega os anexos sem source 
    880                         $result[$i]['attachments'] = Controller::find(array('concept' => 'attachment'), array('id', 'name', 'type', 'size'), array('filter' => array('IN', 'id', $attachments))); 
    881                     } 
    882  
    883                     $repeat = Controller::find(array('concept' => 'repeat'), false, array('filter' => array('=', 'schedulable', $v['id']))); 
    884  
    885                     unset($result[$i]['repeat']); 
    886  
    887                     if (is_array($repeat)) 
    888                         $result[$i]['repeat'] = $repeat[0]; 
    889                 } 
     824        if (isset($original['criteria']['deepness']) && $original['criteria']['deepness'] != 0) { 
     825 
     826            $date = new DateTime('now', new DateTimeZone('UTC')); 
     827            $DayLigth = array(); 
     828 
     829            foreach ($result as $i => $v) { 
     830 
     831                $currentTimezone = isset($original['criteria']['timezones'][$v['calendar']]) ? $original['criteria']['timezones'][$v['calendar']] : $v['timezone']; 
     832 
     833                $date->setTimestamp((int) ($v['startTime'] / 1000)); 
     834                $date->setTimezone( new DateTimeZone( $v['timezone'] )); 
     835                $DayLigth['event']['startTime'] = ($date->getTimestamp() + $date->getOffset()).'000'; 
     836 
     837                $date->setTimezone( new DateTimeZone($currentTimezone)); 
     838                $DayLigth['calendar']['startTime'] = ($date->getTimestamp() + $date->getOffset()).'000'; 
     839 
     840                $date->setTimestamp((int) ($v['endTime'] / 1000)); 
     841                $date->setTimezone( new DateTimeZone($currentTimezone)); 
     842                $DayLigth['event']['endTime'] = ($date->getTimestamp() + $date->getOffset()).'000'; 
     843 
     844                $date->setTimezone( new DateTimeZone($currentTimezone)); 
     845                $DayLigth['calendar']['endTime'] = ($date->getTimestamp() + $date->getOffset()).'000'; 
     846 
     847 
     848                $result[$i]['DayLigth'] = $DayLigth; 
     849 
     850                if(((int)$v['type']) == 2){ 
     851 
     852                    $taskToActivity = Controller::find(array('concept' => 'taskToActivity'), false, array('filter' => array('AND', array('=', 'activity', $v['id']), array('=','owner', Config::me('uidNumber'))) , 'deepness' => 2)); 
     853 
     854                    if($taskToActivity) 
     855                        $result[$i]['taskToActivity'] = $taskToActivity; 
     856 
     857                    $result[$i]['historic'] = Controller::find(array('concept' => 'calendarHistoric'), false, array('filter' => array('=', 'schedulable', $v['id']) , 'deepness' => 2)); 
     858 
     859                } 
     860 
     861                if (isset($v['id'])) { 
     862                    $data = self::decodeParticipantsEvent($uri, $v, $criteria, $original); 
     863 
     864                    $result[$i]['statusAttendees'] = isset($data['statusAttendees']) ? $data['statusAttendees'] : false; 
     865                    $result[$i]['sizeAttendees'] = isset($data['sizeAttendees']) ? $data['sizeAttendees'] : false; 
     866                    $result[$i]['participants'] = $data['attendees']; 
     867 
     868                    $attachmentRelation = Controller::find(array('concept' => 'schedulableToAttachment'), false, array('filter' => array('=', 'schedulable', $v['id']))); 
     869                    if (is_array($attachmentRelation)) { 
     870                    $attachments = array(); 
     871                    foreach ($attachmentRelation as $key => $value) 
     872                        if (isset($value['attachment']) || !!$value['attachment']) 
     873                        $attachments[$key] = $value['attachment']; 
     874                    //Pega os anexos sem source 
     875                    $result[$i]['attachments'] = Controller::find(array('concept' => 'attachment'), array('id', 'name', 'type', 'size'), array('filter' => array('IN', 'id', $attachments))); 
     876                    } 
     877 
     878                    $repeat = Controller::find(array('concept' => 'repeat'), false, array('filter' => array('=', 'schedulable', $v['id']))); 
     879 
     880                    unset($result[$i]['repeat']); 
     881 
     882                    if (is_array($repeat)) 
     883                    $result[$i]['repeat'] = $repeat[0]; 
     884                } 
     885            } 
    890886            } 
    891         } 
    892  
    893         return $result; 
     887 
     888            return $result; 
    894889    } 
    895890     
  • branches/2.4/prototype/modules/calendar/js/calendar.codecs.js

    r7402 r7594  
    604604                timezone: objEvent.timezone, 
    605605                timezones: Timezone.timezones, 
    606                 startDate: new Date( parseInt(objEvent.startTime) ).setTimezoneOffset( Timezone.timezone( objEvent.timezone ) ).toString( User.preferences.dateFormat ), 
    607                 startHour: dateCalendar.formatDate(Timezone.getDateEvent(new Date( parseInt(objEvent.startTime)), objEvent.timezone, objEvent.calendar, objEvent.DayLigth, 'startTime'), User.preferences.hourFormat), 
    608                 endDate: new Date( parseInt(objEvent.endTime) - (!!parseInt(objEvent.allDay) ? 86400000 : 0)  ).setTimezoneOffset( Timezone.timezone( objEvent.timezone ) ).toString( User.preferences.dateFormat ), 
    609                 endHour: dateCalendar.formatDate(Timezone.getDateEvent(new Date(parseInt(objEvent.endTime)),  objEvent.timezone, objEvent.calendar, objEvent.DayLigth, 'endTime'), User.preferences.hourFormat), 
     606        startDate: Timezone.getDate( (objEvent.DayLigth ? objEvent.DayLigth.event.startTime : objEvent.startTime), 'start', objEvent.allDay ), 
     607        startHour: objEvent.DayLigth ? Timezone.getHour( objEvent.DayLigth.event.startTime) : Timezone.formateHour( objEvent.startTime ), 
     608        endDate: Timezone.getDate( (objEvent.DayLigth ? objEvent.DayLigth.event.endTime : objEvent.endTime), 'end', objEvent.allDay ), 
     609        endHour: objEvent.DayLigth ? Timezone.getHour( objEvent.DayLigth.event.endTime) : Timezone.formateHour( objEvent.endTime ), 
    610610                allDay: !!parseInt( objEvent.allDay ), 
    611611                dueDate: objEvent.dueDate, 
     
    14051405                            isExternal: !!parseInt(form.attendeeType[i]) ? 1 : 0, 
    14061406                            acl: form.attendee_organizer == attendee ? (form.attendeeAcl[i].indexOf('o') < 0 ? form.attendeeAcl[i]+'o' : form.attendeeAcl[i]) : form.attendeeAcl[i].replace('o', '') 
    1407                         }, form.delegatedFrom[i] != '0' ? { 
     1407                        }, (form.delegatedFrom[i] != '0' && form.delegatedFrom[i] != '') ? { 
    14081408                            delegatedFrom: form.delegatedFrom[i] 
    14091409                            } : {}); 
     
    17461746            } 
    17471747 
    1748                 var duration = parseInt( evt.endTime ) - parseInt( evt.startTime ), isRepeat = false; 
    1749  
    1750                 var occurrences = []; 
     1748                var duration =parseInt( evt.DayLigth.calendar.endTime ) - parseInt( evt.DayLigth.calendar.startTime ), isRepeat = false; 
     1749 
     1750        var occurrences = []; 
    17511751                 
    17521752                if( evt.occurrences ) 
     
    17551755                        occurrences = evt.occurrences; 
    17561756            }else 
    1757                         occurrences[ occurrences.length ] = evt.startTime; 
    1758  
    1759             //occurrences = DataLayer.unique( occurrences ).sort(); 
     1757                        occurrences[ occurrences.length ] = evt.DayLigth.calendar.startTime; 
     1758 
     1759        //occurrences = DataLayer.unique( occurrences ).sort(); 
    17601760                var typeEvent;   
    17611761            for( var i = 0; i < occurrences.length; i++ ) 
     
    17661766                                id: evt.URI || evt.id+ '-' + i, 
    17671767                                title: Encoder.htmlDecode(evt.summary), 
    1768                                 start: Timezone.getDateCalendar(new Date( parseInt( occurrences[i] ) ), calendar.timezone,  !!evt.DayLigth ? evt.DayLigth.calendar.startTime : Timezone.daylightSaving), 
    1769                                 end:   Timezone.getDateCalendar(new Date( parseInt( occurrences[i] ) + duration - (!!parseInt(evt.allDay) ? 86400000 : 0)), calendar.timezone, !!evt.DayLigth ? evt.DayLigth.calendar.startTime : Timezone.daylightSaving), 
    1770                                 allDay: parseInt( evt.allDay ), 
     1768                                start: Timezone.getDateObjCalendar( occurrences[i], 'start', evt.allDay), 
     1769                end:   Timezone.getDateObjCalendar( (parseInt( occurrences[i] ) + duration), 'end', evt.allDay), 
     1770                allDay: parseInt( evt.allDay ), 
    17711771                                isRepeat: isRepeat, 
    17721772                                occurrence: i, 
  • branches/2.4/prototype/modules/calendar/js/timezone.js

    r6069 r7594  
    1111        daylightSaving: isNaN(parseInt( objTime.isDaylightSaving )) ? 0 : parseInt( objTime.isDaylightSaving ), 
    1212 
    13         timezones: objTime.timezones,      
     13    timezones: objTime.timezones, 
    1414        timezone: function( tzId ){ 
    1515 
     
    1818        }, 
    1919         
    20         getDateCalendar: function(date, tzId, isDay){ 
    21                 var timezone = this.timezone( tzId ); 
    22  
    23                 if(!timezone) 
    24                         return date; 
    25  
    26                 date = this.normalizeDate(date, false, true); 
    27  
    28                 return date.add({hours: parseInt(timezone.charAt(0) + timezone.charAt(2))  +  parseInt(isDay) }); 
     20        getDateCalendar: function(date, tzId, isDayLigth ){ 
     21                return date; 
    2922        }, 
    3023         
    31         getDateEvent: function(date, tzId, idCalendar, isDay, type){ 
    32                 var timezone = this.timezone( tzId ); 
    33                 var timezoneCurrent = this.timezone(DataLayer.get('calendar', idCalendar).timezone); 
     24        getDateEvent: function(date, tzId, isDayLigth){ 
     25        if(!tzId) 
     26            return date; 
    3427 
    35                 if(timezone == timezoneCurrent) 
    36                         return date; 
    37                  
    38                 var to = parseInt(timezone.charAt(0) + timezone.charAt(2)) + parseInt(isDay.event[type]); 
    39                 var current = parseInt(timezoneCurrent.charAt(0) + timezoneCurrent.charAt(2)) + parseInt(isDay.calendar[type]); 
    40                  
    41                 if(timezone.charAt(0) == timezoneCurrent.charAt(0)) 
    42                         hours =   (  to + (current * - 1)) ; 
    43                 else 
    44                         hours =  to + (( current ) * (timezone.charAt(0) ==  '+'  ? -1 : 1)) ; 
    45                  
    46                 return date.add({hours: hours}); 
    47         }, 
    48          
    49         normalizeDate: function(date, current, inverse){ 
     28        var timezone = this.timezone( tzId ); 
     29 
     30        if(!timezone) 
     31            return date; 
     32 
     33        date = this.normalizeDate(date, false, true); 
     34 
     35        return date.add({hours: (parseInt(timezone.charAt(0) + timezone.charAt(2)) + Timezone.diff( isDayLigth )) }); 
     36 
     37    }, 
     38 
     39    diff: function(isDayLigth){ 
     40 
     41        if( !parseInt( isDayLigth ) ){ 
     42 
     43            return 0; 
     44 
     45        }else{ 
     46 
     47            return (parseInt( isDayLigth ) == 1 ? 1 : -1); 
     48        } 
     49 
     50    }, 
     51 
     52    normalizeDate: function(date, current, inverse){ 
    5053                var offsetDate = !!current ? this.currentOffset : date.getUTCOffset(); 
    5154                return date.add({hours: (parseInt(offsetDate.charAt(0) + offsetDate.charAt(2)) * (!!inverse ? -1 : 1) )}); 
     
    5457        getDateMapDisponibility: function(date){ 
    5558                return this.normalizeDate(date, false, true); 
    56         } 
     59        }, 
     60 
     61    getHour: function(time){ 
     62 
     63        return dateCalendar.formatDate( Timezone.normalizeDate( new Date( parseInt( time ) ), false, true) , User.preferences.hourFormat); 
     64 
     65    }, 
     66 
     67    formateHour: function(time){ 
     68 
     69        return dateCalendar.formatDate(  new Date( parseInt( time ) ) , User.preferences.hourFormat); 
     70 
     71    }, 
     72 
     73    getDate: function( time, rang, isAllDay){ 
     74 
     75        return (new Date( parseInt( time ) - ((rang == 'end' && isAllDay && parseInt(isAllDay) == 1) ? 86400000 : 0) )).toString( User.preferences.dateFormat ); 
     76 
     77    }, 
     78 
     79    getDateObj: function( time, rang, isAllDay){ 
     80 
     81        return Timezone.normalizeDate(new Date( parseInt( time ) - ((rang == 'end' && isAllDay && parseInt(isAllDay) == 1) ? 86400000 : 0) ), false, true); 
     82 
     83    }, 
     84 
     85    getDateObjCalendar: function( time, rang, isAllDay){ 
     86 
     87        return  Timezone.normalizeDate(new Date( parseInt( time ) - ((rang == 'end' && isAllDay && parseInt(isAllDay) == 1) ? 86400000 : 0)), false, true); 
     88 
     89    } 
    5790} 
  • branches/2.4/prototype/services/iCal.php

    r7254 r7594  
    111111                                        $this->createAttachment($v['attachments'], $vevent); 
    112112 
    113                             $vevent->setProperty('uid', $v['uid']);   
     113                            $vevent->setProperty('uid', $v['uid']); 
     114 
     115 
     116                $vevent->setProperty('uid', $v['uid']); 
     117 
     118                $timezoneDayligth = Controller::read(array('concept' => 'timezones'), null, array('filter' => array('=', 'tzid', $apTimezone))); 
     119 
     120                if(!empty( $timezoneDayligth ) && count( $timezoneDayligth ) > 0){ 
     121 
     122                    if(array_key_exists(0, $timezoneDayligth)) 
     123                        $timezoneDayligth = $timezoneDayligth[0]; 
     124 
     125                    date_default_timezone_set('UTC'); 
     126 
     127                    require_once ROOTPATH . '/plugins/when/When.php'; 
     128 
     129                    $r = new When(); 
     130 
     131                    $start = new DateTime('1970-01-01 '.$timezoneDayligth['standardDtstart']); 
     132 
     133                    $r = new When(); 
     134                    $r->recur($start, $timezoneDayligth['standardFrequency']) 
     135                        ->until($start->modify('+1 years')) 
     136                        ->bymonth(array( $timezoneDayligth['standardBymonth'] )) 
     137                        ->byday(array(  $timezoneDayligth['daylightByday'] )); 
     138 
     139                   $date = $r->next(); 
     140 
     141                    $timezone = &$ical->newComponent('vtimezone'); 
     142                    $timezone->setProperty('tzid',$apTimezone ); 
     143 
     144                    $standard  = &$timezone->newComponent( "standard" ); 
     145                    $standard->setProperty( "tzoffsetfrom", $timezoneDayligth['standardFrom'] ); 
     146                    $standard->setProperty( "tzoffsetto", $timezoneDayligth['standardTo'] ); 
     147 
     148                    $standard->setProperty( "dtstart", $date->format(DATE_RFC822), array("VALUE" => "DATE") ); 
     149 
     150                    $rrule = array( 
     151                                        'FREQ' => $timezoneDayligth['standardFrequency'], 
     152                        'BYMONTH' =>  $timezoneDayligth['standardBymonth'], 
     153                        'BYday' => array(preg_replace("/[^0-9]/", "", $timezoneDayligth['standardByday']),  "DAY" => preg_replace("/[^a-zA-Z\s]/", "", $timezoneDayligth['standardByday'])) 
     154                    ); 
     155 
     156                    $standard->setProperty('rrule', $rrule); 
     157 
     158                    $daylight  = &$timezone->newComponent( "daylight" ); 
     159 
     160                    $daylight->setProperty( "tzoffsetfrom", $timezoneDayligth['daylightFrom'] ); 
     161                    $daylight->setProperty( "tzoffsetto", $timezoneDayligth['daylightTo'] ); 
     162 
     163 
     164                    $start = new DateTime('1970-01-01 '.$timezoneDayligth['daylightDtstart']); 
     165 
     166                    $r->recur($start, $timezoneDayligth['daylightFrequency']) 
     167                        ->until($start->modify('+1 years')) 
     168                        ->bymonth(array( $timezoneDayligth['daylightBymonth'] )) 
     169                        ->byday(array(  $timezoneDayligth['daylightByday'] )); 
     170 
     171                    $date = $r->next(); 
     172 
     173                    $daylight->setProperty( "dtstart", $date->format(DATE_RFC822), array("VALUE" => "DATE") ); 
     174 
     175                    $rrule = array( 
     176                        'FREQ' => $timezoneDayligth['daylightFrequency'], 
     177                        'BYMONTH' =>  $timezoneDayligth['daylightBymonth'], 
     178                        'BYday' => array(preg_replace("/[^0-9]/", "", $timezoneDayligth['daylightByday']),  "DAY" => preg_replace("/[^a-zA-Z\s]/", "", $timezoneDayligth['daylightByday'])) 
     179                    ); 
     180 
     181                    $daylight->setProperty('rrule', $rrule); 
     182                } 
     183 
    114184                            break; 
    115185            case TODO_ID: 
  • branches/2.4/prototype/timezones.php

    r7228 r7594  
    1212 
    1313$localtime = localtime(time(), true); 
    14 $timezone['isDaylightSaving'] =  !!$localtime['tm_isdst']; 
     14$timezone['isDaylightSaving'] =  !!$localtime['tm_isdst'] ? 1 : 0; 
    1515 
    1616echo json_encode($timezone); 
Note: See TracChangeset for help on using the changeset viewer.