Changeset 6331


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

Location:
trunk
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/expressoMail1_2/inc/class.db_functions.inc.php

    r6295 r6331  
    427427            $GLOBALS['phpgw_info']['flags']['currentapp'] = 'calendar'; 
    428428 
    429                         if($params['selected'] || $params['readable']){ 
    430                                 $user = $params['id_user']; 
     429                        if(isset($params['selected']) || isset($params['readable'])){ 
    431430                                 
    432431                                $_REQUEST['data'] = $fileContent; 
    433432                                $_REQUEST['type'] = 'iCal'; 
    434                                 $_REQUEST['params']['calendar'] = $params['selected']; 
    435                                 $_REQUEST['readable'] = $params['readable'] ? true : false; 
     433                                $_REQUEST['params']['calendar'] = isset($params['selected']) ? $params['selected'] : false; 
     434                                $_REQUEST['readable'] = (isset($params['readable']) && $params['readable']) ? true : false; 
    436435                                $_REQUEST['analize'] = isset($params['analize']) ? true : false; 
    437                                 $_REQUEST['params']['status'] = $params['status']; 
    438                                 $_REQUEST['params']['fromPermission'] = $params['fromPermission']; 
    439                                 $_REQUEST['params']['owner'] = $_SESSION['phpgw_info']['expressomail']['user']['account_id']; 
     436                                $_REQUEST['params']['status'] = isset($params['status']) ? $params['status'] : false; 
     437                                $_REQUEST['params']['owner'] = $params['uidAccount']; 
    440438                                if(isset($params['acceptedSuggestion'])){ 
    441439                                        $_REQUEST['params']['acceptedSuggestion'] = $params['acceptedSuggestion']; 
  • trunk/expressoMail1_2/js/main.js

    r6330 r6331  
    35803580    var logUser; 
    35813581    var up; 
     3582    var owner; 
     3583     
     3584    //Verifica o contexto de importação 
     3585    var decodeOwner = function(){ 
     3586         
     3587        owner = User.me.id; 
     3588        var imapBox = openTab.imapBox[currentTab].split('/'); 
     3589        if(imapBox.length > 1){ 
     3590            var user = DataLayer.get('user', {filter: ['=','uid',imapBox[1]]});              
     3591            owner = $.isArray(user) ? user[0].id : user.id; 
     3592        } 
     3593         
     3594        return owner; 
     3595    } 
     3596     
    35823597    function handler_import_calendar(data){ 
    35833598            if(data === true){ 
     
    36103625                        closeOnEscape: true 
    36113626                }); 
     3627                 
    36123628                $.ajax({ 
    3613                         url: "controller.php?action="+import_url+'&from_ajax=true&id_user='+User.me.id+'&readable=true&cirus_delimiter='+cyrus_delimiter+'&analize=true', 
     3629                        url: "controller.php?action="+import_url+'&from_ajax=true&id_user='+User.me.id+'&readable=true&cirus_delimiter='+cyrus_delimiter+'&analize=true&uidAccount='+decodeOwner(), 
    36143630                        async: false, 
    36153631                        success: function(data){ 
     
    36303646                                                    $("#select-agenda").html(''); 
    36313647 
    3632                                                     var shared = '', options = ''; 
     3648                                                    var options = ''; 
    36333649 
    36343650                                                    if(typeImport == 10){ 
    3635                                                         shared = '&fromPermission='+calendarPermission; 
    3636                                                          
    3637                                                         options += '<option value="'+calendarPermission+'">'+Calendar.signatureOf[calendarPermission].calendar.name+'</option>' 
     3651                                                        for(var i = 0; i < calendarPermission.length; i++) 
     3652                                                            options += '<option value="'+calendarPermission[i]+'">'+Calendar.signatureOf[calendarPermission[i]].calendar.name+'</option>' 
    36383653                                                    }else{ 
    3639                                                         for(var id in Calendar.calendars) 
    3640                                                            options += '<option value="'+Calendar.calendars[id].id+'">'+Calendar.calendars[id].name+'</option>'; 
    3641  
    3642                                                         $("#select-agenda").append(options); 
     3654                                                        for(var id in Calendar.signatures) 
     3655                                                           options += parseInt(Calendar.signatures[id].isOwner) ? '<option value="'+Calendar.signatures[id].calendar.id+'">'+Calendar.signatures[id].calendar.name+'</option>' : '';                                                     
    36433656                                                    } 
     3657                                                     
     3658                                                    $("#select-agenda").append(options); 
     3659                                                    $("#select-agenda").css("display", "block"); 
     3660                                                     
    36443661                                                    $("#import-dialog" ).dialog({ 
    36453662                                                        buttons: { 
     
    36493666                                                            "Importar" : function(){ 
    36503667                                                                    $.ajax({ 
    3651                                                                         url: "controller.php?action="+import_url+'&from_ajax=true&selected='+$("#select-agenda option:selected").val()+'&status='+$("#select-status option:selected").val()+shared, 
     3668                                                                        url: "controller.php?action="+import_url+'&from_ajax=true&selected='+$("#select-agenda option:selected").val()+'&status='+$("#select-status option:selected").val()+'&uidAccount='+decodeOwner(), 
    36523669                                                                        success: function(msg){ 
    36533670                                                                            var alt = ( (msg = connector.unserialize(msg)) == "ok") ? "Importado com sucesso para " : "Ocorreu um erro ao importar o evento para a agenda "; 
  • trunk/prototype/modules/calendar/interceptors/DBMapping.php

    r6299 r6331  
    373373/////////////////////////////////////////////////////////////////////////////////////////////////////////////// 
    374374 
    375     public function updateCalendar(&$uri, &$params, &$criteria, $original) { 
    376         if (isset($params['calendar'])) { 
    377             $calendarObjects = self::schedulable2calendarToObject($uri['id']); 
    378             $params2['calendar'] = $params['calendar']; 
    379  
    380             foreach ($calendarObjects as $calendarObject) 
     375    public function updateCalendar(&$uri, &$params, &$criteria, $original) {        
     376        if (isset($params['calendar'])) { 
     377            if(isset($params['lastCalendar'])){ 
     378                $calendarObjects = self::referenceCalendarToObject($uri['id'], $params['lastCalendar']); 
     379                $params2['calendar'] = $params['calendar']; 
     380            }else{ 
     381                $calendarObjects = self::schedulable2calendarToObject($uri['id']); 
     382                $params2['calendar'] = $params['calendar']; 
     383            } 
     384             
     385            foreach ($calendarObjects as $calendarObject) 
    381386                Controller::update(array('concept' => 'calendarToSchedulable', 'id' => $calendarObject['calendar_to_calendar_object']), $params2); 
    382387 
     
    717722            $idCalendar = $criteria['filter'][2][2]; 
    718723             
    719             if(!self::ownerSchedulable($idSchedulable)){ 
     724            if(!self::ownerSchedulable($idSchedulable, $criteria['filter'][3][2])){ 
    720725                $isPermissionFromOwner = self::permissionFromCalendarSignature($idCalendar, $idSchedulable); 
    721726                 
     
    727732 
    728733                    foreach($calendarsToSchedulable as $value) 
    729                         if($value['calendar_id'] == $idCalendar){ 
     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)); 
    730743                            Controller::delete(array('concept' => 'calendarToSchedulable', 'id' => $value['calendar_to_calendar_object'])); 
    731744                            break; 
     
    740753        $calendarsToSchedulable = self::schedulable2calendarToObject($uri['id']); 
    741754 
    742         if (!self::ownerSchedulable($uri['id']) && !self::isAllowDeleteInCalendar($calendarsToSchedulable[0]['calendar_id'])) { 
     755        if (!self::ownerSchedulable($uri['id'], Config::me('uidNumber')) && !self::isAllowDeleteInCalendar($calendarsToSchedulable[0]['calendar_id'])) { 
    743756 
    744757            foreach ($calendarsToSchedulable as $i => $v) { 
     
    750763 
    751764            /* Seta o participante como rejeitado */ 
    752             Controller::update(array('concept' => 'participant'), array('status' => STATUS_CANCELLED), array('filter' => 
     765            $participant = Controller::read(array('concept' => 'participant'), array('id'), array('filter' => 
    753766                array('AND', 
    754767                    array('=', 'user', Config::me('uidNumber')), 
    755                     array('=', 'schedulable', $uri['id']) 
    756                     ))); 
     768                    array('=', 'schedulable', $idSchedulable) 
     769                ))); 
     770 
     771            Controller::call(('update'), array('concept' => 'participant', 'id' => $participant[0]['id']), array('status' => STATUS_CANCELLED)); 
    757772 
    758773            return false; /* Mata o restante da execução */ 
     
    10171032     
    10181033     
    1019     private static function ownerSchedulable($id) { 
     1034    private static function ownerSchedulable($id, $me) { 
    10201035 
    10211036        $isOwner = Controller::find(array('concept' => 'participant'), array('id'), array('filter' => 
    10221037                    array('AND', 
    10231038                        array('=', 'isOrganizer', '1'), 
    1024                         array('=', 'user', $_SESSION['wallet']['user']['uidNumber']), 
     1039                        array('=', 'user', $me), 
    10251040                        array('=', 'schedulable', $id) 
    10261041                        ))); 
     
    10281043        return ( isset($isOwner[0]['id']) ) ? true : false; 
    10291044    } 
    1030  
     1045     
     1046     
     1047    private static function referenceCalendarToObject($schedulable, $calendar) { 
     1048        return Controller::service('PostgreSQL')->execResultSql('SELECT calendar_to_calendar_object.id as calendar_to_calendar_Object FROM calendar_to_calendar_object' 
     1049            . ' WHERE calendar_to_calendar_object.calendar_id = '. $calendar 
     1050            . ' AND calendar_to_calendar_object.calendar_object_id = ' . addslashes($schedulable)); 
     1051    } 
     1052     
    10311053    private static function schedulable2calendarToObject($Schedulable) { 
    10321054        return Controller::service('PostgreSQL')->execResultSql('SELECT calendar_to_calendar_object.id as calendar_to_calendar_Object , calendar.name as calendar_name ,calendar.location as calendar_location, calendar.id as calendar_id FROM calendar_to_calendar_object , calendar , calendar_signature' 
  • trunk/prototype/modules/calendar/interceptors/Notifications.php

    r6190 r6331  
    9292        if (isset($updated)) { 
    9393            $psUpdated = Controller::find(array('concept' => 'participant'), false, array('deepness' => '1', 'filter' => array('IN', 'id', $updated))); 
     94 
    9495            foreach ($psUpdated as $i => $pUpdated) { 
    9596                if ($pUpdated['isOrganizer'] == '1') 
     
    237238     */ 
    238239    public static function participantDelegatedStatusChange(&$partID, &$schedulable, $organizer, &$type = false) { 
    239  
    240240        $delegatedParams = array(); 
    241241 
     
    270270    } 
    271271 
    272     public static function mountStruture($partID, &$schedulable, $type = false, &$data, &$subject, &$ical, &$part = false, &$method, &$notificationType, $regSet = false) { 
     272    public static function mountStruture(&$partID, &$schedulable, $type = false, &$data, &$subject, &$ical, &$part = false, &$method, &$notificationType, $regSet = false) { 
    273273 
    274274        if ((Config::regGet('ical://' . $schedulable['id'] . '/' . $method) === false) || ($method == 'CANCEL')) { //Verifica se o ical ja não esta no reg 
     
    327327                $part = self::_getAttendeeById($partID, $schedulable); 
    328328                $data['participant'] = isset($part['user']['name']) ? $part['user']['name'] : $part['user']['mail']; 
     329                $partID = $part; 
    329330                break; 
    330331            case 'othersAttendees': 
     
    344345        $subject['endDate'] = date_format($eTime, 'd/m/Y'); 
    345346        $subject['endTime'] = ($schedulable['allDay']) ? '' : date_format($eTime, 'H:i'); 
    346         $subject['participant'] = Config::me('uid'); 
     347        $subject['participant'] = (is_array($partID) && isset($partID['user']) )? $partID['user']['uid'] : Config::me('uid'); 
    347348    } 
    348349 
     
    379380     * @access     public 
    380381     */ 
    381     public static function participantStatusChange(&$partID, &$schedulable, &$organizer, $type, $delegatedParams = false) { 
     382    public static function participantStatusChange(&$partID, &$schedulable, &$organizer, $type, $delegatedParams = false) {      
    382383        $method = 'REPLY'; 
    383384        $notificationType = 'Convite Aceito'; 
     
    412413        } 
    413414 
    414         self::sendMail($data, $ical, $organizer['user']['mail'], $subject, $tpl, false); 
     415        self::sendMail($data, $ical, $organizer['user']['mail'], $subject, $tpl, $partID); 
    415416    } 
    416417 
  • trunk/prototype/modules/calendar/js/calendar.codecs.js

    r6300 r6331  
    153153        delete DataLayer.tasks[this.clookRefresh]; 
    154154         
    155         this.clookRefresh = (parseInt(($.now()) / 1000) + this.timeRefresh); 
    156          
    157         DataLayer.task( this.clookRefresh , function(){ 
    158             Calendar.rerenderView(true); 
    159         }); 
    160  
     155        //Realiza agendamentos de atualização de view somente se o módulo aberto for expressoCalendar 
     156        if(User.moduleName == "expressoCalendar"){ 
     157            this.clookRefresh = (parseInt(($.now()) / 1000) + this.timeRefresh); 
     158 
     159            DataLayer.task( this.clookRefresh , function(){ 
     160                Calendar.rerenderView(true); 
     161            }); 
     162        } 
    161163    } 
    162164} 
     
    516518        var pref = User.preferences; 
    517519                 
    518         var Owner = decodeOwnerCalendar(evtObj.calendar);        
     520        var Owner = decodeOwnerCalendar(evtObj[0].calendar);     
    519521 
    520522        var res = $.map(evtObj, function( form ){ 
    521523                         
    522             return { 
     524            return DataLayer.merge({ 
    523525                id: form.idEvent, 
    524                 calendar: form.calendar, 
    525526                participants : $.map(form.attendee, function( attendee, i ){ 
    526527                    if(isNaN(attendee)){ 
     
    536537                        if(DataLayer.get('participant', attendee).user == Owner.id){ 
    537538                            var me = { 
    538                                 user: User.id, 
     539                                user: Owner.id, 
    539540                                status: form.status, 
    540541                                id: attendee, 
     
    580581                    }; 
    581582                }) 
    582             } 
     583            }, (Owner.id == User.me.id) ? (form.calendar != form.lastCalendar ? {calendar: form.calendar, lastCalendar: form.lastCalendar} : {}) : {}) 
    583584        }); 
    584585        return notArray ? res[0] : res; 
     
    641642                attachments: $.map(objEvent.attachments || [], function( attachment, i ){ 
    642643                    var attach = DataLayer.get('schedulableToAttachment', attachment, false); 
    643                     //TODO - Verificar na API retorno de id sobre os conceitos em que são utilizados tabelas de ligação 
     644                    //TODO - Verificar na API retorno de id sobre os conceitos em que s?o utilizados tabelas de liga??o 
    644645                    if(!attach.name) return(null);  
    645646                     
     
    838839            var Owner = decodeOwnerCalendar(form.calendar); 
    839840 
    840             return { 
     841            return DataLayer.merge({ 
    841842                "class": form["class"], 
    842843                startTime: Date.parseExact(form.startDate + (!!form.allDay ? " 00:00": " "+$.trim(form.startHour)) , formatString ).toString('yyyy-MM-dd HH:mm:00'), 
     
    846847                location: form.location, 
    847848                category: form.category, 
    848                 calendar: form.calendar, 
    849849                summary: form.summary, 
    850850                description: form.description, 
     
    901901                    }; 
    902902                }) 
    903             }; 
     903            }, form.lastCalendar ? (( form.lastCalendar == form.calendar ) ? {} : {calendar: form.calendar, lastCalendar: form.lastCalendar}) : {calendar: form.calendar}); 
    904904        }); 
    905905 
  • trunk/prototype/modules/calendar/js/helpers.js

    r6286 r6331  
    623623    $(this).parent().remove().find('li').is(':empty'); 
    624624}); 
    625                  
    626 /*Seleciona a agenda padrão para criação de um evento*/ 
    627  
    628 if(objEvent.calendar != undefined) 
    629     var selectedCalendar = objEvent.calendar; 
    630 else 
    631     var selectedCalendar = User.preferences.defaultCalendar; 
    632  
    633 UI.dialogs.addEvent.find('option[value="'+selectedCalendar+'"]').attr('selected','selected').trigger('change'); 
     625 
     626var myCalendar = function(){ 
     627        for(var i in Calendar.signatures) 
     628            if(Calendar.signatures[i].isOwner == "1") 
     629                return Calendar.signatures[i].calendar.id; 
     630} 
    634631                 
    635632/*Adicionar alarms padrões, quando alterado a agenda do usuário*/                
     
    691688    .filter('.mail').html(User.me.mail).attr('title',User.me.mail); 
    692689} 
    693                          
    694                          
    695                          
    696                          
    697690}); 
    698                  
     691 
    699692/*Checkbox adicionar alarms padrões*/ 
    700693UI.dialogs.addEvent.find('input[name="defaultAlarm"]').click(function(){ 
     
    781774                canDiscardEventDialog = true; 
    782775                /* Remove por filtro */ 
    783                 DataLayer.removeFilter('schedulable', {filter: ['AND', ['=', 'id', objEvent.id], ['=', 'calendar', objEvent.calendar]]}); 
     776                DataLayer.removeFilter('schedulable', {filter: ['AND', ['=', 'id', objEvent.id], ['=', 'calendar', objEvent.calendar], ['=','user',(objEvent.me.user ? objEvent.me.user.id : objEvent.me.id)]]}); 
    784777                Calendar.rerenderView(true); 
    785778                /********************/ 
     
    15101503 
    15111504disponibily(objEvent, path, attendees); 
    1512           
     1505 
     1506/*Seleciona a agenda padrão para criação de um evento*/ 
     1507var selectedCalendar = (objEvent.calendar != undefined) ? objEvent.calendar : (User.preferences.defaultCalendar ? User.preferences.defaultCalendar : myCalendar()); 
     1508UI.dialogs.addEvent.find('option[value="'+selectedCalendar+'"]').attr('selected','selected').trigger('change'); 
     1509 
    15131510UI.dialogs.addEvent.find(':input').change(function(event){ 
    15141511    if (event.keyCode != '27' && event.keyCode != '13') 
     
    19151912        'onClose':  function(clicked) { 
    19161913            if(clicked == 'Sim'){ 
    1917                 DataLayer.removeFilter('schedulable', {filter: ['AND', ['=','id',eventId], ['=','calendar',idCalendar]]}) 
     1914 
     1915                var schedulable = DataLayer.get('schedulable', '88'); 
     1916                 
     1917                schedulable.calendar = idCalendar; 
     1918                 
     1919                var schudableDecode = DataLayer.encode( "schedulable:preview", schedulable); 
     1920                var me = schudableDecode.me.user ? schudableDecode.me.user.id : schudableDecode.me.id; 
     1921 
     1922                DataLayer.removeFilter('schedulable', {filter: ['AND', ['=','id',eventId], ['=','calendar',idCalendar], ['=','user', me]]}) 
    19181923                Calendar.rerenderView(true); 
    19191924            } 
     
    26352640 
    26362641    var schedulable = DataLayer.get('schedulable', event+''); 
    2637          
     2642         
    26382643    calendar = !!calendar ? calendar : schedulable.calendar; 
    26392644         
     
    26442649    if(parseInt(type) == 0){ 
    26452650                 
    2646         schedulable.calendar = calendar;         
     2651        schedulable.lastCalendar = schedulable.calendar; 
     2652        schedulable.calendar = calendar;         
    26472653        DataLayer.put('schedulable', schedulable); 
    26482654         
  • trunk/prototype/modules/calendar/templates/event_add.ejs

    r6302 r6331  
    88                        <% if( data.event.id ){ %> 
    99                                <input type="hidden" class="id-event" name="idEvent" value="<%= data.event.id %>"/> 
     10                        <% } %> 
     11                        <% if( data.event.calendar ){ %> 
     12                                <input type="hidden" class="last-calendar" name="lastCalendar" value="<%= data.event.calendar %>"/> 
    1013                        <% } %> 
    1114                </p> 
  • 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.