Changeset 5437 for trunk/prototype/modules/calendar/interceptors
- Timestamp:
- 01/27/12 15:37:21 (12 years ago)
- Location:
- trunk/prototype/modules/calendar/interceptors
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/prototype/modules/calendar/interceptors/DAViCalAdapter.php
r5399 r5437 22 22 * @return void 23 23 * @access public 24 */ 25 public function createCalendarToSchedulable(&$uri , &$result , &$ criteria , $original)24 */ 25 public function createCalendarToSchedulable(&$uri , &$result , &$data , $original) 26 26 { 27 if(Config::module('useCaldav')) 28 { 29 ob_start(); 30 $schedulable = Controller::read( array( 'concept' => 'schedulable' , 'id' => $original['properties']['schedulable'] ) , null , array('deepness' => '2') ); 31 $schedulable['URI']['concept'] = 'schedulable'; 32 $calendar = Controller::read( array( 'concept' => 'calendar' , 'id' => $original['properties']['calendar'] ),array('timezone','name','location')); 33 $ical = Controller::format( array( 'service' => 'iCal' ) , array($schedulable) , array('defaultTZI' => $calendar['timezone'])); 34 DAViCalAdapter::putIcal($ical , array('uid' => $schedulable['uid'] , 'collection' => $calendar['location'] )); 35 ob_end_clean(); 27 foreach ($data as $i => $concept) 28 { 29 if($concept['concept'] === 'calendarToSchedulable') 30 { 31 if(Config::module('useCaldav')) 32 { 33 ob_start(); 34 $calendarToschedulable = Controller::read( array( 'concept' => 'calendarToSchedulable' , 'id' => $concept['id'] )); 35 if($calendarToschedulable) 36 { 37 $schedulable = Controller::read( array( 'concept' => 'schedulable' , 'id' => $calendarToschedulable['schedulable'] ) , null , array('deepness' => '2') ); 38 $calendar = Controller::read( array( 'concept' => 'calendar' , 'id' => $calendarToschedulable['calendar'] ),array('timezone','name','location')); 39 $ical = Controller::format( array( 'service' => 'iCal' ) , array($schedulable) , array('defaultTZI' => $calendar['timezone'])); 40 DAViCalAdapter::putIcal($ical , array('uid' => $schedulable['uid'] , 'collection' => $calendar['location'] )); 41 } 42 ob_end_clean(); 43 } 44 } 45 36 46 } 37 47 } … … 171 181 { 172 182 ob_start(); 173 require_once ROOTPATH.'/plugins/davicalCliente/caldav-client-v2.php'; 183 require_once ROOTPATH.'/plugins/davicalCliente/caldav-client-v2.php'; 174 184 $cal = new CalDAVClient( Config::service( 'CalDAV' , 'url' ).'/'.Config::me( 'uid' ).'/', Config::me( 'uid' ), $_SESSION['wallet']['user']['password']); 175 185 $cal->DoDELETERequest(Config::service( 'CalDAV' , 'url' ).'/'.Config::me( 'uid' ).'/'.$data.'/'); -
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 { -
trunk/prototype/modules/calendar/interceptors/Helpers.php
r5341 r5437 1 1 <?php 2 2 3 class Helpers { 4 5 protected static function parseFilter($filter, $map) { 6 if (!is_array($filter) || count($filter) <= 0) 7 return null; 8 9 $op = array_shift($filter); 10 11 if (is_array($filter[0])) { 12 foreach ($filter as $i => $f) 13 $filter[$i] = self::parseFilter($f, $map); 14 } 15 else 16 $filter[0] = isset($map[$filter[0]]) ? $map[$filter[0]] : $filter[0]; 17 18 array_unshift($filter, $op); 19 20 return( $filter ); 21 } 22 23 protected static function parseConcept($data, $map, $flip = false) { 24 if (!is_array($data) || count($data) <= 0) 25 return false; 26 27 if ($flip === true) 28 $map = array_flip($map); 29 30 $new = array(); 31 foreach ($data as $i => $v) 32 if (array_key_exists($i, $map)) 33 $new[$map[$i]] = $v; 34 return $new; 35 } 36 37 38 protected static function parseOrder($data, $map) { 39 $new = array(); 40 41 if (!is_array($data)) 42 $data = array($data); 43 44 foreach ($data as $v) 45 if (array_key_exists($v, $map)) 46 $new[] = $map[$v]; 47 48 return $new; 49 } 50 51 52 protected static function parsejustthese($data, $map, $flip = false) { 53 54 if (!is_array($data) || count($data) <= 0) 55 return false; 56 57 if ($flip === true) 58 $map = array_flip($map); 59 60 $new = array(); 61 foreach ($data as $v) 62 if (array_key_exists($v, $map)) 63 $new[] = $map[$v]; 64 return $new; 65 } 66 67 protected static function parserCristeria($criteria, $map) { 68 if (isset($criteria['filter'])) 69 $criteria['filter'] = self::parseFilter($criteria['filter'], $map); 70 71 if (isset($criteria['order'])) { 72 $ord = self::parseOrder($criteria['order'], $map); 73 if (count($ord) > 0) 74 $criteria['order'] = $ord; 75 else 76 unset($criteria['order']); 77 } 78 79 return $criteria; 80 } 81 3 class Helpers { 82 4 83 5 public static function futureEvent( $startTime , $rangeEnd ) -
trunk/prototype/modules/calendar/interceptors/LDAPMapping.php
r5341 r5437 4 4 5 5 class LDAPMapping extends Helpers { 6 7 //externalUser8 static $usertMap = array( 'id' => 'uidnumber',9 'name' => 'cn',10 'mail' => 'mail',11 'mailAlternateAddress' => 'mailalternateaddress');12 13 14 public function decodeReadUser( &$uri , &$result , &$criteria , $original ){15 $result = self::parseConcept( $result , self::$usertMap , true );16 }17 6 18 7 public function encodeFindUser( &$uri , &$params , &$criteria , $original ){ … … 37 26 ), 38 27 array('OR', 39 array('*',' cn',$criteria['filter'][2]),28 array('*','name',$criteria['filter'][2]), 40 29 array('*','givenName',$criteria['filter'][2]), 41 30 array('*','uid',$criteria['filter'][2]), … … 47 36 ) 48 37 ); 49 else50 $criteria['filter'] = self::parseFilter($criteria['filter'], self::$usertMap);51 38 } 52 39 53 40 } 54 55 /* 56 * ex: array ( 57 * [0] 'OR', 58 * [1] array( 'OR', array( array( '=', 'campo', 'valor' ) ), 59 * [2] array( '=', 'campo' , 'valor' ), 60 * [3] array( 'IN', 'campo', array( '1' , '2' , '3' ) ) 61 * ) 62 * OR 63 * array( '=' , 'campo' , 'valor' ) 64 */ 65 66 public function decodeFindUser( &$uri , &$result , &$criteria , $original ){ 67 foreach ($result as $i => $v) 68 $result[$i] = self::parseConcept( $v , self::$usertMap , true ); 69 70 } 71 41 72 42 } 73 43 -
trunk/prototype/modules/calendar/interceptors/Notifications.php
r5399 r5437 21 21 { 22 22 if(Config::regGet('noAlarm') !== false) return; //Escapa notificações caso a flag de noAlarm esteja ativa. 23 23 24 24 $organizers = array(); //Cache Organizadores 25 25 $schedulables = array(); //Cache Schedulables
Note: See TracChangeset
for help on using the changeset viewer.