Ignore:
Timestamp:
03/13/12 18:23:02 (12 years ago)
Author:
natan
Message:

Ticket #2434 - Implementacao da repeticao de eventos na agenda e adicao de suporte a relacionamentos 1x1 na API

File:
1 edited

Legend:

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

    r5682 r5715  
    77class DBMapping extends Helpers {        
    88            
    9     public function encodeCreateSchedulable( &$uri , &$params , &$criteria , $original ){                        
    10         $params['type_id'] = EVENT_ID; 
    11          
    12          
    13                 if(!is_numeric($params['startTime']) ) 
    14                         $params['startTime'] =  strtotime( $params['startTime'] . ' ' .$params['timezone']).'000'; 
     9    public function encodeCreateSchedulable( &$uri , &$params , &$criteria , $original ){ 
     10        $params['type_id'] = EVENT_ID; 
     11 
     12        if(!is_numeric($params['startTime']) ) 
     13          $params['startTime'] =   self::parseTimeDate( $params['startTime'], $params['timezone'] );  
    1514                 
    16                 if (!is_numeric($params['endTime'])){ 
    17                         $params['endTime'] =   strtotime( $params['endTime'] . ' ' .$params['timezone']).'000'; 
    18                          
    19                         if($params['allDay']) 
    20                                 $params['endTime'] =  $params['endTime']  + 86400000; 
    21                 } 
     15        if (!is_numeric($params['endTime'])){ 
     16          $params['endTime'] =    self::parseTimeDate( $params['endTime'], $params['timezone'] );  
     17 
     18          if($params['allDay']) 
     19            $params['endTime'] =  $params['endTime']  + 86400000; 
     20        } 
    2221    //        if( !isset( $new['repeat'] )) 
    2322    //            $new['range_end'] = '7287926400'; // 12/12/2200 
    2423    //        else 
    2524            $params['rangeEnd'] = $params['endTime']; 
    26                         $params['rangeStart'] =  $params['startTime']; 
     25            $params['rangeStart'] =  $params['startTime']; 
    2726 
    2827            /////////////////////////////////////////////////////////////////// 
     
    3231            $params['type'] = EVENT_ID; 
    3332            $params['uid'] = isset($params['uid']) ? $params['uid'] : $this->_makeUid(); 
    34              
    35         }        
     33    } 
     34 
     35    static function parseTimeDate($time, $timezone){ 
     36        return strtotime( $time . ' ' .$timezone).'000';          
     37   }     
    3638                 
    3739    public function encodeCreateAlarm( &$uri , &$params , &$criteria , $original ){ 
     
    8991           if(isset($params['isExternal']) && $params['isExternal'] == '1') 
    9092                $uri['service'] = 'PostgreSQL';  
    91     }   
     93    } 
     94 
     95    public function prepareRepeat(&$uri , &$params , &$criteria , $original ){ 
     96 
     97          $timezone = Controller::read( array( 'concept' => 'schedulable', 'id' => $params['schedulable'] ), array('timezone') ); 
     98          $params['startTime'] = self::parseTimeDate( $params['startTime'], $timezone['timezone'] ); 
     99          $params['endTime'] = self::parseTimeDate( $params['endTime'], $timezone['timezone'] ); 
     100    } 
    92101       
    93    public function findSchedulable( &$uri , &$params , &$criteria , $original ) 
     102    public function findSchedulable( &$uri , &$params , &$criteria , $original ) 
    94103   { 
    95104       if(isset($criteria['filter'][3][1]) && $criteria['filter'][3][1] == 'calendar') 
    96105       { 
    97          $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'; 
    98          $sql = " SELECT $select FROM calendar_to_calendar_object , calendar_object WHERE (range_start >= '".$criteria['filter'][1][2]."' AND range_end <= '".$criteria['filter'][2][2]."' AND calendar_to_calendar_object.calendar_id IN ('".  implode('\',\'', $criteria['filter'][3][2])."')) AND calendar_to_calendar_object.calendar_object_id = calendar_object.id"; 
    99          $params = Controller::service('PostgreSQL')->execResultSql($sql); 
     106          $start = $criteria['filter'][1][2]; 
     107          $end = $criteria['filter'][2][2]; 
     108 
     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          
     111         $params = Controller::service('PostgreSQL')->execResultSql($sql); 
    100112         $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 ); 
     118 
    101119         return false; 
    102120       } 
    103121   } 
     122 
     123  public function deepnessFindRepeatOccurrence( &$uri , &$result , &$criteria , $original ) 
     124  { 
     125 
     126    if( !isset($criteria['deepness']) || $criteria['deepness'] == 0 ) 
     127          return; 
     128 
     129      foreach( $result as $i => &$res ) 
     130          if( isset($res['repeat']) ) 
     131              $res['repeat'] = Controller::read( array( 'concept' => 'repeat', 'id' => $res['repeat'] ), false, array( 'deepness' => intval( $criteria['deepness'] ) - 1 ) ); 
     132  } 
     133 
     134  public function deepnessRepeat( &$uri , &$result , &$criteria , $original ) 
     135  { 
     136 
     137      if( !isset($criteria['deepness']) || $criteria['deepness'] == 0 ) 
     138          return; 
     139 
     140        $result['schedulable'] = Controller::find( array( 'concept' => 'schedulable' ), false, array( 'filter' => array( '=', 'id', $result['schedulable'] ), 'deepness' => intval( $criteria['deepness'] ) - 1 ) ); 
     141        $result['schedulable'] = $result['schedulable'][0]; 
     142  } 
     143 
     144public function saveOccurrences( &$uri , &$result , &$criteria , $original ){ 
     145 
     146        $ranges = Controller::find( array( 'concept' => 'repeatRange' ), array( 'rangeStart', 'rangeEnd' ),  array( 'filter' => array( '=', 'user', Config::me("uidNumber") ) ) ); 
     147 
     148        if( !is_array( $ranges ) || !isset( $ranges[0]['rangeStart'] ) || !isset( $ranges[0]['rangeEnd'] ) ) 
     149            return; 
     150 
     151        if( isset( $result['id'] ) ) 
     152             $id = $result['id']; 
     153        else 
     154             $id = $uri['id'];  
     155 
     156        $repeat = Controller::read( array( 'concept' => 'repeat', 'id' => $id ) ); 
     157 
     158        unset( $repeat['schedulable'] ); 
     159        unset( $repeat['id'] ); 
     160 
     161        $params = self::decodeRepeat( $repeat, $ranges[0]['rangeStart'], $ranges[0]['rangeEnd'] ); 
     162 
     163        Controller::delete( array( 'concept' => 'repeatOccurrence' ), false, array( 'filter' => array( '=', 'repeat', $id ) ) ); 
     164 
     165        if( !empty($params) ) 
     166            Controller::service('PostgreSQL')->execResultSql( "INSERT INTO calendar_repeat_occurrence(repeat_id,occurrence)VALUES('".$id."', '".implode( "'),('".$id."','", $params )."')" ); 
     167 
     168    } 
     169 
     170    public function checkOccurrences( $start, $end, $deep ){ 
     171 
     172        $ranges = Controller::find( array( 'concept' => 'repeatRange' ), array( 'rangeStart', 'rangeEnd' ),  array( 'filter' => array( '=', 'user', Config::me("uidNumber") ) ) ); 
     173        $ranges = $ranges[0]; 
     174 
     175        $origStart = $start; 
     176        $origEnd = $end; 
     177 
     178        if( $initialized = (isset($ranges['rangeStart']) && isset($ranges['rangeEnd'])) ) 
     179        { 
     180            if( $ranges['rangeStart'] <= $start ) 
     181                $start = false; 
     182            if( $ranges['rangeEnd'] >= $end ) 
     183                $end = false; 
     184        } 
     185 
     186        $repeats = self::findRepeats(); 
     187 
     188        if( !is_array( $repeats ) || empty( $repeats ) ) 
     189            return( false ); 
     190 
     191        $result = array(); 
     192        $ids = array(); 
     193 
     194        foreach( $repeats as $repeat ) 
     195        { 
     196            $ids[] = $id = $repeat['id']; unset( $repeat['id'] );  
     197 
     198            if( !isset( $result[ $id ] ) ) 
     199                $result[ $id ] = array(); 
     200 
     201            if( !$initialized ) 
     202                $result[ $id ] = array_merge( $result[ $id ], self::decodeRepeat( $repeat, $start, $end ) ); 
     203            else 
     204            { 
     205                if( $start ) 
     206                    $result[ $id ] = array_merge( $result[ $id ], self::decodeRepeat( $repeat, $start, $ranges['rangeStart'] ) ); 
     207 
     208                if( $end ) 
     209                    $result[ $id ] = array_merge( $result[ $id ], self::decodeRepeat( $repeat, $ranges['rangeEnd'], $end ) ); 
     210            } 
     211 
     212            if( empty( $result[ $id ] ) ) 
     213                unset( $result[ $id ] ); 
     214        } 
     215 
     216        if( $start || $end ) 
     217        { 
     218            Controller::begin( array( 'service' => 'PostgreSQL') ); 
     219 
     220            foreach( $result as $id => $res ) 
     221                Controller::service('PostgreSQL')->execResultSql( "INSERT INTO calendar_repeat_occurrence(repeat_id,occurrence)VALUES('".$id."','".implode( "'),('".$id."', '", $res )."')" ); 
     222 
     223            $data = array(); 
     224 
     225            if( $start ) 
     226                $data['rangeStart'] = $start; 
     227 
     228            if( $end ) 
     229                $data['rangeEnd'] = $end; 
     230 
     231            if( !$initialized ) 
     232                $data['user'] = Config::me( 'uidNumber' ); 
     233 
     234            Controller::call( ( $initialized ? 'replace' : 'create' ), array( 'concept' => 'repeatRange' ), $data, array( 'filter' => array( '=', 'user', Config::me('uidNumber') ) ) ); 
     235 
     236            Controller::commit( array( 'service' => 'PostgreSQL' ) ); 
     237        } 
     238 
     239        $return = Controller::find( array( 'concept' => 'repeatOccurrence' ), false, array( 'filter' => array( 'AND', array( '>=', 'occurrence', $origStart ), array( '<=', 'occurrence', $origEnd ), array( 'IN', 'repeat', $ids ) ), 'deepness' => $deep ) ); 
     240 
     241        if( !is_array( $return ) ) 
     242          return( false ); 
     243 
     244        $result = array(); 
     245        $params = array(); 
     246 
     247        foreach( $return as $ret ) 
     248        { 
     249              $currentId = $ret['repeat']['schedulable']['id']; 
     250 
     251              if( !isset( $result[ $currentId ] ) ) 
     252              { 
     253                    $result[ $currentId ] = $ret['repeat']['schedulable']; 
     254                    $result[ $currentId ][ 'occurrences' ] = array(); 
     255   
     256                    $calendarToCalendarObj = self::schedulable2calendarToObject( $currentId ); 
     257 
     258                    $result[ $currentId ]['calendar'] = $calendarToCalendarObj[0]['calendar_id']; 
     259 
     260                    unset( $result[ $currentId ]['repeat'] ); 
     261              } 
     262       
     263              $result[ $currentId  ][ 'occurrences' ][] = $ret['occurrence']; 
     264 
     265        } 
     266 
     267        foreach( $result as $id => $res ) 
     268            $params[] = $res; 
     269 
     270        return( $params ); 
     271    } 
     272 
     273    public static function findRepeats() 
     274    { 
     275        return Controller::service('PostgreSQL')->execResultSql( 'SELECT calendar_repeat.wkst as "wkst", calendar_repeat.byweekno as "byweekno", calendar_repeat.byminute as "byminute", calendar_repeat.bysecond as "bysecond", calendar_repeat.byyearday as "byyearday", calendar_repeat.bymonthday as "bymonthday", calendar_repeat.bysetpos as "bysetpos", calendar_repeat.byday as "byday", calendar_repeat.byhour as "byhour", calendar_repeat.interval as "interval", calendar_repeat.frequency as "frequency", calendar_repeat.until as "endTime", calendar_repeat.id as "id", calendar_repeat.count as "count", calendar_repeat.dtstart as "startTime" FROM calendar_repeat, calendar_participant WHERE calendar_repeat.object_id = calendar_participant.object_id AND calendar_participant.user_info_id = \''.Config::me('uidNumber').'\'' ); 
     276    } 
     277         
     278//HELPERS 
     279    public static function decodeRepeat( $repeat , $start , $end ) { 
     280 
     281    date_default_timezone_set( 'UTC' ); 
     282 
     283    require_once ROOTPATH.'/plugins/when/When.php'; 
     284 
     285    $r = new When(); 
     286 
     287    if( $repeat['frequency'] === 'none' ) 
     288        return( array() ); 
     289 
     290    $start =  new DateTime( '@'.(int)( max( $start, $repeat['startTime']  ) / 1000 ), new DateTimeZone('UTC') );     
     291 
     292    foreach($repeat as $rule => $value) 
     293    { 
     294            if( !isset( $value ) || !$value || $value === "0" ) 
     295                continue; 
     296 
     297            switch(strtolower($rule)) 
     298            { 
     299                    case "starttime": break; 
     300                    case "frequency": 
     301                            $r->recur( $start, $value ); 
     302                            break; 
     303                    case "endtime": 
     304                            $r->until( new DateTime( '@'.(int)( $value / 1000 ) ) ); 
     305                            break; 
     306                    case "count": case "interval":  case "wkst": 
     307                            $r->$rule( $value ); 
     308                            break; 
     309                    default : 
     310                            $r->$rule( !is_array( $value ) ? explode( ',' , $value ) : $value ); 
     311                            break; 
     312            } 
     313    } 
     314 
     315    $return = array(); 
     316 
     317    while($result = $r->next()) 
     318    {  
     319       $u = $result->format('U') * 1000; 
     320 
     321       if( $u  > $end ) //data da repetição atual maior que a data final da busca do usuario ? 
     322           break; 
     323 
     324      $return[] = $u; 
     325    } 
     326 
     327    return( $return ); 
     328} 
    104329    
    105330/////////////////////////////////////////////////////////////////////////////////////////////////////////////// 
     
    200425      
    201426         public function deepnessFindCalendarShared( &$uri , &$result , &$criteria , $original ){                                
    202                 if(isset($original['criteria']['deepness']) && count($result) > 0){ 
     427                if(isset($original['criteria']['deepness']) && $original['criteria']['deepness'] != '0' && count($result) > 0){ 
    203428                        $calendarIds = array(); 
    204429                        foreach($result as $key => $value) 
     
    234459    public function deepnessFindEvent( &$uri , &$result , &$criteria , $original ){              
    235460 
    236        if(isset($original['criteria']['deepness'])) 
     461       if(isset($original['criteria']['deepness']) && $original['criteria']['deepness'] != 0) 
    237462       { 
    238463                         
     
    286511                                         
    287512                                         
    288                                          
    289                                         $attachmentRelation = Controller::find( array( 'concept' => 'schedulableToAttachment' ) , false ,array( 'filter' => array('=', 'schedulable'  ,  $v['id']) ));  
    290                                         if(is_array($attachmentRelation)){ 
    291                                                 $attachments = array(); 
    292                                                 foreach($attachmentRelation as $key => $value) 
    293                                                         if(isset($value['attachment']) || !!$value['attachment']) 
    294                                                                 $attachments[$key]  = $value['attachment']; 
    295                                                 //Pega os anexos sem source 
    296                                                 $result[$i]['attachments'] = Controller::find( array( 'concept' => 'attachment' ) , array('id', 'name', 'type', 'size') ,array( 'filter' => array('IN', 'id' , $attachments) ));  
    297                                         } 
    298                                  
    299                                 }                
     513                     
     514                    $attachmentRelation = Controller::find( array( 'concept' => 'schedulableToAttachment' ) , false ,array( 'filter' => array('=', 'schedulable'  ,  $v['id']) ));  
     515                    if(is_array($attachmentRelation)){ 
     516                            $attachments = array(); 
     517                            foreach($attachmentRelation as $key => $value) 
     518                                    if(isset($value['attachment']) || !!$value['attachment']) 
     519                                            $attachments[$key]  = $value['attachment']; 
     520                            //Pega os anexos sem source 
     521                            $result[$i]['attachments'] = Controller::find( array( 'concept' => 'attachment' ) , array('id', 'name', 'type', 'size') ,array( 'filter' => array('IN', 'id' , $attachments) ));  
     522                    } 
     523 
     524                    if(isset($result[$i]['repeat'])){ 
     525                      $repeat = Controller::read( array( 'concept' => 'repeat', 'id' => $result[$i]['repeat'] ) ); 
     526 
     527                      if( !is_array($repeat) ) 
     528                          unset( $result[$i]['repeat'] ); 
     529                      else 
     530                          $result[$i]['repeat'] = $repeat[0]; 
     531                    } 
     532            }                
    300533                 
    301534           } 
     
    309542    public function deepnessReadEvent( &$uri , &$result , &$criteria , $original ){              
    310543        
    311        if(isset($original['criteria']['deepness'])) 
     544       if(isset($original['criteria']['deepness']) && $original['criteria']['deepness'] != 0) 
    312545       { 
    313546            if(isset($result['id'])) 
     
    334567    public function deepnessReadParticipant( &$uri , &$result , &$criteria , $original ){                
    335568        
    336        if(isset($original['criteria']['deepness'])) 
     569       if(isset($original['criteria']['deepness']) && $original['criteria']['deepness'] != 0) 
    337570       { 
    338571            if(isset($result['id'])) 
     
    350583    public function deepnessFindParticipant( &$uri , &$result , &$criteria , $original ){                
    351584        
    352        if(isset($original['criteria']['deepness'])) 
     585       if(isset($original['criteria']['deepness']) && $original['criteria']['deepness'] != 0) 
    353586       { 
    354587           foreach ($result as $i => $v) 
     
    369602    public function deepnessReadCalendarSignature( &$uri , &$result , &$criteria , $original ){          
    370603        
    371        if(isset($original['criteria']['deepness'])) 
     604       if(isset($original['criteria']['deepness']) && $original['criteria']['deepness'] != 0) 
    372605            if(isset($result['calendar'])){ 
    373606                $result['calendar'] = Controller::read( array( 'concept' => 'calendar' , 'id' => $result['calendar']));  
     
    380613    public function deepnessFindCalendarSignature( &$uri , &$result , &$criteria , $original ){          
    381614 
    382         if(isset($original['criteria']['deepness'])) 
     615        if(isset($original['criteria']['deepness']) && $original['criteria']['deepness'] != 0) 
    383616       { 
    384617           foreach ($result as $i => $v) 
     
    387620                    $result[$i]['calendar'] = Controller::read( array( 'concept' => 'calendar' , 'id' => $v['calendar']), false, false);  
    388621                                        $result[$i]['defaultAlarms'] = Controller::find( array( 'concept' => 'calendarSignatureAlarm' ) , false ,array( 'filter' => array('=', 'calendarSignature'  ,  $v['id']) ));     
    389                                         //Caso não seja o dono da agenda retorna o objeto permission com as acls 
     622                                        //Caso não seja o dono da agenda retorna o objeto permission com as acls 
    390623                                        if($result[$i]['isOwner'] == 0){ 
    391624                                                $permission = Controller::find( array( 'concept' => 'calendarToPermission'), false ,array( 'filter' => array('AND', array('=', 'calendar' ,  $v['calendar']), array('=', 'user', Config::me('uidNumber') ) ) ) );  
     
    504737                     ))); 
    505738             
    506             return false; /* Mata o restante da execução */ 
     739            return false; /* Mata o restante da execução */ 
    507740        }  
    508741         
     
    541774    public function createDefaultSignature( &$uri , &$result , &$criteria , $original ){ 
    542775                      
    543     //Caso uma busca não retorne nenhum resultado e foi buscado pelas assinaturas do usuario logado apenas 
     776    //Caso uma busca não retorne nenhum resultado e foi buscado pelas assinaturas do usuario logado apenas 
    544777    if(count($result) <= 0 &&  
    545778            ( $original['criteria']['filter'][0] == '=' && 
     
    592825        else 
    593826        { 
    594          //Criaremos uma agenda parão 
     827         //Criaremos uma agenda parão 
    595828          $cal = array('name' => 'Calendario', 
    596                          'description' => 'Calendario Padrão', 
     829                         'description' => 'Calendario Padrão', 
    597830                         'timezone' =>  (date_default_timezone_get()) ? date_default_timezone_get() : 'America/Sao_Paulo', 
    598831                         'dtstamp' => time().'000' 
     
    681914                    continue; 
    682915                 
    683                 //Criação do ical 
     916                //Criação do ical 
    684917                $ical = null; 
    685918                $ical = new vcalendar(); 
     
    702935                                /////////////////////////////////////////////////////////////////////////// 
    703936                 
    704                 //Criação do E-mail 
     937                //Criação do E-mail 
    705938                $mail = array(); 
    706939                $mail['isHtml'] = true;   
     
    719952                                                        ),ROOTPATH.'/api/templates/notify_create_body.tpl'); 
    720953                 
    721                 //TODO: Internacionalização do Subject 
    722                 $mail['subject'] = 'Schedulableo do Calendário : '.$schedulable['summary'] .' @ '.date_format( $sTime , 'd/m/Y H:i') . ' - ' .  date_format( $eTime , 'd/m/Y H:i'); 
     954                //TODO: Internacionalização do Subject 
     955                $mail['subject'] = 'Schedulableo do Calendário : '.$schedulable['summary'] .' @ '.date_format( $sTime , 'd/m/Y H:i') . ' - ' .  date_format( $eTime , 'd/m/Y H:i'); 
    723956                $mail['from'] =  $organizer['mail']; 
    724957                $mail['to'] = $att[$i]['mail']; 
     
    759992        } 
    760993    } 
    761          
    762 //HELPERS 
    763     private static function decodeRepeat( $repeat , $start , $end ) { 
    764     require_once ROOTPATH.'/plugins/when/When.php'; 
    765  
    766     $r = new When(); 
    767     $r->recur( new DateTime( '@'.$start , new DateTimeZone('UTC') ), $repeat['frequency'] ); 
    768  
    769     foreach($repeat as $rule => $value) 
    770     {                   
    771             switch(strtoupper($rule)) 
    772             { 
    773                     case "ENDTIME": 
    774                             $r->until( new DateTime( '@'.$value ) ); 
    775                             break; 
    776                     case "COUNT": 
    777                             $r->count( $value ); 
    778                             break; 
    779                     case "INTERVAL": 
    780                             $r->interval( $value ); 
    781                             break; 
    782                     case "BYDAY": 
    783                             if( !is_array( $value ) ) 
    784                                 $value = explode( ',' , $value ); 
    785                             $r->byday( $value ); 
    786                             break; 
    787                     case "BYMONTHDAY": 
    788                            if( !is_array( $value ) ) 
    789                                 $value = explode(',' , $value ); 
    790                             $r->bymonthday($value); 
    791                             break; 
    792                     case "BYYEARDAY": 
    793                               if( !is_array( $value ) ) 
    794                                 $value = explode(',', $value ); 
    795                             $r->byyearday( $value ); 
    796                             break; 
    797                     case "BYWEEKNO": 
    798                              if(!is_array( $value )) 
    799                                 $value = explode( ',', $value ); 
    800                             $r->byweekno( $value ); 
    801                             break; 
    802                     case "BYMONTH": 
    803                              if( !is_array( $value ) ) 
    804                                 $value = explode( ',', $value ); 
    805                             $r->bymonth( $value ); 
    806                             break; 
    807                     case "BYSETPOS": 
    808                              if( !is_array( $value ) ) 
    809                                 $value = explode( ',' , $value ); 
    810                             $r->bysetpos( $value ); 
    811                             break; 
    812                     case "WKST": 
    813                             $r->wkst( $value ); 
    814                             break; 
    815             } 
    816     } 
    817  
    818     $return = array(); 
    819  
    820     while($result = $r->next()) 
    821     {  
    822        $u = $result->format('U'); 
    823        if( $u  > $end ) //data da repetição atual maior que a data final da busca do usuario ? 
    824            break; 
    825  
    826       $return[] =  $u; 
    827     } 
    828  
    829     return $return; 
    830 } 
     994 
    831995    private function _makeUid() { 
    832996 
     
    8881052    private static function schedulable2calendarToObject($Schedulable) 
    8891053    { 
    890       return Controller::service('PostgreSQL')->execResultSql('SELECT calendar_to_calendar_object.id as calendar_to_calendar_Object , calendar.name as calendar_name ,calendar.location as calendar_location FROM calendar_to_calendar_object , calendar , calendar_signature'  
     1054      return Controller::service('PostgreSQL')->execResultSql('SELECT calendar_to_calendar_object.id as calendar_to_calendar_Object , calendar.name as calendar_name ,calendar.location as calendar_location, calendar.id as calendar_id FROM calendar_to_calendar_object , calendar , calendar_signature'  
    8911055                .' WHERE calendar_signature.user_uidnumber = '.$_SESSION['wallet']['user']['uidNumber'] 
    8921056                .' AND calendar_signature.is_owner = 1' 
Note: See TracChangeset for help on using the changeset viewer.