source: sandbox/2.4.1-3/prototype/modules/calendar/alarms.php @ 6357

Revision 6357, 2.9 KB checked in by gustavo, 12 years ago (diff)

Ticket #2768 - Melhorias na inserção de destinatários na criacao de mensagem

RevLine 
[5341]1<?php
2
3if(!defined('ROOTPATH'))
[6111]4    define('ROOTPATH', dirname(__FILE__).'/../..');
[5341]5
[5399]6require_once ROOTPATH.'/api/controller.php';
[5341]7require_once ROOTPATH.'/modules/calendar/constants.php';
[6111]8require_once ROOTPATH.'/api/parseTPL.php';
[5341]9
[6357]10use prototype\api\Config as Config;
11
[6111]12$target = (gmdate('U') - 300 ).'000';
[5341]13
[6111]14$parts = Controller::service('PostgreSQL')->execSql("SELECT calendar_participant.user_info_id as user, co.id as schedulable, 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' ) > 0 ".
22                                                      "ELSE co.range_start - al.alarm_offset >= '$target' END");
[5341]23
[6111]24if(!is_array($parts))
25  return;
26
27$ids = array();
28
29foreach ($parts as $i => $part)
[5341]30{
[6111]31        ///Montando lista de participantes
[5341]32
[6111]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 )
[5341]38        {
[6111]39            if( $part['user'] === $user['user']['id'] )
40                $part['mail'] = $user['user']['mail'];
[5341]41
[6111]42            $attList[] = $user['user']['name'];
43        }
[5341]44
[6111]45      /////////////////////////
[5341]46
[6111]47        $timezone = ($part['timezone']) ? $part['timezone'] : 'UTC';
48        $sTime = new DateTime( '@'.(int)($part['startTime'] / 1000) , new DateTimeZone($timezone) );
49        $eTime =  new DateTime( '@'.(int)($part['endTime'] / 1000) , new DateTimeZone($timezone) );
[5341]50
[6111]51        $data = array('startDate' =>  date_format( $sTime , 'd/m/Y') ,
52                      'startTime' =>  date_format( $sTime , 'H:i') ,
53                      'endDate' =>  date_format( $eTime , 'd/m/Y') ,
54                      'endTime' =>  date_format( $eTime , 'H:i') ,
55                      'eventTitle' =>  $part['summary'],
56                      'eventLocation' =>  $part['location'],
57                      'timezone' => $timezone,
58                      'participants' =>  '<UL> <LI> '.implode( '<LI></LI> ', $attList ).'</LI> </UL>');
59
60        Controller::create( array( 'service' => 'SMTP' ), array( 'body' => parseTPL::load_tpl( $data, ROOTPATH.'/modules/calendar/templates/notify_alarm_body.tpl' ),
61                                                                  'isHtml' => true,
62                                                                  'subject' => 'Alarme de Calendario',
63                                                                  'from' => $part['mail'],
64                                                                  'to' => $part['mail'] ) );
65
66        Config::regSet('noAlarm', TRUE); //Evita o envio de notificação ?????
67        $ids[] = $part['id'];
[5341]68}
69
[6111]70if( !empty( $ids ) )
71    Controller::update( array( 'concept' => 'alarm' ) , array('sent' => '1'), array( 'IN', 'id', $ids ) );
[5341]72
73?>
Note: See TracBrowser for help on using the repository browser.