Changeset 6344
- Timestamp:
- 05/29/12 17:05:46 (12 years ago)
- Location:
- trunk/prototype
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/prototype/modules/calendar/interceptors/DBMapping.php
r6331 r6344 202 202 $lastExceptions = Controller::find(array('concept' => 'repeatOccurrence'), array("occurrence"), array('filter' => array('AND', array('=', 'repeat', $id), array('=', 'exception', 1)))); 203 203 204 //Recurepa as exece ções anteriores caso exista204 //Recurepa as execeções anteriores caso exista 205 205 if (isset($lastExceptions) && count($lastExceptions) && $lastExceptions) 206 206 foreach ($lastExceptions as $key => $value) … … 323 323 return( array() ); 324 324 325 //Nao deve ser usando o hor ário da repeticao pois nela contem apenas o dias,326 //deve se recuperar o hor ário do evento para um correto calculo.325 //Nao deve ser usando o horário da repeticao pois nela contem apenas o dias, 326 //deve se recuperar o horário do evento para um correto calculo. 327 327 if (max($start, $repeat['startTime']) != $repeat['startTime']) { 328 328 $time = new DateTime('@' . (int) ( $repeat['startTime'] / 1000 ), new DateTimeZone('UTC')); … … 362 362 $u = $result->format('U') * 1000; 363 363 364 if ($u > $end) //data da repeti ção atual maior que a data final da busca do usuario ?364 if ($u > $end) //data da repetição atual maior que a data final da busca do usuario ? 365 365 break; 366 366 … … 628 628 $result[$i]['calendar'] = Controller::read(array('concept' => 'calendar', 'id' => $v['calendar']), false, false); 629 629 $result[$i]['defaultAlarms'] = Controller::find(array('concept' => 'calendarSignatureAlarm'), false, array('filter' => array('=', 'calendarSignature', $v['id']))); 630 //Caso n ão seja o dono da agenda retorna o objeto permission com as acls630 //Caso nï¿œo seja o dono da agenda retorna o objeto permission com as acls 631 631 if ($result[$i]['isOwner'] == 0) { 632 632 $permission = Controller::find(array('concept' => 'calendarToPermission'), false, array('filter' => array('AND', array('=', 'calendar', $v['calendar']), array('=', 'user', Config::me('uidNumber'))))); … … 712 712 } 713 713 } 714 714 715 static private function countMyCalendarsEvent($id, $owner) { 716 $sig = Controller::find(array('concept' => 'calendarSignature'), array('user', 'calendar', 'isOwner'), array('filter' => array('AND', array('=', 'user', $owner), array('=', 'isOwner', '1')))); 717 $calendars = array(); 718 foreach ($sig as $val) 719 $calendars[] = $val['calendar']; 720 721 $return = Controller::find(array('concept' => 'calendarToSchedulable'), null, array('filter' => array('AND', array('IN', 'calendar', $calendars), array('=', 'schedulable', $id)))); 722 723 return (isset($return[0])) ? count($return) : 0; 724 } 725 715 726 public function deleteSchedulable(&$uri, &$params, &$criteria, $original) { 716 717 if (Config::module('useCaldav', 'expressoCalendar')) 727 if (Config::module('useCaldav', 'expressoCalendar')) 718 728 require_once ROOTPATH . '/modules/calendar/interceptors/DAViCalAdapter.php'; 719 720 if(isset($criteria['filter']) && $criteria['filter'] && isset($criteria['filter'][1][2])){ 721 $idSchedulable = $criteria['filter'][1][2]; 722 $idCalendar = $criteria['filter'][2][2]; 723 724 if(!self::ownerSchedulable($idSchedulable, $criteria['filter'][3][2])){ 725 $isPermissionFromOwner = self::permissionFromCalendarSignature($idCalendar, $idSchedulable); 726 727 if($isPermissionFromOwner){ 728 Controller::delete(array('concept' => 'schedulable', 'id' => $idSchedulable)); 729 730 }else{ 731 $calendarsToSchedulable = self::schedulable2calendarToObject($idSchedulable); 732 733 foreach($calendarsToSchedulable as $value) 734 if($value['calendar_id'] == $idCalendar){ 735 736 $participant = Controller::read(array('concept' => 'participant'), array('id'), array('filter' => 737 array('AND', 738 array('=', 'user', $criteria['filter'][3][2]), 739 array('=', 'schedulable', $idSchedulable) 740 ))); 741 742 Controller::call(('update'), array('concept' => 'participant', 'id' => $participant[0]['id']), array('status' => STATUS_CANCELLED)); 743 Controller::delete(array('concept' => 'calendarToSchedulable', 'id' => $value['calendar_to_calendar_object'])); 744 break; 745 } 746 } 747 return false; 748 } 749 750 $uri['id'] = $idSchedulable; 751 } 752 753 $calendarsToSchedulable = self::schedulable2calendarToObject($uri['id']); 754 755 if (!self::ownerSchedulable($uri['id'], Config::me('uidNumber')) && !self::isAllowDeleteInCalendar($calendarsToSchedulable[0]['calendar_id'])) { 756 757 foreach ($calendarsToSchedulable as $i => $v) { 758 Controller::delete(array('concept' => 'calendarToSchedulable', 'id' => $v['calendar_to_calendar_object'])); 759 760 if (Config::module('useCaldav', 'expressoCalendar')) 761 DAViCalAdapter::deleteEvent($uri['id'], array('location' => $v['calendar_location'])); 762 } 763 764 /* Seta o participante como rejeitado */ 765 $participant = Controller::read(array('concept' => 'participant'), array('id'), array('filter' => 766 array('AND', 767 array('=', 'user', Config::me('uidNumber')), 768 array('=', 'schedulable', $idSchedulable) 769 ))); 770 771 Controller::call(('update'), array('concept' => 'participant', 'id' => $participant[0]['id']), array('status' => STATUS_CANCELLED)); 772 773 return false; /* Mata o restante da execução */ 774 } 775 776 if (Config::module('useCaldav', 'expressoCalendar')) 777 foreach ($calendarsToSchedulable as $i => $v) 778 DAViCalAdapter::deleteEvent($uri['id'], array('location' => $v['calendar_location'])); 729 730 if(isset($criteria['filter']) && $criteria['filter'] && isset($criteria['filter'][1][2])){ 731 $idSchedulable = $criteria['filter'][1][2]; 732 $idCalendar = $criteria['filter'][2][2]; 733 $owner = $criteria['filter'][3][2]; 734 735 $qtdMyCalendars = self::countMyCalendarsEvent($idSchedulable, $owner); 736 737 $link = Controller::read(array('concept' => 'calendarToSchedulable'), false, array('filter' => array('AND', array('=','calendar',$idCalendar), array('=','schedulable',$idSchedulable)))); 738 $link = (is_array($link) && isset($link[0])) ? $link[0] : $link; 739 740 $calendar = Controller::read(array('concept' => 'calendar'), false, array('filter' => array('=','id',$idCalendar))); 741 $calendar = (is_array($calendar) && isset($calendar[0])) ? $calendar[0] : $calendar; 742 743 if($isAttende = !self::ownerSchedulable($idSchedulable, $owner)){ 744 Controller::delete(array('concept' => 'calendarToSchedulable', 'id' => $link['id'])); 745 746 if($qtdMyCalendars <= 1){ 747 748 $participant = Controller::read(array('concept' => 'participant'), array('id'), array('filter' => 749 array('AND', 750 array('=', 'user', $owner), 751 array('=', 'schedulable', $idSchedulable) 752 ))); 753 754 Controller::call(('update'), array('concept' => 'participant', 'id' => $participant[0]['id']), array('status' => STATUS_CANCELLED)); 755 } 756 757 }else{ 758 if($qtdMyCalendars > 1 ) 759 Controller::delete(array('concept' => 'calendarToSchedulable', 'id' => $link['id'])); 760 } 761 762 if (Config::module('useCaldav', 'expressoCalendar')) 763 DAViCalAdapter::deleteEvent($idSchedulable, array('location' => $calendar['location'])); 764 765 if($isAttende || ($qtdMyCalendars > 1)) 766 return false; 767 768 $uri['id'] = $idSchedulable; 769 } 770 779 771 } 780 772 … … 829 821 public function createDefaultSignature(&$uri, &$result, &$criteria, $original) { 830 822 831 //Caso uma busca n ão retorne nenhum resultado e foi buscado pelas assinaturas do usuario logado apenas823 //Caso uma busca não retorne nenhum resultado e foi buscado pelas assinaturas do usuario logado apenas 832 824 $isValidSignature = false; 833 825 834 //Veirifica pois o usu ário pode ter varias assinaturas mas não ser dona de nenhuma826 //Veirifica pois o usuário pode ter varias assinaturas mas não ser dona de nenhuma 835 827 if (count($result) > 0) { 836 828 foreach ($result as $value) { … … 883 875 } 884 876 } else { 885 //Criaremos uma agenda padr ão877 //Criaremos uma agenda padrï¿œo 886 878 $cal = array('name' => 'Calendario', 887 'description' => 'Calendario Padr ão',879 'description' => 'Calendario Padrï¿œo', 888 880 'timezone' => (date_default_timezone_get()) ? date_default_timezone_get() : 'America/Sao_Paulo', 889 881 'dtstamp' => time() . '000' … … 1012 1004 } 1013 1005 1014 private static function permissionFromCalendarSignature($idCalendar, $idEvent) {1015 $signature = Controller::find(array('concept' => 'calendarSignature'), false, array( 'filter' => array('AND', array('=', 'calendar', $idCalendar), array('=', 'isOwner', '1')), 'deepness' => 2));1016 1017 $signature = is_array($signature) ? $signature[0] : $signature;1018 1019 if($signature['user']['id'] == Config::me('uidNumber')){1020 return false;1021 }else{1022 $isOwner = Controller::find(array('concept' => 'participant'), array('id'), array('filter' =>1023 array('AND',1024 array('=', 'isOrganizer', '1'),1025 array('=', 'user', $signature['user']['id']),1026 array('=', 'schedulable', $idEvent)1027 )));1028 1029 return ( isset($isOwner[0]['id']) ) ? true : false;1030 }1031 }1032 1033 1034 1006 private static function ownerSchedulable($id, $me) { 1035 1007 -
trunk/prototype/services/iCal.php
r6331 r6344 235 235 switch ($method) { 236 236 case 'PUBLISH': 237 if (!$schedulable = self::_getSchedulable($uid)) 237 //Caso o evento não exista o mesmo cria um novo evento, se já existir o mesmo referencia o evento com agenda 238 if (!$schedulable = self::_getSchedulable($uid)) 238 239 $interation = self::_makeVEVENT($schedulable, $component, $params); 240 else{ 241 $links = Controller::read(array('concept' => 'calendarToSchedulable'), array('id'), array('filter' => 242 array('AND', 243 array('=', 'calendar', $params['calendar']), 244 array('=', 'schedulable', $schedulable['id']) 245 ))); 246 247 if(!$links && !isset($links[0])) 248 Controller::create(array('concept' => 'calendarToSchedulable'), array('calendar' => $params['calendar'], 'schedulable' => $schedulable['id'])); 249 250 } 239 251 break; 240 252 … … 791 803 792 804 static private function _makeVEVENT($schedulable, $component, $params) { 793 794 805 $interation = array(); 795 806 $eventID = isset($schedulable['id']) ? $schedulable['id'] : mt_rand() . '(Formatter)';
Note: See TracChangeset
for help on using the changeset viewer.