1 | <?php |
---|
2 | |
---|
3 | if(!defined('ROOTPATH')) |
---|
4 | define('ROOTPATH', dirname(__FILE__).'/../..'); |
---|
5 | |
---|
6 | require_once ROOTPATH.'/api/controller.php'; |
---|
7 | require_once ROOTPATH.'/modules/calendar/constants.php'; |
---|
8 | require_once ROOTPATH.'/api/parseTPL.php'; |
---|
9 | |
---|
10 | use prototype\api\Config as Config; |
---|
11 | |
---|
12 | $target = (gmdate('U') - 300 ).'000'; |
---|
13 | |
---|
14 | $parts = Controller::service('PostgreSQL')->execSql('SELECT DISTINCT calendar_participant.user_info_id as "user", co.id as "schedulable", co.allDay as "allDay" ,co.dtend as "endTime", co.dtstart as "startTime", co.summary as "summary", co.tzid as "timezone", co.location as "location", al.id as "id" '. |
---|
15 | 'FROM calendar_participant, calendar_alarm as "al", calendar_object as "co", calendar_repeat as "rep" WHERE ('. |
---|
16 | "al.participant_id = calendar_participant.id AND ". |
---|
17 | "calendar_participant.object_id = co.id AND ". |
---|
18 | "al.action_id = '".ALARM_MAIL."' AND ". |
---|
19 | "al.sent = '0' AND ". |
---|
20 | "CASE WHEN rep.object_id = co.id ". |
---|
21 | "THEN ( select count(occurrence) FROM calendar_repeat_occurrence WHERE rep.object_id = co.id AND rep.id = calendar_repeat_occurrence.repeat_id AND ((occurrence - al.alarm_offset) >= '$target') AND ((occurrence - al.alarm_offset) >= '".($target + 360000)."') ) > 0 ". |
---|
22 | "ELSE (co.range_start - al.alarm_offset >= '$target') AND (co.range_start - al.alarm_offset < '".($target + 360000)."') END )"); |
---|
23 | |
---|
24 | if(!is_array($parts)) |
---|
25 | return; |
---|
26 | |
---|
27 | $ids = array(); |
---|
28 | |
---|
29 | foreach ($parts as $i => $part) |
---|
30 | { |
---|
31 | ///Montando lista de participantes |
---|
32 | |
---|
33 | $users = Controller::find( array( 'concept' => 'participant' ) , array( 'user', 'id', 'isExternal' ) ,array('filter' => array ('=', 'schedulable' , $part['schedulable'] ), 'deepness' => 1 ) ); |
---|
34 | |
---|
35 | $attList = array(); |
---|
36 | |
---|
37 | foreach( $users as $user ) |
---|
38 | { |
---|
39 | if( $part['user'] === $user['user']['id'] ) |
---|
40 | $part['mail'] = $user['user']['mail']; |
---|
41 | |
---|
42 | $attList[] = $user['user']['name']; |
---|
43 | } |
---|
44 | |
---|
45 | $timezone = new DateTimeZone('UTC'); |
---|
46 | $sTime = new DateTime('@' . (int) ($part['startTime'] / 1000), $timezone); |
---|
47 | $eTime = new DateTime('@' . (int) ($part['endTime'] / 1000), $timezone); |
---|
48 | |
---|
49 | $timezone = $part['timezone']; |
---|
50 | $sTime->setTimezone(new DateTimeZone($part['timezone'])); |
---|
51 | $eTime->setTimezone(new DateTimeZone($part['timezone'])); |
---|
52 | |
---|
53 | $data = array('startDate' => date_format( $sTime , 'd/m/Y') , |
---|
54 | 'startTime' => $part['allDay'] ? '' : date_format( $sTime , 'H:i'), |
---|
55 | 'endDate' => date_format( $eTime , 'd/m/Y') , |
---|
56 | 'endTime' => $part['allDay'] ? '' : date_format( $eTime , 'H:i'), |
---|
57 | 'eventTitle' => $part['summary'], |
---|
58 | 'eventLocation' => $part['location'], |
---|
59 | 'timezone' => $timezone, |
---|
60 | 'participants' => '<UL> <LI> '.implode( '<LI></LI> ', $attList ).'</LI> </UL>'); |
---|
61 | |
---|
62 | Controller::create( array( 'service' => 'SMTP' ), array( 'body' => parseTPL::load_tpl( $data, ROOTPATH.'/modules/calendar/templates/notify_alarm_body.tpl' ), |
---|
63 | 'isHtml' => true, |
---|
64 | 'subject' => 'Alarme de Calendario', |
---|
65 | 'from' => $part['mail'], |
---|
66 | 'to' => $part['mail'] ) ); |
---|
67 | |
---|
68 | Config::regSet('noAlarm', TRUE); //Evita o envio de notificação ????? |
---|
69 | $ids[] = $part['id']; |
---|
70 | } |
---|
71 | |
---|
72 | if( !empty( $ids ) ) |
---|
73 | Controller::update( array( 'concept' => 'alarm' ) , array('sent' => '1'), array('filter' => array( 'IN', 'id', $ids ) )); |
---|
74 | |
---|
75 | ?> |
---|