source: sandbox/webservice/api/rest/calendar/EventsResource.php @ 7740

Revision 7740, 4.7 KB checked in by pereira.jair, 11 years ago (diff)

Ticket #2507 - Correção do Resource EventsResource? que retornava valores incorretos.

  • Property svn:executable set to *
Line 
1<?php
2
3class EventsResource extends CalendarAdapter {
4        public function post($request){
5                // to Receive POST Params (use $this->params)
6                parent::post($request);
7
8                if( $this->isLoggedIn() )
9                {
10                        $date_start  = $this->getParam('dateStart');
11                        $date_end    = $this->getParam('dateEnd');
12                       
13                        // check the dates parameters formats (ex: 31/12/2012 23:59:59, but the time is optional)
14                        $regex_date  = '/^(0[1-9]|[12][0-9]|3[01])\/(0[1-9]|1[0-2])\/([12][0-9]{3})( ([01][0-9]|2[0-3])(:[0-5][0-9]){2})?$/';
15
16                        if(!preg_match($regex_date, $date_start))
17                                Errors::runException("CALENDAR_INVALID_START_DATE");
18
19                        if(!preg_match($regex_date, $date_end))
20                                Errors::runException("CALENDAR_INVALID_END_DATE");
21
22                        // get the start timestamp UNIX from the parameter
23                        $start_arr      = explode(' ', $date_start);
24                        $start_date_arr = explode('/', $start_arr[0]);
25
26                        // get the end timestamp UNIX from the parameter
27                        $end_arr        = explode(' ', $date_end);
28                        $end_date_arr   = explode('/', $end_arr[0]);
29                       
30                        $return = array();
31
32
33                        $start_year = (int)$start_date_arr[2];
34            $end_year = (int)$end_date_arr[2];
35
36                        for( $j = $start_year; $j <= $end_year; $j++ )
37                        {
38                                $start_month = (int)$start_date_arr[1];
39                                $end_month = (int)$end_date_arr[1];
40
41                                if ($start_year != $end_year) {
42                                        if ($j == $start_year) {
43                                                $end_month = 12;
44                                        } else {
45                                                $start_month = 1;
46                                        }
47                                }       
48
49                                for( $i = $start_month; $i <= $end_month; $i++ )
50                                {
51                                        if( (int)$i < 10 )
52                                                $result = $this->getEvents("0".$i,$j);
53                                        else
54                                                $result = $this->getEvents($i,$j);
55
56
57                                        if( count($result) > 0 )
58                                        {
59                                                $return[] = $result;
60                                        }
61                                }
62                        }
63
64
65
66                        if( count($return) > 0 )
67                        {
68                                $i = 0;
69                               
70                                for( $j = 0 ; $j < count( $return); $j++)
71                                {
72                                        foreach( $return[$j] as $key => $event )
73                                        {
74
75                                                foreach ($event as $value) {
76
77
78                                                        $events[$i]['eventID']                  = "".$value['id'];
79                                                        $events[$i]['eventDate']                = "".$key;
80                                                        $events[$i]['eventName']                = mb_convert_encoding("".$value['title'],"UTF8","ISO_8859-1");
81                                                        $events[$i]['eventDescription'] = mb_convert_encoding("".$value['description'], "UTF8","ISO_8859-1");
82                                                        $events[$i]['eventLocation']    = mb_convert_encoding("".$value['location'], "UTF8","ISO_8859-1");
83                                                        $events[$i]['eventParticipants']= $value['participants'];
84
85                                                        $starttime      = $this->makeTime($value['start']);
86                                                        $endtime        = $this->makeTime($value['end']);
87                                                        $actualdate = mktime(0,0,0,substr($key,4,2),substr($key, 6 ),substr($key,0,4));
88                                                        $rawdate_offset = $actualdate - $this->getTimezoneOffset();
89                                                        $nextday = mktime(0,0,0,substr($key,4,2),substr($key, 6 )+1,substr($key,0,4)) - $this->getTimezoneOffset();
90
91                                                        if( $starttime <= $rawdate_offset && $endtime >= $nextday - 60 )
92                                                        {
93                                                                $events[$i]['eventStartDate']   = substr($key, 6 )."/".substr($key,4,2)."/".substr($key,0,4)." 00:00";
94                                                                $events[$i]['eventEndDate']             = substr($key, 6 )."/".substr($key,4,2)."/".substr($key,0,4)." 23:59";
95                                                                $events[$i]['eventAllDay']              = "1";
96                                                        }
97                                                        else
98                                                        {
99                                                                if( $value['start']['mday'] === $value['end']['mday'] )
100                                                                {
101                                                                        $hour_start     = (((int)$value['start']['hour'] < 10 ) ? "0".$value['start']['hour'] : $value['start']['hour']).":".(((int)$value['start']['min'] < 10 ) ? "0".$value['start']['min'] : $value['start']['min'] );
102                                                                        $hour_end       = (((int)$value['end']['hour'] < 10 ) ? "0".$value['end']['hour'] : $value['end']['hour']).":".(((int)$value['end']['min'] < 10 ) ? "0".$value['end']['min'] : $value['end']['min'] );
103                                                                }
104                                                                else
105                                                                {
106                                                                        if( $events[$i-1] && $events[$i-1]['eventAllDay'] == "1" )
107                                                                        {
108                                                                                $hour_start     = "00:00";
109                                                                                $hour_end       = (((int)$value['end']['hour'] < 10 ) ? "0".$value['end']['hour'] : $value['end']['hour']).":".(((int)$value['end']['min'] < 10 ) ? "0".$value['end']['min'] : $value['end']['min'] );
110                                                                        }
111                                                                        else
112                                                                        {
113                                                                                $hour_start     = (((int)$value['start']['hour'] < 10 ) ? "0".$value['start']['hour'] : $value['start']['hour']).":".(((int)$value['start']['min'] < 10 ) ? "0".$value['start']['min'] : $value['start']['min'] );
114                                                                                $hour_end       = "23:59";
115                                                                        }
116                                                                }
117
118                                                                $events[$i]['eventStartDate']   = substr($key, 6 )."/".substr($key,4,2)."/".substr($key,0,4)." ".$hour_start;
119                                                                $events[$i]['eventEndDate']             = substr($key, 6 )."/".substr($key,4,2)."/".substr($key,0,4)." ".$hour_end;
120                                                                $events[$i]['eventAllDay']              = "0";
121                                                        }
122
123                                                        $events[$i++]['eventExParticipants'] = $value['ex_participants'];
124                                                }
125
126                                        }
127
128                                }
129
130                                $this->setResult(array('events' => $events));
131                        }
132                        else
133                        {
134                                $this->setResult(array('events' => array()));
135                        }
136                }
137
138                //to Send Response (JSON RPC format)
139                return $this->getResponse();
140        }
141}
Note: See TracBrowser for help on using the repository browser.