Ignore:
Timestamp:
10/08/13 16:20:46 (11 years ago)
Author:
douglas
Message:

Ticket #0000 - Copiadas as alterações do Trunk. Versão final 2.5.1.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2.5/prototype/modules/calendar/schedules.php

    r8049 r8232  
    1818class Schedule{ 
    1919 
    20     function findEventsRange( $start, $end, $calendars, $timezones ){ 
     20    function findEventsRange( $start, $end, $calendars, $timezones  ){ 
    2121 
    2222        $sql = 
     
    3131                .'calendar_object.range_end as "rangeEnd", calendar_object.last_update as "lastUpdate", ' 
    3232                .'calendar_object.dtstamp as "dtstamp", calendar_object.sequence as "sequence", ' 
     33 
    3334                .'count(calendar_task_to_activity_object.id) as "tasks", ' 
     35 
    3436                .'calendar_object.tzid as "timezone" ,calendar_to_calendar_object.calendar_id as ' 
    3537                .'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 
    3639                .'WHERE ( calendar_to_calendar_object.calendar_id IN (\'' . implode('\',\'', $calendars) . '\')) ' 
    3740                .'AND calendar_to_calendar_object.calendar_object_id = calendar_object.id ' 
     
    5457                .'AND calendar_object.dtstart NOT IN (SELECT calendar_repeat_occurrence.occurrence from calendar_repeat_occurrence, ' 
    5558                .'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'; 
    6770 
    6871        $params = Controller::service('PostgreSQL')->execResultSql($sql.$where); 
     
    8487            .'calendar_object.range_end as "rangeEnd", calendar_object.last_update as "lastUpdate", ' 
    8588            .'calendar_object.dtstamp as "dtstamp", calendar_object.sequence as "sequence", ' 
     89 
    8690            .'count(calendar_task_to_activity_object.id) as "tasks", ' 
     91 
    8792            .'calendar_object.tzid as "timezone" ,calendar_to_calendar_object.calendar_id as ' 
    8893            .'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 ' 
     
    9297 
    9398 
    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 
    106111            $params = Controller::service('PostgreSQL')->execResultSql($sql.$where); 
    107112 
    108  
    109  
    110113        return $this->normalizeEvents( $params, $timezones ); 
    111114    } 
     
    113116    function normalizeEvents( &$result, $timezones ){ 
    114117 
    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 
    125128        $date = new DateTime('now', new DateTimeZone('UTC')); 
    126129        $DayLigth = array(); 
     
    156159            if(isset( $v['occurrences'] ) && count( $v['occurrences'] ) > 0){ 
    157160 
    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 
    161164                foreach( $result[$i]['occurrences'] as &$o){ 
    162165 
    163                     $o = ((int) ($o / 1000) + $date->getOffset()).'000';  
     166                    $o = ((int) ($o / 1000) + $date->getOffset()).'000'; 
    164167 
    165168                } 
    166169            } 
    167170 
    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 
    174177            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; 
    185188 
    186189            }else{ 
Note: See TracChangeset for help on using the changeset viewer.