Ignore:
Timestamp:
01/27/12 15:37:21 (12 years ago)
Author:
cristiano
Message:

Ticket #2434 - Atualização modulo agenda e API

File:
1 edited

Legend:

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

    r5415 r5437  
    66 
    77class DBMapping extends Helpers {        
    8          
    9       //Schedulable 
    10       static $calendar_objectMap = array('id' => 'id', 
    11                                          'uid' => 'cal_uid', 
    12                                          'type' => 'type_id', 
    13                                          'startTime' => 'dtstart', 
    14                                          'summary' => 'summary', 
    15                                          'description' => 'description', 
    16                                          'endTime' => 'dtend', 
    17                                          'location' => 'location', 
    18                                          'allDay' => 'allday', 
    19                                          'tranp' => 'tranparent', 
    20                                          'class' => 'class_id', 
    21                                          'repeat' => 'repeat', 
    22                                          'rangeStart' => 'range_start', 
    23                                          'rangeEnd' => 'range_end', 
    24                                          'lastUpdate' => 'last_update', 
    25                                          'dtstamp' => 'dtstamp', 
    26                                          'sequence' => 'sequence', 
    27                                          'timezone' => 'tzid'); 
    28        
    29         static $calendar_to_calendar_objectMap = array('id' => 'id', 
    30                                                        'calendar' => 'calendar_id', 
    31                                                        'schedulable' => 'calendar_object_id'); 
    32        
    33            
    34           //Alarm 
    35           static $calendar_alarmMap = array(  'id' => 'id', 
    36                                      'type' => 'action_id', 
    37                                      'time' => 'time', 
    38                                      'sent' => 'sent', 
    39                                      'rangeStart' => 'range_start', 
    40                                      'rangeEnd' => 'range_end', 
    41                                      'unit' => 'unit', 
    42                                      'participant' => 'participant_id', 
    43                                      'schedulable' => 'object_id'); 
    44            
    45           //calendarSignatureAlarm 
    46           static $calendar_signature_alarmMap = array(   'id' => 'id', 
    47                                                          'type' => 'action_id', 
    48                                                          'time' => 'time', 
    49                                                          'unit' => 'unit', 
    50                                                          'calendarSignature' => 'calendar_signature_id'); 
    51            
    52           //modulePrefence 
    53           static $module_preferenceMap = array(  'id' => 'id', 
    54                                                  'user' => 'user_uidnumber', 
    55                                                  'value' => 'value', 
    56                                                  'name' => 'name', 
    57                                                  'module' => 'module'); 
    58            
    59           //Participant 
    60           static $calendar_participantMap = array( 'id' => 'id', 
    61                                                    'delegatedTo' => 'delegated_to', 
    62                                                    'isOrganizer' => 'is_organizer', 
    63                                                    'isExternal' => 'is_external', 
    64                                                    'status' => 'participant_status_id', 
    65                                                    'schedulable' => 'object_id', 
    66                                                    'user' => 'user_info_id' ); 
    67  
    68           //User 
    69           static $calendar_ex_participantMap = array(   'id'   => 'id', 
    70                                                         'name' => 'name', 
    71                                                         'mail' => 'mail', 
    72                                                         'owner' => 'owner'); 
    73  
    74           //Repeat 
    75           static $calendar_repeatMap = array(   'id'   => 'id', 
    76                                                 'freq' => 'frequency', 
    77                                                 'endTime' => 'until', 
    78                                                 'count' => 'count', 
    79                                                 'schedulable' => 'object_id', 
    80                                                 'bysecond' => 'bysecond', 
    81                                                 'byminute' => 'byminute', 
    82                                                 'byhour' => 'byhour', 
    83                                                 'byday' => 'byday', 
    84                                                 'bymonthday' => 'bymonthday', 
    85                                                 'byweekno' => 'byweekno', 
    86                                                 'bymonth' => 'bymonth', 
    87                                                 'bysetpos' => 'bysetpos', 
    88                                                 'wkst' => 'wkst', 
    89                                                 'interval' => 'interval'); 
    90            
    91           //Calendar 
    92           static $calendarMap = array(   'id'   => 'id', 
    93                                          'name' => 'name', 
    94                                          'location' => 'location', 
    95                                          'description' => 'description', 
    96                                          'timezone' => 'tzid', 
    97                                          'defaultDuration' => 'duration', 
    98                                          'dtstamp' => 'dtstamp'); 
    99            
    100           //Signature 
    101           static $calendar_signatureMap = array(  'id'   => 'id', 
    102                                                    'user' => 'user_uidnumber', 
    103                                                    'calendar' => 'calendar_id', 
    104                                                    'isOwner' => 'is_owner', 
    105                                                    'msgAdd' => 'msg_add', 
    106                                                    'msgCancel' => 'msg_cancel', 
    107                                                    'msgUpdate' => 'msg_update', 
    108                                                    'msgReply' => 'msg_reply', 
    109                                                    'msgAlarm' => 'msg_alarms', 
    110                                                    'dtstamp' => 'dtstamp', 
    111                                                    'fontColor' => 'font_color', 
    112                                                    'backgroundColor' => 'background_color', 
    113                                                    'borderColor' => 'border_color'); 
    114            
    115            static $attachmentMap = array('id'   => 'id', 
    116                                          'name' => 'name', 
    117                                          'type' => 'type', 
    118                                          'source' => 'source', 
    119                                          'size' => 'size'); 
    1208            
    121             
    122         
    123 ////Encode Create 
    124     public function encodeCreateConcept( &$uri , &$params , &$criteria , $original ){ 
    125                 $params = self::parseConcept($params , self::${$uri['concept'].'Map'});  
    126         } 
    127     public function encodeCreateSchedulable( &$uri , &$params , &$criteria , $original ){ 
    128         $uri['concept'] = 'calendar_object';                     
    129         $new['type_id'] = EVENT_ID; 
    130      
    131             if(!array_key_exists('startTime', $params)) 
    132             { 
    133                 $params['startTime'] = $params['endTime']; 
    134             } 
    135              
    136            $new =  self::parseConcept($params , self::$calendar_objectMap);                
    137  
    138            $new['range_start'] = gmdate( 'd-m-Y' , (int)($params['startTime'] / 1000) ); 
     9    public function encodeCreateSchedulable( &$uri , &$params , &$criteria , $original ){                        
     10        $params['type_id'] = EVENT_ID; 
     11               
     12        $params['rangeStart'] = gmdate( 'd-m-Y' , (int)($params['startTime'] / 1000) ); 
    13913 
    14014    //        if( !isset( $new['repeat'] )) 
    14115    //            $new['range_end'] = '7287926400'; // 12/12/2200 
    14216    //        else 
    143             $new['range_end'] = gmdate( 'd-m-Y' , (int)($params['endTime'] / 1000) ); 
     17            $params['rangeEnd'] = gmdate( 'd-m-Y' , (int)($params['endTime'] / 1000) ); 
    14418            /////////////////////////////////////////////////////////////////// 
    14519 
    146             $new['dtstamp'] = (isset($new['dtstamp'])) ? $new['dtstamp'] :time().'000';  
    147             $new['last_update'] = (isset($new['last_update'])) ? $new['last_update'] :time().'000';  
    148             $new['type_id'] = EVENT_ID; 
    149             $new['cal_uid'] = isset($new['cal_uid']) ? $new['cal_uid'] : $this->_makeUid(); 
    150             $params = $new; 
     20            $params['dtstamp'] = (isset($params['dtstamp'])) ? $params['dtstamp'] :time().'000';  
     21            $params['lastUpdate'] = (isset($params['lastUpdate'])) ? $params['lastUpdate'] :time().'000';  
     22            $params['type'] = EVENT_ID; 
     23            $params['uid'] = isset($params['uid']) ? $params['uid'] : $this->_makeUid(); 
    15124             
    15225        }        
     
    16336        } 
    16437         
    165         $params = self::parseConcept($params , self::$calendar_alarmMap);        
    166         $params['action_id']    = self::codeAlarmType($params['action_id']); 
     38        $params['type'] = self::codeAlarmType($params['type']); 
    16739         
    16840        }   
     
    17547    public function encodeCreateAttachment( &$uri , &$params , &$criteria , $original ){ 
    17648        $params['source'] = base64_encode( $params['source'] ); 
    177                 $params = self::parseConcept($params , self::$attachmentMap);            
    17849        } 
    17950/////////////////////////////////////////////////////////////////////////////////////////////////////////////// 
    18051         
    18152    public function encodeSignatureAlarmType( &$uri , &$params , &$criteria , $original ){ 
    182                 $params['type'] = self::codeAlarmType($params['type']); 
     53        $params['type'] = self::codeAlarmType($params['type']); 
    18354    }   
    18455         
    185 ////Encode URI      
    186     public function encodeURICalendarToSchedulable( &$uri , &$params , &$criteria , $original ){            
    187             $uri['concept'] = 'calendar_to_calendar_object';                     
    188     }     
    189     public function encodeURICalendarSignatureAlarm( &$uri , &$params , &$criteria , $original ){            
    190             $uri['concept'] = 'calendar_signature_alarm';                        
    191     }     
    192     public function encodeURISchedulable( &$uri , &$params , &$criteria , $original ){            
    193             $uri['concept'] = 'calendar_object';                         
    194     } 
    195     public function encodeURIAlarm( &$uri , &$params , &$criteria , $original ){ 
    196             $uri['concept'] = 'calendar_alarm';                          
    197     }    
    198     public function encodeURIParticipant (&$uri , &$params , &$criteria , $original ){ 
    199             $uri['concept'] = 'calendar_participant';  
    200     } 
    201     public function encodeURIUser (&$uri , &$params , &$criteria , $original ){ 
    202             $uri['concept'] = 'calendar_ex_participant'; 
    203     } 
    204     public function encodeURIRepeat (&$uri , &$params , &$criteria , $original ){ 
    205             $uri['concept'] = 'calendar_repeat';  
    206     } 
    207     public function encodeURICalendar (&$uri , &$params , &$criteria , $original ){ 
    208             $uri['concept'] = 'calendar';  
    209     } 
    210     public function encodeURImodulePreference (&$uri , &$params , &$criteria , $original ){ 
    211             $uri['concept'] = 'module_preference';  
    212     } 
    213     public function encodeURICalendarSignature (&$uri , &$params , &$criteria , $original ){ 
    214                 $uri['concept'] = 'calendar_signature';  
    215         } 
    216 ///////////////////////////////////////////////////////////// 
    21756 
    21857    public function insertOwnerLink (&$uri , &$params , &$criteria , $original ){ 
     
    22564    }   
    22665       
    227 ////Encode Read  
    228     public function encodeReadConcept(&$uri , &$params , &$criteria , $original ){ 
    229         $params = self::parsejustthese($params , self::${$uri['concept'].'Map'});        
    230     } 
    231 //////////////////////////////////////////////////////////////////////////////////////////////// 
    232  
    233 //Encode Find 
    234     public function encodeFindParticipant( &$uri , &$params , &$criteria , $original ){ 
    235  
    236           $criteria = self::parserCristeria($criteria, self::$calendar_participantMap); 
    237  
    238     } 
    239  
    240     public function encodeFindConcept( &$uri , &$params , &$criteria , $original ){         
    241         $params = self::parsejustthese($params, self::${$uri['concept'].'Map'}); 
    242  
    243         $criteria = self::parserCristeria($criteria, self::${$uri['concept'].'Map'}); 
    244  
    245     } 
    246      
    247     public function encodeDeleteAllConcept( &$uri , &$params , &$criteria , $original ){ 
    248          
    249         $criteria = self::parserCristeria($criteria, self::${$uri['concept'].'Map'}); 
    250  
    251     } 
    252          
    253     public function encodeFindSchedulable( &$uri , &$params , &$criteria , $original ){ 
    254          
    255         $criteria = self::parserCristeria($criteria, self::$calendar_objectMap); 
    256         $findCalendar = false;  
    257         if(isset($criteria['filter'] )) 
    258         $criteria['filter'] = self::parseFilterSchedulable($criteria['filter'], self::$calendar_objectMap,$findCalendar); 
    259          
    260         if($findCalendar){ 
    261             $uri['concept'] = 'calendar_to_calendar_object , calendar_object'; 
    262             $criteria['join'] = array( 'calendar_to_calendar_object.calendar_object_id' =>  'calendar_object.id'); 
    263         } 
    264  
    265      } 
    266  
     66   public function findSchedulable( &$uri , &$params , &$criteria , $original ) 
     67   { 
     68       if(isset($criteria['filter'][3][1]) && $criteria['filter'][3][1] == 'calendar') 
     69       { 
     70         $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'; 
     71         $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"; 
     72         $params = Controller::service('PostgreSQL')->execResultSql($sql); 
     73         $params = self::deepnessFindEvent( &$uri , &$params , &$criteria , $original); 
     74         return false; 
     75       } 
     76   } 
     77    
    26778/////////////////////////////////////////////////////////////////////////////////////////////////////////////// 
    26879 
     
    28394      
    28495//Encode Update 
    285     public function encodeUpdateConcept( &$uri , &$params , &$criteria , $original ){ 
    286         $params = self::parseConcept( $params , self::${$uri['concept'].'Map'} );                        
    287     }     
    28896 
    28997    public function encodeUpdateSchedulable( &$uri , &$params , &$criteria , $original ){        
     
    292100        if(isset($params['endTime'])) 
    293101                $params['rangeEnd'] = gmdate( 'd-m-Y' , (int)($params['endTime'] / 1000) );        
    294          
    295        $params = self::parseConcept( $params , self::${$uri['concept'].'Map'} );                         
     102                 
    296103                 
    297104     }         
     
    328135    }  
    329136/////////////////////////////////////////////////////////////////////////////////////////////////////////////// 
    330  
    331     public function encodeReplaceConcept( &$uri , &$params , &$criteria , $original ){ 
    332         $params = self::parseConcept( $params , self::${$uri['concept'].'Map'} ); 
    333          
    334         $criteria = self::parserCristeria($criteria,  self::${$uri['concept'].'Map'}); 
    335  
    336     }     
    337137     
    338138    public function verifyCalendarLocation( &$uri , &$params , &$criteria , $original ){ 
     
    341141    }  
    342142     
    343     public function setCalendarLocation( &$uri , &$params , &$criteria , $original ){ 
    344         if(isset($params['name'])) 
    345             $params['location'] = $params['name']; 
    346     }  
    347143       
    348144    //TODO: Remover apos suporte a ManytoMany na api  
     
    381177       } 
    382178        
     179       return $result; 
     180        
    383181   }  
    384182    
     
    406204                } 
    407205       } 
    408  
    409206   }  
    410207    
     
    514311                      array( '='  , 'sent' , '0') ,   
    515312                      array( '='  , 'type' ,  ALARM_ALERT) ,   
    516                       array( '>=' , 'range_start' , $criteria['filter'][2]) , 
    517                       array( '<=' , 'range_end' , $criteria['filter'][2]) );  
     313                      array( '>=' , 'rangeStart' , $criteria['filter'][2]) , 
     314                      array( '<=' , 'rangeEnd' , $criteria['filter'][2]) );  
    518315 
    519316            //Busca os Alarmes no Range 
     
    680477        $newCriteria = $original['criteria']; 
    681478        $valid = true; 
    682         self::validExternalUserCriteria($newCriteria['filter'], self::$calendar_ex_participantMap, $valid); 
    683         if($valid == true) 
    684         { 
    685              $newCriteria['filter'] = array('AND',$newCriteria['filter'] , array('=' , 'owner', Config::me('uidNumber')) );         
     479 
     480            $newCriteria['filter'] = array('AND',$newCriteria['filter'] , array('=' , 'owner', Config::me('uidNumber')) );         
    686481            $externalUsers = Controller::find( $newuri , $original['properties'] ? $original['properties'] : null , $newCriteria ); 
    687482 
     
    698493 
    699494            return array_merge($result, $externalUsers);     
    700         } 
    701         
    702     } 
    703  
    704 //Decode Read 
    705     public function decodeReadConcept( &$uri , &$result , &$criteria , $original ){      
    706                 return self::parseConcept($result, self::${$uri['concept'].'Map'} , true); 
    707         } 
    708 ///////////////////////////////////////////////////////////////////////// 
    709   
     495         
     496        
     497    } 
     498 
    710499    public function createSchedulableMails( &$uri , &$result , &$criteria , $original ){ 
    711500         
     
    948737        return ( isset( $isOwner[0]['id'] ) ) ? true : false;  
    949738    } 
    950       
    951     //TODO: Remover apos suporte a ManytoMany na api      
    952     protected static function parseFilterSchedulable($filter, $map ,&$findCalendar) { 
    953         if (!is_array($filter) || count($filter) <= 0) 
    954             return null; 
    955  
    956         $op = array_shift($filter); 
    957  
    958         if (is_array($filter[0])) { 
    959             foreach ($filter as $i => $f) 
    960                 $filter[$i] = self::parseFilterSchedulable($f, $map ,$findCalendar ); 
    961         } 
    962         else 
    963         { 
    964             if($filter[0] == 'calendar') 
    965             { 
    966                 $findCalendar = true; 
    967                 $filter[0] = 'calendar_to_calendar_object.calendar_id';  
    968             } 
    969             else 
    970                 $filter[0] = isset($map[$filter[0]]) ? $map[$filter[0]] : $filter[0]; 
    971         } 
    972  
    973         array_unshift($filter, $op); 
    974  
    975         return( $filter ); 
    976     }   
    977      
    978     private static function validExternalUserCriteria( $filter, $map , &$ref ) 
    979     { 
    980         if (!is_array($filter) || count($filter) <= 0) 
    981             return null; 
    982          
    983         $op = array_shift($filter); 
    984  
    985         if (isset($filter[0]) && is_array($filter[0])) { 
    986             foreach ($filter as $i => $f) 
    987                 $filter[$i] = self::validExternalUserCriteria($f, $map ,$findCalendar ); 
    988         } 
    989         else 
    990         {            
    991            if( isset($filter[0]) && !in_array($filter[0] , self::$calendar_ex_participantMap)) 
    992              $ref = false; 
    993    
    994             else 
    995                 $filter[0] = isset($map[$filter[0]]) ? $map[$filter[0]] : $filter[0]; 
    996         } 
    997          
    998         return( $filter ); 
    999     } 
    1000      
     739 
    1001740    private static function schedulable2calendarToObject($Schedulable) 
    1002741    { 
Note: See TracChangeset for help on using the changeset viewer.