source: sandbox/2.4.2-expresso1/prototype/modules/calendar/interceptors/Helpers.php @ 6177

Revision 6177, 2.9 KB checked in by acoutinho, 12 years ago (diff)

Ticket #2727 - Quando criado evento com repeticoes com a hora data ou hora menor que a hora atual

Line 
1<?php
2
3class Helpers {   
4
5    public static function futureEvent( $startTime , $rangeEnd, $idSchedulable )
6    {   
7        //Verifica data 
8        $range = new DateTime( '@'.(int)($rangeEnd / 1000) , new DateTimeZone('UTC') );
9        list( $y1  , $m1 , $d1) = explode( '-' , $range->format('y-m-d'));
10               
11        $rangeEndMicrotime = gmmktime(0, 0, 0, $m1 , $d1, $y1);
12        $nowMicrotime =   gmmktime(0, 0, 0);
13       
14        if($rangeEndMicrotime < $nowMicrotime )
15            return self::futureEventDecodedRepeat($startTime , $idSchedulable, $nowMicrotime);
16       
17        if($rangeEndMicrotime === $nowMicrotime ) //caso seja o mesmo dia verifica a hora do evento.
18        {
19            $sTime = new DateTime( '@'.(int)($startTime / 1000) , new DateTimeZone('UTC') );           
20            $eventHour = (date_format( $sTime , 'H') * 3600) + (date_format( $sTime , 'i') * 60) + date_format( $sTime , 's');
21            $nowHour = (gmdate('H') * 3600) + (gmdate('i') * 60) + gmdate('s');
22           
23            if( $eventHour  <  $nowHour )
24                    return self::futureEventDecodedRepeat($startTime , $idSchedulable, $nowMicrotime);
25        }
26       return true;
27    }
28   
29    public static function futureEventDecodedRepeat( $startTime , $idSchedulable, $nowMicrotime )
30    {   
31
32        $sql = 'SELECT calendar_repeat_occurrence.occurrence as "occurrence" '
33        .'FROM calendar_repeat, calendar_repeat_occurrence WHERE calendar_repeat_occurrence.occurrence >= \'' . $startTime . '\' '
34        .'AND calendar_repeat.object_id = \'' . $idSchedulable . '\' '
35        .'AND calendar_repeat.id = calendar_repeat_occurrence.repeat_id AND '
36        .'calendar_repeat_occurrence.exception != 1';
37       
38        $ocurrences = Controller::service('PostgreSQL')->execResultSql($sql);
39       
40        if($ocurrences){
41            $valid = FALSE;
42            foreach($ocurrences as $value)
43                if(($value['occurrence'] / 1000) > $nowMicrotime){
44                    $valid = true;
45                    break;
46                }       
47                return $valid;
48        }  else
49            return false;
50    }
51   
52   
53   
54   
55    /**
56    * Resgata o organizador do evento
57    *
58    * @license    http://www.gnu.org/copyleft/gpl.html GPL
59    * @author     Consórcio Expresso Livre - 4Linux (www.4linux.com.br) e Prognus Software Livre (www.prognus.com.br)
60    * @sponsor    Caixa Econômica Federal
61    * @author     Cristiano Corrêa Schmidt
62    * @access     public
63    */
64    protected static function getOrganizer( &$schedulable ) {
65         $f = Controller::find(array('concept' => 'participant') , false , array('deepness' => '1' , 'filter' => array('AND' , array('=', 'schedulable' , $schedulable ) , array('=', 'isOrganizer' , '1'))));
66         return ( isset( $f[0] ) ) ? $f[0] : false;
67    }
68   
69    public static function lg($print, $name = ''){
70        ob_start();
71        print "\n";
72        print $name . ": ";
73        print_r( $print );
74        $output = ob_get_clean();
75        file_put_contents( "/tmp/prototype.log", $output , FILE_APPEND );
76               
77    }
78
79}
80
81?>
Note: See TracBrowser for help on using the repository browser.