- Timestamp:
- 01/27/12 15:37:21 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/prototype/modules/calendar/interceptors/DBMapping.php
r5415 r5437 6 6 7 7 class DBMapping extends Helpers { 8 9 //Schedulable10 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 //Alarm35 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 //calendarSignatureAlarm46 static $calendar_signature_alarmMap = array( 'id' => 'id',47 'type' => 'action_id',48 'time' => 'time',49 'unit' => 'unit',50 'calendarSignature' => 'calendar_signature_id');51 52 //modulePrefence53 static $module_preferenceMap = array( 'id' => 'id',54 'user' => 'user_uidnumber',55 'value' => 'value',56 'name' => 'name',57 'module' => 'module');58 59 //Participant60 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 //User69 static $calendar_ex_participantMap = array( 'id' => 'id',70 'name' => 'name',71 'mail' => 'mail',72 'owner' => 'owner');73 74 //Repeat75 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 //Calendar92 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 //Signature101 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');120 8 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) ); 139 13 140 14 // if( !isset( $new['repeat'] )) 141 15 // $new['range_end'] = '7287926400'; // 12/12/2200 142 16 // else 143 $ new['range_end'] = gmdate( 'd-m-Y' , (int)($params['endTime'] / 1000) );17 $params['rangeEnd'] = gmdate( 'd-m-Y' , (int)($params['endTime'] / 1000) ); 144 18 /////////////////////////////////////////////////////////////////// 145 19 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(); 151 24 152 25 } … … 163 36 } 164 37 165 $params = self::parseConcept($params , self::$calendar_alarmMap); 166 $params['action_id'] = self::codeAlarmType($params['action_id']); 38 $params['type'] = self::codeAlarmType($params['type']); 167 39 168 40 } … … 175 47 public function encodeCreateAttachment( &$uri , &$params , &$criteria , $original ){ 176 48 $params['source'] = base64_encode( $params['source'] ); 177 $params = self::parseConcept($params , self::$attachmentMap);178 49 } 179 50 /////////////////////////////////////////////////////////////////////////////////////////////////////////////// 180 51 181 52 public function encodeSignatureAlarmType( &$uri , &$params , &$criteria , $original ){ 182 53 $params['type'] = self::codeAlarmType($params['type']); 183 54 } 184 55 185 ////Encode URI186 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 /////////////////////////////////////////////////////////////217 56 218 57 public function insertOwnerLink (&$uri , &$params , &$criteria , $original ){ … … 225 64 } 226 65 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 267 78 /////////////////////////////////////////////////////////////////////////////////////////////////////////////// 268 79 … … 283 94 284 95 //Encode Update 285 public function encodeUpdateConcept( &$uri , &$params , &$criteria , $original ){286 $params = self::parseConcept( $params , self::${$uri['concept'].'Map'} );287 }288 96 289 97 public function encodeUpdateSchedulable( &$uri , &$params , &$criteria , $original ){ … … 292 100 if(isset($params['endTime'])) 293 101 $params['rangeEnd'] = gmdate( 'd-m-Y' , (int)($params['endTime'] / 1000) ); 294 295 $params = self::parseConcept( $params , self::${$uri['concept'].'Map'} ); 102 296 103 297 104 } … … 328 135 } 329 136 /////////////////////////////////////////////////////////////////////////////////////////////////////////////// 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 }337 137 338 138 public function verifyCalendarLocation( &$uri , &$params , &$criteria , $original ){ … … 341 141 } 342 142 343 public function setCalendarLocation( &$uri , &$params , &$criteria , $original ){344 if(isset($params['name']))345 $params['location'] = $params['name'];346 }347 143 348 144 //TODO: Remover apos suporte a ManytoMany na api … … 381 177 } 382 178 179 return $result; 180 383 181 } 384 182 … … 406 204 } 407 205 } 408 409 206 } 410 207 … … 514 311 array( '=' , 'sent' , '0') , 515 312 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]) ); 518 315 519 316 //Busca os Alarmes no Range … … 680 477 $newCriteria = $original['criteria']; 681 478 $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')) ); 686 481 $externalUsers = Controller::find( $newuri , $original['properties'] ? $original['properties'] : null , $newCriteria ); 687 482 … … 698 493 699 494 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 710 499 public function createSchedulableMails( &$uri , &$result , &$criteria , $original ){ 711 500 … … 948 737 return ( isset( $isOwner[0]['id'] ) ) ? true : false; 949 738 } 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 1001 740 private static function schedulable2calendarToObject($Schedulable) 1002 741 {
Note: See TracChangeset
for help on using the changeset viewer.