Changeset 3195


Ignore:
Timestamp:
09/01/10 16:12:47 (11 years ago)
Author:
wmerlotto
Message:

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

File:
1 edited

Legend:

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

    r1955 r3195  
    26422642                } 
    26432643 
    2644         function create_vcard($event_array) 
    2645         { 
    2646         if(!is_array($event_array)) 
    2647                 return null; 
    2648         $tmpattach="BEGIN:VCALENDAR\n" 
    2649         ."PRODID:-//Expresso Livre//Calendar//EN\n" 
    2650         ."VERSION:1.0\n"; 
    2651                 foreach ($event_array as $event) 
    2652                 { 
    2653                         // It translates int to string 
    2654                         if (!is_object($event) && !is_array($event) || !array_key_exists  ('end', $event)) 
    2655                                 $event = $event_array; 
    2656                         if ( $event['end']['month'] < 10 ) 
    2657                                 $end_event_month="0".$event['end']['month']; 
    2658                         else 
    2659                                 $end_event_month=$event['end']['month']; 
    2660                         if ( $event['start']['month'] < 10 ) 
    2661                                 $start_event_month="0".$event['start']['month']; 
    2662                         else 
    2663                                 $start_event_month=$event['start']['month']; 
    2664                         if ( $event['end']['mday'] < 10 ) 
    2665                                 $end_event_day="0".$event['end']['mday']; 
    2666                         else 
    2667                                 $end_event_day=$event['end']['mday']; 
    2668                         if ( $event['start']['mday'] < 10 ) 
    2669                                 $start_event_day="0".$event['start']['mday']; 
    2670                         else 
    2671                                 $start_event_day=$event['start']['mday']; 
    2672                         if ( $event['start']['hour'] < 10) 
    2673                                 $start_event_hour="0".$event['start']['hour']; 
    2674                         else 
    2675                                 $start_event_hour=$event['start']['hour']; 
    2676                         if ( $event['end']['hour'] < 10) 
    2677                                 $end_event_hour="0".$event['end']['hour']; 
    2678                         else 
    2679                                 $end_event_hour=$event['end']['hour']; 
    2680                                  
    2681                         if ( $event['start']['min'] < 10) 
    2682                                 $start_event_min="0".$event['start']['min']; 
    2683                         else 
    2684                                 $start_event_min=$event['start']['min']; 
    2685                         if ( $event['end']['min'] < 10) 
    2686                                 $end_event_min="0".$event['end']['min']; 
    2687                         else 
    2688                                 $end_event_min=$event['end']['min'];     
    2689                  
    2690  
    2691                         $tmpattach.="BEGIN:VEVENT\n" 
    2692                         ."DTSTART:".$event['start'][year].$start_event_month.$start_event_day."T".$start_event_hour.$start_event_min."00Z\n" 
    2693                         ."DTEND:".$event[end][year].$end_event_month.$end_event_day."T".$end_event_hour.$end_event_min."00Z\n" 
    2694                         ."UID:Expresso-".$event[id].$event[uid]."\n" 
    2695                         ."LAST-MODIFIED:".time()."\n" 
    2696                         ."DESCRIPTION:".$event[description]."\n" 
    2697                         ."SUMMARY:".$event[title]."\n" 
    2698                         ."LOCATION:".$event[location]."\n" 
    2699                         ."END:VEVENT"."\n"; 
    2700                 } 
    2701                         $tmpattach.="END:VCALENDAR\n"; 
     2644                function create_vcard($event_array) 
     2645                { 
     2646                        if(!is_array($event_array)) 
     2647                                return null; 
     2648                         
     2649                        $sy = $event_array['start']['year']; 
     2650                        $sm = $event_array['start']['month']; 
     2651                        $sd = $event_array['start']['mday']; 
     2652                        $sh = $event_array['start']['hour']; 
     2653                        $sn = $event_array['start']['min']; 
     2654                        $dtstart = sprintf("%04d%02d%02dT%02d%02d00Z", $sy, $sm, $sd, $sh, $sn); 
     2655                         
     2656                        $ey = $event_array['end']['year']; 
     2657                        $em = $event_array['end']['month']; 
     2658                        $ed = $event_array['end']['mday']; 
     2659                        $eh = $event_array['end']['hour']; 
     2660                        $en = $event_array['end']['min']; 
     2661                        $dtend = sprintf("%04d%02d%02dT%02d%02d00Z", $ey, $em, $ed, $eh, $en); 
     2662 
     2663                        // Necessário espaços após quebra-de-linha, na descrição, caso contrário  
     2664                        // ocorrerá erro ao importar o agendamento no Outlook (erro lunar). 
     2665                        $description = str_replace("\n","\n ", $event_array['description']); 
     2666                         
     2667                        $tmpattach="BEGIN:VCALENDAR\r\n" 
     2668                        ."PRODID:-//Expresso Livre//Calendar//EN\r\n" 
     2669                        ."VERSION:1.0\r\n" 
     2670                        ."BEGIN:VEVENT\r\n" 
     2671                        ."DTSTART:".$dtstart."\r\n" 
     2672                        ."DTEND:".$dtend."\r\n" 
     2673                        ."LAST-MODIFIED:".gmdate("Ymd\THis\Z")."\r\n" //Hora no formato UTC 
     2674                        ."UID:Expresso-".$event_array['id'].$event_array['uid']."\r\n" 
     2675                        ."DESCRIPTION:".$description."\r\n" 
     2676                        ."SUMMARY:".$event_array['title']."\r\n" 
     2677                        ."LOCATION:".$event_array['location']."\r\n" 
     2678                        ."END:VEVENT\r\n" 
     2679                        ."END:VCALENDAR\r\n"; 
     2680                         
    27022681                        return $tmpattach; 
    2703 } 
     2682                } 
    27042683 
    27052684                /*! 
     
    27132692                */ 
    27142693                function send_update($msg_type,$to_notify,$old_event,$new_event=False,$user=False) 
    2715                 { 
    2716                          
    2717                         //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"; 
     2694                {                        
    27182695                        if (!is_array($to_notify)) 
    27192696                        { 
     
    28582835                        $mail->IsHTML(true); 
    28592836 
    2860                         // Aqui ï¿œ enviado o email 
     2837                        // Aqui e enviado o email 
    28612838                        foreach($to_notify as $userid => $statusid)  
    28622839                        { 
     
    31573134                                else 
    31583135                                        $event_month="0".$GLOBALS['bocalendar']->so->cal->event[start][month]; 
    3159                                 //attach extern vcard                    
     3136                                //attach extern vcalendar/icalendar (ics)                        
    31603137                                // define('context','$GLOBALS.bocalendar.so.cal.event'); 
    31613138                                $tmpattach = $this->create_vcard($GLOBALS['bocalendar']->so->cal->event); 
     
    31783155                                        $attach_fd = fopen($filename,"w+"); 
    31793156                                        fwrite($attach_fd,$tmpattach); 
    3180                                         $mail->AddAttachment($filename, "extern.vcard", "base64", "text/plain"); // "application/octet-stream" 
     3157                                        $mail->AddAttachment($filename, "extern.ics", "base64", "text/plain"); // "application/octet-stream" 
    31813158                                        fclose($attach_fd); 
    31823159                                } 
Note: See TracChangeset for help on using the changeset viewer.