Ignore:
Timestamp:
05/28/12 21:17:51 (12 years ago)
Author:
acoutinho
Message:

Ticket #2795 - Problema ao tentar aceitar convite da agenda para a conta compartilhada

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/prototype/services/iCal.php

    r6321 r6331  
    243243 
    244244                            if ($schedulable) { //Caso o evento exista 
    245                                 if (!self::_existInMyCalendars($schedulable['id'])) { 
     245                                if (!self::_existInMyCalendars($schedulable['id'], $params['owner'])) { 
    246246                                    $calendarToSchedulable = array(); 
    247247                                    $calendarToSchedulable['calendar'] = $params['calendar']; 
     
    250250     
    251251                                    if (isset($params['status'])) { 
    252                                         if(isset($params['fromPermission'])){                                        
    253                                             $signaturesOfOwner = Controller::Read(array('concept' => 'calendarSignature'), false, array('filter' => array('AND', array('=', 'calendar', $params['fromPermission']) , array('=','isOwner','1')), 'deepness' => 2 ));                                          
    254                                             $pID = self::_getParticipantByMail($signaturesOfOwner[0]['user']['mail'], $schedulable['participants']); 
     252                                        if($params['owner'] != Config::me("uidNumber")){                                             
     253                                            $user = Controller::Read(array('concept' => 'user'), false, array('filter' => array('=', 'id', $params['owner'])) );                                             
     254                                            $pID = self::_getParticipantByMail($user[0]['mail'], $schedulable['participants']); 
    255255                                        }else 
    256256                                            $pID = self::_getParticipantByMail(Config::me('mail'), $schedulable['participants']); 
     
    269269 
    270270                                    if (isset($params['status'])) { 
    271                                         if(isset($params['fromPermission'])){                                        
    272                                             $signaturesOfOwner = Controller::Read(array('concept' => 'calendarSignature'), false, array('filter' => array('AND', array('=', 'calendar', $params['fromPermission']) , array('=','isOwner','1')), 'deepness' => 2 )); 
    273                                             $pID = self::_getParticipantByMail($signaturesOfOwner[0]['user']['mail'], $schedulable['participants']); 
     271                                        if($params['owner'] != Config::me("uidNumber")){                                             
     272                                           $user = Controller::Read(array('concept' => 'user'), false, array('filter' => array('=', 'id', $params['owner'])) );                                      
     273                                            $pID = self::_getParticipantByMail($user[0]['mail'], $schedulable['participants']); 
    274274                                        }else 
    275275                                            $pID = self::_getParticipantByMail(Config::me('mail'), $schedulable['participants']); 
     
    478478 
    479479                                $schedulable = self::_getSchedulable($uid); 
    480                                 $params['calendar'] = self::_existInMyCalendars($schedulable['id']); 
     480                                $params['calendar'] = self::_existInMyCalendars($schedulable['id'], $params['owner']); 
    481481 
    482482                                $interation = self::_makeCOUNTER($schedulable, $component, $params); 
     
    503503                                $interation = self::_makeVEVENT($schedulable, $component, $params); 
    504504 
    505                                 if (!self::_existInMyCalendars($schedulable['id'])) { 
     505                                if (!self::_existInMyCalendars($schedulable['id'], $params['owner'])) { 
    506506                                    $calendarToSchedulable = array(); 
    507507                                    $calendarToSchedulable['calendar'] = $params['calendar']; 
     
    527527            } 
    528528        } 
    529  
    530529        return $return; 
    531530    } 
     
    558557 
    559558                                foreach ($schedulable['participants'] as $value) 
    560                                     if ($value['user']['id'] == Config::me('uidNumber')) { 
     559                                    if ($value['user']['id'] == $params['owner']) { 
    561560                                        $isParticipant = true; 
    562561                                        if ($value['isOrganizer']) 
    563562                                            $isOrganizer = true; 
    564563 
    565                                         if (!self::_existInMyCalendars($schedulable['id'])) { 
     564                                        if (!self::_existInMyCalendars($schedulable['id'], $params['owner'])) { 
    566565                                            $interation = ICAL_ACTION_UPDATE; 
    567566                                            $interation = ( strrpos($value['acl'], ATTENDEE_ACL_PARTICIPATION_REQUIRED) ) ? ICAL_ACTION_IMPORT_REQUIRED : ICAL_ACTION_IMPORT; 
     
    579578                            }else 
    580579                                $interation = ICAL_ACTION_IMPORT; 
     580                             
     581                            if(($interation != ICAL_ACTION_NONE) && ($interation != ICAL_ACTION_ORGANIZER_NONE) && ($interation != ICAL_ACTION_ORGANIZER_UPDATE) && ($interation != ICAL_ACTION_NONE)) { 
     582                                if($params['owner'] != Config::me("uidNumber")){ 
     583                                    $sig = Controller::find(array('concept' => 'calendarSignature'), array('calendar'), array('filter' => array('AND', array('=', 'user', $params['owner']), array('=', 'isOwner', '1')))); 
     584                                    $calendars = array(); 
     585                                    foreach ($sig as $val) 
     586                                        $calendars[] = $val['calendar']; 
     587                                 
     588                                    $calendarsPermission = Controller::find(array('concept' => 'calendarToPermission'), array('calendar'), array('filter' => array('AND', array('=', 'user', Config::me("uidNumber")), array('IN', 'calendar', $calendars))));    
     589                                     
     590                                    foreach ($calendarsPermission as $val) 
     591                                        $ids[] = $val['calendar']; 
     592 
     593                                    $interation = array('action' => ICAL_ACTION_IMPORT_FROM_PERMISSION ,'calendar' => $ids); 
     594                                } 
     595                            } 
    581596 
    582597                            break; 
     
    675690                    $eventoFromCalendar = Controller::read( array( 'concept' => 'calendarToSchedulable') , false, array('filter' => array('AND', array('=','schedulable',$schedulable['id']), array('=','calendar', $value['calendar']['id'])))); 
    676691 
    677                     return  ($eventoFromCalendar && isset($eventoFromCalendar[0])) ? ICAL_ACTION_NONE_FROM_PERMISSION : array('action' => ICAL_ACTION_IMPORT_FROM_PERMISSION, 'calendar' => $value['calendar']['id'] ); 
     692                    return  ($eventoFromCalendar && isset($eventoFromCalendar[0])) ? ICAL_ACTION_NONE_FROM_PERMISSION : array('action' => ICAL_ACTION_IMPORT_FROM_PERMISSION, 'calendar' => array($value['calendar']['id']) ); 
    678693                } 
    679694            }     
     
    10641079    } 
    10651080 
    1066     static private function _existInMyCalendars($id) { 
    1067         $sig = Controller::find(array('concept' => 'calendarSignature'), array('user', 'calendar', 'isOwner'), array('filter' => array('AND', array('=', 'user', Config::me('uidNumber')), array('=', 'isOwner', '1')))); 
     1081    static private function _existInMyCalendars($id, $owner) { 
     1082        $sig = Controller::find(array('concept' => 'calendarSignature'), array('user', 'calendar', 'isOwner'), array('filter' => array('AND', array('=', 'user', $owner), array('=', 'isOwner', '1')))); 
    10681083        $calendars = array(); 
    10691084        foreach ($sig as $val) 
Note: See TracChangeset for help on using the changeset viewer.