Ignore:
Timestamp:
05/23/12 17:11:17 (12 years ago)
Author:
acoutinho
Message:

Ticket #2479 - Iconsistencia ao remover evento de duas agendas simultaneas

File:
1 edited

Legend:

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

    r6250 r6286  
    560560    public function deepnessReadParticipant( &$uri , &$result , &$criteria , $original ){ 
    561561         
    562          
    563562       if(isset($original['criteria']['deepness']) && $original['criteria']['deepness'] != 0) 
    564563       { 
    565             if(isset($result['id'])) 
     564            if(isset($result['id']) && isset($result['user'])) 
    566565            { 
    567566                $result['user'] = Controller::read( array( 'concept' => 'user' , 'id' => $result['user'] , 'service' => ( $result['isExternal'] == 1 ? 'PostgreSQL' : 'OpenLDAP' ) ) ); 
     
    713712        if (Config::module('useCaldav', 'expressoCalendar')) 
    714713            require_once ROOTPATH . '/modules/calendar/interceptors/DAViCalAdapter.php'; 
     714         
     715        if(isset($criteria['filter']) && $criteria['filter'] && isset($criteria['filter'][1][2])){ 
     716            $idSchedulable = $criteria['filter'][1][2]; 
     717            $idCalendar = $criteria['filter'][2][2]; 
     718             
     719            if(!self::ownerSchedulable($idSchedulable)){ 
     720                $isPermissionFromOwner = self::permissionFromCalendarSignature($idCalendar, $idSchedulable); 
     721                 
     722                if($isPermissionFromOwner){ 
     723                    Controller::delete(array('concept' => 'schedulable', 'id' => $idSchedulable)); 
     724 
     725                }else{ 
     726                    $calendarsToSchedulable = self::schedulable2calendarToObject($idSchedulable); 
     727 
     728                    foreach($calendarsToSchedulable as $value) 
     729                        if($value['calendar_id'] == $idCalendar){ 
     730                            Controller::delete(array('concept' => 'calendarToSchedulable', 'id' => $value['calendar_to_calendar_object'])); 
     731                            break; 
     732                        } 
     733                } 
     734                return false; 
     735            } 
     736 
     737            $uri['id'] = $idSchedulable; 
     738        } 
    715739 
    716740        $calendarsToSchedulable = self::schedulable2calendarToObject($uri['id']); 
     
    973997    } 
    974998 
     999    private static function permissionFromCalendarSignature($idCalendar, $idEvent) { 
     1000        $signature = Controller::find(array('concept' => 'calendarSignature'), false, array( 'filter' => array('AND', array('=', 'calendar', $idCalendar), array('=', 'isOwner', '1')), 'deepness' => 2)); 
     1001         
     1002        $signature = is_array($signature) ? $signature[0] : $signature; 
     1003 
     1004        if($signature['user']['id'] == Config::me('uidNumber')){ 
     1005            return false; 
     1006        }else{ 
     1007           $isOwner = Controller::find(array('concept' => 'participant'), array('id'), array('filter' => 
     1008                    array('AND', 
     1009                        array('=', 'isOrganizer', '1'), 
     1010                        array('=', 'user', $signature['user']['id']), 
     1011                        array('=', 'schedulable', $idEvent) 
     1012                        ))); 
     1013 
     1014        return ( isset($isOwner[0]['id']) ) ? true : false; 
     1015        } 
     1016    } 
     1017     
     1018     
    9751019    private static function ownerSchedulable($id) { 
    9761020 
Note: See TracChangeset for help on using the changeset viewer.