Ignore:
Timestamp:
04/10/12 17:27:27 (12 years ago)
Author:
cristiano
Message:

Ticket #2606 - Syncronização das acls e compartilhamentos com caldav

File:
1 edited

Legend:

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

    r5481 r5907  
    11<?php 
     2require_once ROOTPATH.'/modules/calendar/constants.php'; 
    23 
    34class DAViCalAdapter {  
     
    2930            if($concept['concept'] === 'calendarToSchedulable') 
    3031            { 
    31                 if(Config::module('useCaldav')) 
     32                if(Config::module('useCaldav' , 'expressoCalendar')) 
    3233                {       
    3334                    ob_start(); 
     
    3839                        $calendar =  Controller::read( array( 'concept' => 'calendar' , 'id' => $calendarToschedulable['calendar'] ),array('timezone','name','location')); 
    3940                        $ical = Controller::format( array( 'service' => 'iCal' ) , array($schedulable) , array('defaultTZI' => $calendar['timezone']));           
    40                         DAViCalAdapter::putIcal($ical , array('uid' => $schedulable['uid'] , 'collection' => $calendar['location'] )); 
     41                        DAViCalAdapter::putIcal($ical , array('uid' => $schedulable['uid'] , 'location' => $calendar['location'] )); 
    4142                    } 
    4243                    ob_end_clean(); 
     
    4748    }  
    4849     
     50    public function createCollectionACL(&$uri ,&$params , &$criteria , $original) 
     51    {       
     52        if( Config::module('useCaldav' , 'expressoCalendar') ) 
     53        { 
     54            $calendar = Controller::read( array( 'concept' => 'calendar' , 'id' => $params['calendar'] )); 
     55             
     56            if($params['user'] !== '0') 
     57            { 
     58                $user = Controller::read( array( 'concept' => 'user' , 'id' => $params['user'] )); 
     59                $xmUser =   '<D:href>'.Config::service( 'CalDAV' , 'url' ).'/'.$user['uid'].'/</D:href>'; 
     60            } 
     61            else 
     62                $xmUser =   '<D:authenticated/>'; 
     63 
     64            $xml ="<?xml version=\"1.0\" encoding=\"utf-8\" ?> 
     65                   <D:acl xmlns:D=\"DAV:\"> 
     66                     <D:ace> 
     67                       <D:principal> 
     68                        ".$xmUser." 
     69                       </D:principal> 
     70                       <D:grant> 
     71                        ".self::acltToXML($params['acl'])." 
     72                       </D:grant> 
     73                     </D:ace> 
     74                    </D:acl>";   
     75             
     76            ob_start(); 
     77            require_once ROOTPATH.'/plugins/davicalCliente/caldav-client-v2.php'; 
     78            $cal = new CalDAVClient( Config::service( 'CalDAV' , 'url' ).'/'.$calendar['location'].'/', Config::me( 'uid' ), Config::me( 'password' )); 
     79            $cal->DoXMLRequest('ACL', $xml); 
     80            ob_end_clean(); 
     81        } 
     82    } 
     83     
     84    public function updateCollectionACL(&$uri ,&$params , &$criteria , $original) 
     85    {       
     86        if( Config::module('useCaldav' , 'expressoCalendar') ) 
     87        {     
     88            $permision = Controller::read( array( 'concept' => 'calendarToPermission' , 'id' => $params['id'] )); 
     89            $calendar = Controller::read( array( 'concept' => 'calendar' , 'id' => $permision['calendar'] )); 
     90             
     91            if($permision['user'] !== '0') 
     92            { 
     93                $user = Controller::read( array( 'concept' => 'user' , 'id' => $permision['user'] )); 
     94                $xmUser =   '<D:href>'.Config::service( 'CalDAV' , 'url' ).'/'.$user['uid'].'/</D:href>'; 
     95            } 
     96            else 
     97                $xmUser =   '<D:authenticated/>'; 
     98 
     99                $xml ="<?xml version=\"1.0\" encoding=\"utf-8\" ?> 
     100                       <D:acl xmlns:D=\"DAV:\"> 
     101                         <D:ace> 
     102                           <D:principal> 
     103                            ".$xmUser." 
     104                           </D:principal> 
     105                           <D:grant> 
     106                            ".self::acltToXML($params['acl'])." 
     107                           </D:grant> 
     108                         </D:ace> 
     109                        </D:acl>"; 
     110             
     111            ob_start(); 
     112            require_once ROOTPATH.'/plugins/davicalCliente/caldav-client-v2.php'; 
     113            $cal = new CalDAVClient( Config::service( 'CalDAV' , 'url' ).'/'.$calendar['location'].'/', Config::me( 'uid' ), Config::me( 'password' )); 
     114            $cal->DoXMLRequest('ACL', $xml); 
     115            ob_end_clean(); 
     116             
     117        } 
     118    } 
     119     
     120    private static function acltToXML($acls) 
     121    { 
     122        $array = array(); 
     123        $acls = str_split($acls); 
     124         
     125        foreach ($acls as &$acl) 
     126            switch ($acl)  
     127            { 
     128                case CALENDAR_ACL_WRITE: 
     129                    $array[] = "<D:privilege><D:bind/></D:privilege>"; 
     130                    $array[] = "<D:privilege><D:write-properties/></D:privilege>"; 
     131                    $array[] = "<D:privilege><D:write-content/></D:privilege>"; 
     132                    $array[] = "<D:privilege><D:unlock/></D:privilege>"; 
     133                    $array[] = "<D:privilege><D:schedule-deliver/></D:privilege>"; 
     134                    $array[] = "<D:privilege><D:schedule-send/></D:privilege>"; 
     135                    break; 
     136                case CALENDAR_ACL_READ: 
     137                    $array[] = "<D:privilege><D:read /></D:privilege>"; 
     138                    $array[] = "<D:privilege><D:schedule-query-freebusy /></D:privilege>"; 
     139                    $array[] = "<D:privilege><D:read-free-busy /></D:privilege>"; 
     140                    break; 
     141                case CALENDAR_ACL_REMOVE: 
     142                    $array[] = "<D:privilege><D:unbind/></D:privilege>"; 
     143                    break; 
     144                case CALENDAR_ACL_SHARED: 
     145                    $array[] = "<D:privilege><D:write-acl/></D:privilege>"; 
     146                    $array[] = "<D:privilege><D:read-acl/></D:privilege>"; 
     147                    $array[] = "<D:privilege><D:read-current-user-privilege-set/></D:privilege>"; 
     148                    break; 
     149                case CALENDAR_ACL_BUSY: 
     150                    $array[] = "<D:privilege><D:schedule-query-freebusy/></D:privilege>"; 
     151                    $array[] = "<D:privilege><D:read-free-busy/></D:privilege>"; 
     152                    break; 
     153            }       
     154        return implode("\n", $array); 
     155    } 
    49156     
    50157    static function import($data , $params = false) 
     
    157264             
    158265            if(!is_array(self::$deleted) || !in_array($event['uid'], self::$deleted)) 
    159                 self::deleteIcal($event['uid'] , array('uid' => $event['uid'] , 'collection' => $params['calendar'] )); 
     266                self::deleteIcal($event['uid'] , array('uid' => $event['uid'] , 'location' => $params['location'] )); 
    160267 
    161268    } 
     
    165272      ob_start(); 
    166273      require_once ROOTPATH.'/plugins/davicalCliente/caldav-client-v2.php'; 
    167       $cal = new CalDAVClient( Config::service( 'CalDAV' , 'url' ).'/'.Config::me( 'uid' ).'/'.$params['collection'].'/', Config::me( 'uid' ), $_SESSION['wallet']['user']['password'] ); 
    168       $cal->DoPUTRequest( Config::service( 'CalDAV' , 'url' ).'/'.Config::me( 'uid' ).'/'.$params['collection'].'/'.$params['uid'].'.ics', $data  );   
     274      $cal = new CalDAVClient( Config::service( 'CalDAV' , 'url' ).'/'.$params['location'].'/', Config::me( 'uid' ), Config::me( 'password' ) ); 
     275      $cal->DoPUTRequest( Config::service( 'CalDAV' , 'url' ).'/'.$params['location'].'/'.$params['uid'].'.ics', $data  );   
    169276      ob_end_clean(); 
    170277    } 
     
    174281       ob_start(); 
    175282       require_once ROOTPATH.'/plugins/davicalCliente/caldav-client-v2.php'; 
    176        $cal = new CalDAVClient( Config::service( 'CalDAV' , 'url' ).'/'.Config::me( 'uid' ).'/'.$params['collection'].'/', Config::me( 'uid' ), $_SESSION['wallet']['user']['password']); 
    177        $cal->DoDELETERequest( Config::service( 'CalDAV' , 'url' ).'/'.Config::me( 'uid' ).'/'.$params['collection'].'/'.$data.'.ics' ); 
     283       $cal = new CalDAVClient( Config::service( 'CalDAV' , 'url' ).'/'.$params['location'].'/', Config::me( 'uid' ), Config::me( 'password' )); 
     284       $cal->DoDELETERequest( Config::service( 'CalDAV' , 'url' ).'/'.$params['location'].'/'.$data.'.ics' ); 
    178285       ob_end_clean(); 
    179286    } 
     
    183290       ob_start(); 
    184291       require_once ROOTPATH.'/plugins/davicalCliente/caldav-client-v2.php';        
    185        $cal = new CalDAVClient( Config::service( 'CalDAV' , 'url' ).'/'.Config::me( 'uid' ).'/', Config::me( 'uid' ), $_SESSION['wallet']['user']['password']); 
     292       $cal = new CalDAVClient( Config::service( 'CalDAV' , 'url' ).'/', Config::me( 'uid' ), Config::me( 'password' )); 
    186293       $cal->DoDELETERequest(Config::service( 'CalDAV' , 'url' ).'/'.Config::me( 'uid' ).'/'.$data.'/'); 
    187294       ob_end_clean(); 
     
    192299       ob_start(); 
    193300       require_once ROOTPATH.'/plugins/davicalCliente/caldav-client-v2.php'; 
    194        $cal = new CalDAVClient( Config::service( 'CalDAV' , 'url' ).'/'.Config::me( 'uid' ).'/', Config::me( 'uid' ), $_SESSION['wallet']['user']['password']);        
     301       $cal = new CalDAVClient( Config::service( 'CalDAV' , 'url' ).'/'.Config::me( 'uid' ).'/', Config::me( 'uid' ), Config::me( 'password' ));        
    195302       $cal->DoMOVERequest( $origem.'/' , $destination.'/' ); 
    196303       ob_end_clean(); 
     
    201308       ob_start(); 
    202309       require_once ROOTPATH.'/plugins/davicalCliente/caldav-client-v2.php'; 
    203        $cal = new CalDAVClient( Config::service( 'CalDAV' , 'url' ).'/'.Config::me( 'uid' ).'/', Config::me( 'uid' ), $_SESSION['wallet']['user']['password']);        
     310       $cal = new CalDAVClient( Config::service( 'CalDAV' , 'url' ).'/', Config::me( 'uid' ), Config::me( 'password' ));        
    204311       ob_end_clean(); 
    205312       return $cal->FindCalendars(); 
     
    207314     
    208315    static function mkcalendar($location , $name, $description ) 
    209     { 
     316    {    
    210317        ob_start(); 
    211318        require_once ROOTPATH.'/plugins/davicalCliente/caldav-client-v2.php'; 
    212         $cal = new CalDAVClient( Config::service( 'CalDAV' , 'url' ).'/'.Config::me( 'uid' ).'/', Config::me( 'uid' ), $_SESSION['wallet']['user']['password']); 
     319        $cal = new CalDAVClient( Config::service( 'CalDAV' , 'url' ).'/', Config::me( 'uid' ), Config::me( 'password' )); 
    213320  
    214321        $xml ="<?xml version=\"1.0\" encoding=\"utf-8\" ?> 
     
    227334           
    228335           
    229         $cal->DoXMLRequest('MKCALENDAR', $xml, Config::service( 'CalDAV' , 'url' ).'/'.Config::me( 'uid' ).'/'.$location.'/'); 
     336        $cal->DoXMLRequest('MKCALENDAR', $xml, Config::service( 'CalDAV' , 'url' ).'/'.$location.'/'); 
    230337        ob_end_clean(); 
    231338    } 
     
    235342        ob_start(); 
    236343        require_once ROOTPATH.'/plugins/davicalCliente/caldav-client-v2.php'; 
    237         $cal = new CalDAVClient( Config::service( 'CalDAV' , 'url' ).'/'.Config::me( 'uid' ).'/', Config::me( 'uid' ), Config::me( 'password' )); 
     344        $cal = new CalDAVClient( Config::service( 'CalDAV' , 'url' ).'/', Config::me( 'uid' ), Config::me( 'password' )); 
    238345          
    239346        $events = $cal->GetCollectionETags($url) ; 
     
    251358        ob_end_clean(); 
    252359    } 
    253  
     360     
    254361} 
    255362 
Note: See TracChangeset for help on using the changeset viewer.