Ignore:
Timestamp:
09/01/10 16:16:35 (14 years ago)
Author:
wmerlotto
Message:

Ticket #1179 - Compatibilização do agendamento para Outlook.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2.2/calendar/inc/class.bocalendar.inc.php

    r1949 r3196  
    27312731                } 
    27322732 
    2733         function create_vcard($event_array) 
    2734         { 
    2735         if(!is_array($event_array)) 
    2736                 return null; 
    2737         $tmpattach="BEGIN:VCALENDAR\n" 
    2738         ."PRODID:-//Expresso Livre//Calendar//EN\n" 
    2739         ."VERSION:1.0\n"; 
    2740                 foreach ($event_array as $event) 
    2741                 { 
    2742                         // It translates int to string 
    2743                         if (!is_object($event) && !is_array($event) || !array_key_exists  ('end', $event)) 
    2744                                 $event = $event_array; 
    2745                         if ( $event['end']['month'] < 10 ) 
    2746                                 $end_event_month="0".$event['end']['month']; 
    2747                         else 
    2748                                 $end_event_month=$event['end']['month']; 
    2749                         if ( $event['start']['month'] < 10 ) 
    2750                                 $start_event_month="0".$event['start']['month']; 
    2751                         else 
    2752                                 $start_event_month=$event['start']['month']; 
    2753                         if ( $event['end']['mday'] < 10 ) 
    2754                                 $end_event_day="0".$event['end']['mday']; 
    2755                         else 
    2756                                 $end_event_day=$event['end']['mday']; 
    2757                         if ( $event['start']['mday'] < 10 ) 
    2758                                 $start_event_day="0".$event['start']['mday']; 
    2759                         else 
    2760                                 $start_event_day=$event['start']['mday']; 
    2761                         if ( $event['start']['hour'] < 10) 
    2762                                 $start_event_hour="0".$event['start']['hour']; 
    2763                         else 
    2764                                 $start_event_hour=$event['start']['hour']; 
    2765                         if ( $event['end']['hour'] < 10) 
    2766                                 $end_event_hour="0".$event['end']['hour']; 
    2767                         else 
    2768                                 $end_event_hour=$event['end']['hour']; 
    2769                                  
    2770                         if ( $event['start']['min'] < 10) 
    2771                                 $start_event_min="0".$event['start']['min']; 
    2772                         else 
    2773                                 $start_event_min=$event['start']['min']; 
    2774                         if ( $event['end']['min'] < 10) 
    2775                                 $end_event_min="0".$event['end']['min']; 
    2776                         else 
    2777                                 $end_event_min=$event['end']['min'];     
    2778                  
    2779  
    2780                         $tmpattach.="BEGIN:VEVENT\n" 
    2781                         ."DTSTART:".$event['start'][year].$start_event_month.$start_event_day."T".$start_event_hour.$start_event_min."00Z\n" 
    2782                         ."DTEND:".$event[end][year].$end_event_month.$end_event_day."T".$end_event_hour.$end_event_min."00Z\n" 
    2783                         ."UID:Expresso-".$event[id].$event[uid]."\n" 
    2784                         ."LAST-MODIFIED:".time()."\n" 
    2785                         ."DESCRIPTION:".$event[description]."\n" 
    2786                         ."SUMMARY:".$event[title]."\n" 
    2787                         ."LOCATION:".$event[location]."\n" 
    2788                         ."END:VEVENT"."\n"; 
    2789                 } 
    2790                         $tmpattach.="END:VCALENDAR\n"; 
     2733                function create_vcard($event_array) 
     2734                { 
     2735                        if(!is_array($event_array)) 
     2736                                return null; 
     2737                         
     2738                        $sy = $event_array['start']['year']; 
     2739                        $sm = $event_array['start']['month']; 
     2740                        $sd = $event_array['start']['mday']; 
     2741                        $sh = $event_array['start']['hour']; 
     2742                        $sn = $event_array['start']['min']; 
     2743                        $dtstart = sprintf("%04d%02d%02dT%02d%02d00Z", $sy, $sm, $sd, $sh, $sn); 
     2744                         
     2745                        $ey = $event_array['end']['year']; 
     2746                        $em = $event_array['end']['month']; 
     2747                        $ed = $event_array['end']['mday']; 
     2748                        $eh = $event_array['end']['hour']; 
     2749                        $en = $event_array['end']['min']; 
     2750                        $dtend = sprintf("%04d%02d%02dT%02d%02d00Z", $ey, $em, $ed, $eh, $en); 
     2751 
     2752                        // Necessário espaços após quebra-de-linha, na descrição, caso contrário  
     2753                        // ocorrerá erro ao importar o agendamento no Outlook (erro lunar). 
     2754                        $description = str_replace("\n","\n ", $event_array['description']); 
     2755                         
     2756                        $tmpattach="BEGIN:VCALENDAR\r\n" 
     2757                        ."PRODID:-//Expresso Livre//Calendar//EN\r\n" 
     2758                        ."VERSION:1.0\r\n" 
     2759                        ."BEGIN:VEVENT\r\n" 
     2760                        ."DTSTART:".$dtstart."\r\n" 
     2761                        ."DTEND:".$dtend."\r\n" 
     2762                        ."LAST-MODIFIED:".gmdate("Ymd\THis\Z")."\r\n" //Hora no formato UTC 
     2763                        ."UID:Expresso-".$event_array['id'].$event_array['uid']."\r\n" 
     2764                        ."DESCRIPTION:".$description."\r\n" 
     2765                        ."SUMMARY:".$event_array['title']."\r\n" 
     2766                        ."LOCATION:".$event_array['location']."\r\n" 
     2767                        ."END:VEVENT\r\n" 
     2768                        ."END:VCALENDAR\r\n"; 
     2769                         
    27912770                        return $tmpattach; 
    2792 } 
     2771                } 
    27932772 
    27942773                /*! 
     
    28022781                */ 
    28032782                function send_update($msg_type,$to_notify,$old_event,$new_event=False,$user=False) 
    2804                 { 
    2805                          
    2806                         //echo "<p>bocalendar::send_update(type=$msg_type,to_notify="; print_r($to_notify); echo ", old_event="; print_r($old_event); echo ", new_event="; print_r($new_event); echo ", user=$user)</p>\n"; 
     2783                {                        
    28072784                        if (!is_array($to_notify)) 
    28082785                        { 
     
    29472924                        $mail->IsHTML(true); 
    29482925 
    2949                         // Aqui ï¿œ enviado o email 
     2926                        // Aqui e enviado o email 
    29502927                        foreach($to_notify as $userid => $statusid)  
    29512928                        { 
     
    32533230                                else 
    32543231                                        $event_month="0".$GLOBALS['bocalendar']->so->cal->event[start][month]; 
    3255                                 //attach extern vcard                    
     3232                                //attach extern vcalendar/icalendar (ics)                        
    32563233                                // define('context','$GLOBALS.bocalendar.so.cal.event'); 
    32573234                                $tmpattach = $this->create_vcard($GLOBALS['bocalendar']->so->cal->event); 
     
    32743251                                        $attach_fd = fopen($filename,"w+"); 
    32753252                                        fwrite($attach_fd,$tmpattach); 
    3276                                         $mail->AddAttachment($filename, "extern.vcard", "base64", "text/plain"); // "application/octet-stream" 
     3253                                        $mail->AddAttachment($filename, "extern.ics", "base64", "text/plain"); // "application/octet-stream" 
    32773254                                        fclose($attach_fd); 
    32783255                                } 
Note: See TracChangeset for help on using the changeset viewer.