Ignore:
Timestamp:
03/15/12 16:41:03 (12 years ago)
Author:
natan
Message:

Ticket #2434 - Supressao da primeira ocorrencia de uma repeticao quando seu evento base se enquadra na mesma

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/prototype/modules/calendar/interceptors/DBMapping.php

    r5731 r5737  
    107107          $end = $criteria['filter'][2][2]; 
    108108 
    109          $sql = ' SELECT calendar_object.id as id ,calendar_object.cal_uid as "uid", calendar_object.type_id as "type", calendar_object.dtstart as "startTime", calendar_object.summary as "summary", calendar_object.description as "description", calendar_object.dtend as "endTime" , calendar_object.location as "location", calendar_object.allday as "allDay", calendar_object.transp as "transparent", calendar_object.class_id as "class", calendar_object.repeat as "repeat", calendar_object.range_start as "rangeStart",calendar_object.range_end as "rangeEnd", calendar_object.last_update as "lastUpdate", calendar_object.dtstamp as "dtstamp", calendar_object.sequence as "sequence",  calendar_object.tzid as "timezone" ,calendar_to_calendar_object.calendar_id as calendar FROM calendar_to_calendar_object , calendar_object WHERE (range_start >= \''.$start.'\' AND range_end <= \''.$end.'\' AND calendar_to_calendar_object.calendar_id IN (\''.  implode('\',\'', $criteria['filter'][3][2]).'\')) AND calendar_to_calendar_object.calendar_object_id = calendar_object.id'; 
    110           
     109          $ids = array(); 
     110          $occ = array(); 
     111 
     112          if( $occurrences = self::checkOccurrences( $start, $end, intval($criteria['deepness']) + 1 ) ) 
     113              foreach( $occurrences as $id => $occurrence ) 
     114              { 
     115                  $ids[] = $id; 
     116                  $occ[] = $occurrence; 
     117              } 
     118 
     119         $sql = ' SELECT calendar_object.id as id ,calendar_object.cal_uid as "uid", calendar_object.type_id as "type", calendar_object.dtstart as "startTime", calendar_object.summary as "summary", calendar_object.description as "description", calendar_object.dtend as "endTime" , calendar_object.location as "location", calendar_object.allday as "allDay", calendar_object.transp as "transparent", calendar_object.class_id as "class", calendar_object.repeat as "repeat", calendar_object.range_start as "rangeStart",calendar_object.range_end as "rangeEnd", calendar_object.last_update as "lastUpdate", calendar_object.dtstamp as "dtstamp", calendar_object.sequence as "sequence",  calendar_object.tzid as "timezone" ,calendar_to_calendar_object.calendar_id as calendar FROM calendar_to_calendar_object , calendar_object WHERE (range_start >= \''.$start.'\' AND range_end <= \''.$end.'\' AND calendar_to_calendar_object.calendar_id IN (\''.  implode('\',\'', $criteria['filter'][3][2]).'\')) AND calendar_to_calendar_object.calendar_object_id = calendar_object.id'.( !empty($ids) ? ' AND calendar_object.id NOT IN (\'' .implode( '\',\'', $ids ). '\')' : ''); 
     120 
    111121         $params = Controller::service('PostgreSQL')->execResultSql($sql); 
    112122         $params = self::deepnessFindEvent( &$uri , &$params , &$criteria , $original); 
    113  
    114          $occ = self::checkOccurrences( $criteria['filter'][1][2], $criteria['filter'][2][2], intval($criteria['deepness']) + 1 ); 
    115  
    116          if( $occ ) 
    117             $params = array_merge( $params, $occ ); 
     123  
     124         $params = array_merge( $params, $occ ); 
    118125 
    119126         return false; 
     
    252259              { 
    253260                    $result[ $currentId ] = $ret['repeat']['schedulable']; 
     261                    $result[ $currentId ]['repeat']['schedulable'] = $currentId; 
     262 
    254263                    $result[ $currentId ][ 'occurrences' ] = array(); 
    255    
     264 
    256265                    $calendarToCalendarObj = self::schedulable2calendarToObject( $currentId ); 
    257266 
    258                     $result[ $currentId ]['calendar'] = $calendarToCalendarObj[0]['calendar_id']; 
    259  
    260                     unset( $result[ $currentId ]['repeat'] ); 
     267                    $result[ $currentId ]['calendar'] = $calendarToCalendarObj[0]['calendar_id'];   
    261268              } 
    262269       
    263270              $result[ $currentId  ][ 'occurrences' ][] = $ret['occurrence']; 
    264  
    265271        } 
    266272 
    267         foreach( $result as $id => $res ) 
    268             $params[] = $res; 
    269  
    270         return( $params ); 
     273        return( $result ); 
    271274    } 
    272275 
Note: See TracChangeset for help on using the changeset viewer.