Changeset 8232 for branches/2.5/prototype/modules/calendar/schedules.php
- Timestamp:
- 10/08/13 16:20:46 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2.5/prototype/modules/calendar/schedules.php
r8049 r8232 18 18 class Schedule{ 19 19 20 function findEventsRange( $start, $end, $calendars, $timezones ){20 function findEventsRange( $start, $end, $calendars, $timezones ){ 21 21 22 22 $sql = … … 31 31 .'calendar_object.range_end as "rangeEnd", calendar_object.last_update as "lastUpdate", ' 32 32 .'calendar_object.dtstamp as "dtstamp", calendar_object.sequence as "sequence", ' 33 33 34 .'count(calendar_task_to_activity_object.id) as "tasks", ' 35 34 36 .'calendar_object.tzid as "timezone" ,calendar_to_calendar_object.calendar_id as ' 35 37 .'calendar FROM calendar_object left join calendar_task_to_activity_object on ( calendar_object.id = calendar_task_to_activity_object.calendar_object_activity_id ), calendar_to_calendar_object ' 38 36 39 .'WHERE ( calendar_to_calendar_object.calendar_id IN (\'' . implode('\',\'', $calendars) . '\')) ' 37 40 .'AND calendar_to_calendar_object.calendar_object_id = calendar_object.id ' … … 54 57 .'AND calendar_object.dtstart NOT IN (SELECT calendar_repeat_occurrence.occurrence from calendar_repeat_occurrence, ' 55 58 .'calendar_repeat where (calendar_repeat_occurrence.repeat_id = calendar_repeat.id) ' 56 .'AND (calendar_repeat.object_id = calendar_object.id)) ' 57 .'group by 58 calendar_object.id, calendar_object.cal_uid, calendar_object.type_id, 59 calendar_object.dtstart, calendar_object.summary, calendar_object.description, 60 calendar_object.dtend, calendar_object.priority, calendar_object.due, calendar_object.percentage, 61 calendar_object.status, calendar_object.location, calendar_object.allday, calendar_object.transp, 62 calendar_object.class_id, calendar_object.repeat, calendar_object.range_start, calendar_object.range_end, 63 calendar_object.last_update, calendar_object.dtstamp, calendar_object.sequence, 64 calendar_object.tzid, calendar_to_calendar_object.calendar_id 65 ORDER BY 66 calendar_object.dtstart'; 59 .'AND (calendar_repeat.object_id = calendar_object.id)) ' 60 .'group by 61 calendar_object.id, calendar_object.cal_uid, calendar_object.type_id, 62 calendar_object.dtstart, calendar_object.summary, calendar_object.description, 63 calendar_object.dtend, calendar_object.priority, calendar_object.due, calendar_object.percentage, 64 calendar_object.status, calendar_object.location, calendar_object.allday, calendar_object.transp, 65 calendar_object.class_id, calendar_object.repeat, calendar_object.range_start, calendar_object.range_end, 66 calendar_object.last_update, calendar_object.dtstamp, calendar_object.sequence, 67 calendar_object.tzid, calendar_to_calendar_object.calendar_id 68 ORDER BY 69 calendar_object.dtstart'; 67 70 68 71 $params = Controller::service('PostgreSQL')->execResultSql($sql.$where); … … 84 87 .'calendar_object.range_end as "rangeEnd", calendar_object.last_update as "lastUpdate", ' 85 88 .'calendar_object.dtstamp as "dtstamp", calendar_object.sequence as "sequence", ' 89 86 90 .'count(calendar_task_to_activity_object.id) as "tasks", ' 91 87 92 .'calendar_object.tzid as "timezone" ,calendar_to_calendar_object.calendar_id as ' 88 93 .'calendar FROM calendar_object left join calendar_task_to_activity_object on ( calendar_object.id = calendar_task_to_activity_object.calendar_object_activity_id ), calendar_to_calendar_object ' … … 92 97 93 98 94 $where = 'AND (((upper("summary") like upper(\'%'.$summary.'%\') OR upper("description") like upper(\'%'.$description.'%\')))) 95 group by 96 calendar_object.id, calendar_object.cal_uid, calendar_object.type_id, 97 calendar_object.dtstart, calendar_object.summary, calendar_object.description, 98 calendar_object.dtend, calendar_object.priority, calendar_object.due, calendar_object.percentage, 99 calendar_object.status, calendar_object.location, calendar_object.allday, calendar_object.transp, 100 calendar_object.class_id, calendar_object.repeat, calendar_object.range_start, calendar_object.range_end, 101 calendar_object.last_update, calendar_object.dtstamp, calendar_object.sequence, 102 calendar_object.tzid, calendar_to_calendar_object.calendar_id 103 ORDER BY 104 dtstart LIMIT '.$limit.' OFFSET '.$offset.' '; 105 99 $where = 'AND (((upper("summary") like upper(\'%'.$summary.'%\') OR upper("description") like upper(\'%'.$description.'%\')))) 100 group by 101 calendar_object.id, calendar_object.cal_uid, calendar_object.type_id, 102 calendar_object.dtstart, calendar_object.summary, calendar_object.description, 103 calendar_object.dtend, calendar_object.priority, calendar_object.due, calendar_object.percentage, 104 calendar_object.status, calendar_object.location, calendar_object.allday, calendar_object.transp, 105 calendar_object.class_id, calendar_object.repeat, calendar_object.range_start, calendar_object.range_end, 106 calendar_object.last_update, calendar_object.dtstamp, calendar_object.sequence, 107 calendar_object.tzid, calendar_to_calendar_object.calendar_id 108 ORDER BY 109 dtstart LIMIT '.$limit.' OFFSET '.$offset.' '; 110 106 111 $params = Controller::service('PostgreSQL')->execResultSql($sql.$where); 107 112 108 109 110 113 return $this->normalizeEvents( $params, $timezones ); 111 114 } … … 113 116 function normalizeEvents( &$result, $timezones ){ 114 117 115 $mySig = Controller::find(array('concept' => 'calendarSignature') , array('calendar') , array('filter' => array( 'AND' , array('=' , 'type' , '0' ) , array( '=' , 'user' ,Config::me('uidNumber') ) , array('=' , 'isOwner' , '0' )))); 116 117 $signedCalendars = array(); 118 if(is_array($mySig)) 119 foreach($mySig as $v) 120 { 121 $tmp = Controller::find(array('concept' => 'calendarToPermission') , array('acl' ,'owner') , array('filter' => array( 'AND' ,array( '=' , 'calendar' , $v['calendar'] ) , array( '=' , 'user' , Config::me('uidNumber') ) ))); 122 $signedCalendars[$v['calendar']] = $tmp[0]; 123 } 124 118 $mySig = Controller::find(array('concept' => 'calendarSignature') , array('calendar') , array('filter' => array( 'AND' , array('=' , 'type' , '0' ) , array( '=' , 'user' ,Config::me('uidNumber') ) , array('=' , 'isOwner' , '0' )))); 119 120 $signedCalendars = array(); 121 if(is_array($mySig)) 122 foreach($mySig as $v) 123 { 124 $tmp = Controller::find(array('concept' => 'calendarToPermission') , array('acl' ,'owner') , array('filter' => array( 'AND' ,array( '=' , 'calendar' , $v['calendar'] ) , array( '=' , 'user' , Config::me('uidNumber') ) ))); 125 $signedCalendars[$v['calendar']] = $tmp[0]; 126 } 127 125 128 $date = new DateTime('now', new DateTimeZone('UTC')); 126 129 $DayLigth = array(); … … 156 159 if(isset( $v['occurrences'] ) && count( $v['occurrences'] ) > 0){ 157 160 158 $date->setTimestamp((int) ($v['startTime'] / 1000)); 159 $date->setTimezone( new DateTimeZone( $currentTimezone )); 160 161 $date->setTimestamp((int) ($v['startTime'] / 1000)); 162 $date->setTimezone( new DateTimeZone( $currentTimezone )); 163 161 164 foreach( $result[$i]['occurrences'] as &$o){ 162 165 163 $o = ((int) ($o / 1000) + $date->getOffset()).'000'; 166 $o = ((int) ($o / 1000) + $date->getOffset()).'000'; 164 167 165 168 } 166 169 } 167 170 168 $attend = (isset($signedCalendars[$result[$i]['calendar']])) ? 169 Controller::read(array('concept' => 'participant'), null, array('filter' => array('AND', array('=','schedulable',$v['id']), array('=','user', $signedCalendars[$result[$i]['calendar']]['owner'] ) ))): 170 Controller::read(array('concept' => 'participant'), null, array('filter' => array('AND', array('=','schedulable',$v['id']), array('=','user', Config::me('uidNumber')) ))); 171 172 $result[$i]['unanswered'] = 0; 173 171 $attend = (isset($signedCalendars[$result[$i]['calendar']])) ? 172 Controller::read(array('concept' => 'participant'), null, array('filter' => array('AND', array('=','schedulable',$v['id']), array('=','user', $signedCalendars[$result[$i]['calendar']]['owner'] ) ))): 173 Controller::read(array('concept' => 'participant'), null, array('filter' => array('AND', array('=','schedulable',$v['id']), array('=','user', Config::me('uidNumber')) ))); 174 175 $result[$i]['unanswered'] = 0; 176 174 177 if(count($attend) > 0 && !empty($attend)){ 175 if(array_key_exists(0, $attend)) 176 $attend = $attend[0]; 177 178 if(isset($signedCalendars[$result[$i]['calendar']])) //Caso agenda compartilhada verificar tmb se tem compartilhamento de escrita 179 $result[$i]['editable'] = (strpos($signedCalendars[$result[$i]['calendar']]['acl'],"w") >=0 && (strstr($attend['acl'],"w") || strstr($attend['acl'],"o") || $attend['isOrganizer'] == '1') ) ? 1 : 0; 180 else 181 $result[$i]['editable'] = (strstr($attend['acl'],"w") || strstr($attend['acl'],"o") || $attend['isOrganizer'] == '1') ? 1 : 0; 182 183 if($attend['status'] == STATUS_UNANSWERED && !isset($signedCalendars[$result[$i]['calendar']]) ) 184 $result[$i]['unanswered'] = 1; 178 if(array_key_exists(0, $attend)) 179 $attend = $attend[0]; 180 181 if(isset($signedCalendars[$result[$i]['calendar']])) //Caso agenda compartilhada verificar tmb se tem compartilhamento de escrita 182 $result[$i]['editable'] = (strpos($signedCalendars[$result[$i]['calendar']]['acl'],"w") >=0 && (strstr($attend['acl'],"w") || strstr($attend['acl'],"o") || $attend['isOrganizer'] == '1') ) ? 1 : 0; 183 else 184 $result[$i]['editable'] = (strstr($attend['acl'],"w") || strstr($attend['acl'],"o") || $attend['isOrganizer'] == '1') ? 1 : 0; 185 186 if($attend['status'] == STATUS_UNANSWERED && !isset($signedCalendars[$result[$i]['calendar']]) ) 187 $result[$i]['unanswered'] = 1; 185 188 186 189 }else{
Note: See TracChangeset
for help on using the changeset viewer.