source: trunk/prototype/modules/calendar/export.php @ 5514

Revision 5514, 2.8 KB checked in by acoutinho, 12 years ago (diff)

Ticket #2434 - Implementacao anexos, acls e delegacao de participantes

Line 
1<?php
2require_once '../../api/controller.php';
3$params = $_GET;
4
5//if( isset($params['calendars']) )
6//{
7//    if(!is_array($params['calendars']))
8//       $params['calendars'] = array($params['calendars']);
9//   
10//   foreach ($params['calendars'] as &$calendar)
11//   {
12//       $eventLinks = Controller::find(array('concept' => 'calendarToSchedulable') , array('schedulable') , array('filter' => array( '=' , 'calendar' , $calendar)));
13//       
14//       $eventsIds = array();
15//       foreach ($eventLinks as &$eventLink)
16//           $eventsIds[] = $eventLink['schedulable'];
17//       
18//       $events = Controller::find(array('concept' => 'schedulable') , false , array('filter' => array('IN','id',$eventsIds) , 'deepness' => '2' ));
19//       $ics = Controller::format( array( 'service' => 'iCal' ) , $events );
20//       
21//   }
22//
23//}
24
25if( isset($params['calendar']) )
26{
27    $eventLinks = Controller::find(array('concept' => 'calendarToSchedulable') , array('schedulable') , array('filter' => array( '=' , 'calendar' , $params['calendar'])));
28    $calendar = Controller::read(array('concept' => 'calendar' , 'id' => $params['calendar']));
29    $eventsIds = array();
30    foreach ($eventLinks as &$eventLink)
31       $eventsIds[] = $eventLink['schedulable'];
32
33    $events = Controller::find(array('concept' => 'schedulable') , false , array('filter' => array('IN','id',$eventsIds) , 'deepness' => '2' ));       
34    $ics = Controller::format( array( 'service' => 'iCal' ) , $events , array('defaultTZI' => $calendar['timezone']) );
35
36    header( 'Content-Type: text/calendar; charset=utf-8' );
37    header( 'Content-Length: '.  mb_strlen($ics) );
38    header( 'Content-Disposition: attachment; filename="Calendar.ics"' );
39    header( 'Cache-Control: max-age=10' );
40    echo $ics;
41    die();
42}
43
44if( isset($params['event']) )
45{   
46    $event = Controller::read(array('concept' => 'schedulable' , 'id' => $params['event']));
47        $attachmentRelation = Controller::find( array( 'concept' => 'schedulableToAttachment' ) , false ,array( 'filter' => array('=', 'schedulable'  ,  $event['id']) ));
48        if(is_array($attachmentRelation)){
49                $attachments = array();
50                foreach($attachmentRelation as $key => $value)
51                        if(isset($value['attachment']) || !!$value['attachment'])
52                                $attachments[$key]  = $value['attachment'];
53                //Pega os anexos sem source
54                $event['attachments'] = Controller::find( array( 'concept' => 'attachment' ) , false ,array( 'filter' => array('IN', 'id' , $attachments) ));
55        }
56               
57    $ics = Controller::format( array( 'service' => 'iCal' ) , array($event) , array('defaultTZI' => $event['timezone']) );
58   
59    header( 'Content-Type: text/calendar; charset=utf-8' );
60    header( 'Content-Length: '.  mb_strlen($ics) );
61    header( 'Content-Disposition: attachment; filename="'.$event['summary'].'.ics"' );
62    header( 'Cache-Control: max-age=10' );
63    echo $ics;
64    die();
65}
66
67?>
Note: See TracBrowser for help on using the repository browser.