Changeset 6995


Ignore:
Timestamp:
08/10/12 18:39:42 (7 years ago)
Author:
eduardow
Message:

Ticket #3002 - Eventos não são deletados apartir do CalDav?.

Location:
branches/2.4
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • branches/2.4/expressoCalendar/docs/caldav-DELETE.php.diff

    r6754 r6995  
    1515+     $dav_name = explode('/', $dav_resource->GetProperty('dav_name')); 
    1616+ 
    17 +     DAViCalAdapter::delete($dav_resource->GetProperty('caldav_data') ,array('owner' => $dav_resource->GetProperty('username') , 'calendarName' => $dav_name[ (count($dav_name)-3) ]) .'/'. $dav_name[ (count($dav_name)-2) ]); 
     17+     DAViCalAdapter::delete($dav_resource->GetProperty('caldav_data') ,array('owner' => $dav_resource->GetProperty('username') , 'calendarName' => $dav_name[ (count($dav_name)-3) ] .'/'. $dav_name[ (count($dav_name)-2) ])); 
    1818+  } 
    1919+/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 
  • branches/2.4/prototype/modules/calendar/interceptors/DAViCalAdapter.php

    r6754 r6995  
    5252    {       
    5353        if( Config::module('useCaldav' , 'expressoCalendar') ) 
    54         { 
    55             $calendar = Controller::read( array( 'concept' => 'calendar' , 'id' => $params['calendar'] )); 
    56              
    57             if($params['user'] !== '0') 
    58             { 
    59                 $user = Controller::read( array( 'concept' => 'user' , 'id' => $params['user'] )); 
    60                 $xmUser =   '<D:href>'.Config::service( 'CalDAV' , 'url' ).'/'.$user['uid'].'/</D:href>'; 
    61             } 
    62             else 
    63                 $xmUser =   '<D:authenticated/>'; 
    64  
    65             $xml ="<?xml version=\"1.0\" encoding=\"utf-8\" ?> 
    66                    <D:acl xmlns:D=\"DAV:\"> 
    67                      <D:ace> 
    68                        <D:principal> 
    69                         ".$xmUser." 
    70                        </D:principal> 
    71                        <D:grant> 
    72                         ".self::acltToXML($params['acl'])." 
    73                        </D:grant> 
    74                      </D:ace> 
    75                     </D:acl>";   
    76              
    77             ob_start(); 
    78             require_once ROOTPATH.'/plugins/davicalCliente/caldav-client-v2.php'; 
    79             $cal = new CalDAVClient( Config::service( 'CalDAV' , 'url' ).'/'.$calendar['location'].'/', Config::me( 'uid' ), Config::me( 'password' )); 
    80             $cal->DoXMLRequest('ACL', $xml); 
     54    { 
     55        $calendar = Controller::read( array( 'concept' => 'calendar' , 'id' => $params['calendar'] )); 
     56         
     57        if($params['user'] !== '0') 
     58        { 
     59        $user = Controller::read( array( 'concept' => 'user' , 'id' => $params['user'] )); 
     60        $xmUser =   '<D:href>'.Config::service( 'CalDAV' , 'url' ).'/'.$user['uid'].'/</D:href>'; 
     61        } 
     62        else 
     63        $xmUser =   '<D:authenticated/>'; 
     64 
     65        $xml ="<?xml version=\"1.0\" encoding=\"utf-8\" ?> 
     66           <D:acl xmlns:D=\"DAV:\"> 
     67             <D:ace> 
     68               <D:principal> 
     69            ".$xmUser." 
     70               </D:principal> 
     71               <D:grant> 
     72            ".self::acltToXML($params['acl'])." 
     73               </D:grant> 
     74             </D:ace> 
     75            </D:acl>";   
     76         
     77        ob_start(); 
     78        require_once ROOTPATH.'/plugins/davicalCliente/caldav-client-v2.php'; 
     79        $cal = new CalDAVClient( Config::service( 'CalDAV' , 'url' ).'/'.$calendar['location'].'/', Config::me( 'uid' ), Config::me( 'password' )); 
     80        $cal->DoXMLRequest('ACL', $xml); 
    8181            self::setReadCurrentUserPrivilege(Config::service( 'CalDAV' , 'url' ).'/'.substr($calendar['location'] , 0 , (strpos (  $calendar['location'] ,  '/'  ) + 1 ) )); 
    82             ob_end_clean(); 
    83         } 
     82        ob_end_clean(); 
     83    } 
    8484    } 
    8585     
     
    8787    {       
    8888        if( Config::module('useCaldav' , 'expressoCalendar') ) 
    89         {     
    90             $permision = Controller::read( array( 'concept' => 'calendarToPermission' , 'id' => $params['id'] )); 
    91             $calendar = Controller::read( array( 'concept' => 'calendar' , 'id' => $permision['calendar'] )); 
    92              
    93             if($permision['user'] !== '0') 
    94             { 
    95                 $user = Controller::read( array( 'concept' => 'user' , 'id' => $permision['user'] )); 
    96                 $xmUser =   '<D:href>'.Config::service( 'CalDAV' , 'url' ).'/'.$user['uid'].'/</D:href>'; 
    97             } 
    98             else 
    99                 $xmUser =   '<D:authenticated/>'; 
    100  
    101                 $xml ="<?xml version=\"1.0\" encoding=\"utf-8\" ?> 
    102                        <D:acl xmlns:D=\"DAV:\"> 
    103                         <D:ace> 
    104                            <D:principal> 
    105                             ".$xmUser." 
    106                            </D:principal> 
    107                            <D:grant> 
    108                             ".self::acltToXML($params['acl'])." 
    109                            </D:grant> 
    110                         </D:ace> 
    111                         </D:acl>"; 
    112              
    113             ob_start(); 
    114             require_once ROOTPATH.'/plugins/davicalCliente/caldav-client-v2.php'; 
    115             $cal = new CalDAVClient( Config::service( 'CalDAV' , 'url' ).'/'.$calendar['location'].'/', Config::me( 'uid' ), Config::me( 'password' )); 
     89    {     
     90        $permision = Controller::read( array( 'concept' => 'calendarToPermission' , 'id' => $params['id'] )); 
     91        $calendar = Controller::read( array( 'concept' => 'calendar' , 'id' => $permision['calendar'] )); 
     92         
     93        if($permision['user'] !== '0') 
     94        { 
     95        $user = Controller::read( array( 'concept' => 'user' , 'id' => $permision['user'] )); 
     96        $xmUser =   '<D:href>'.Config::service( 'CalDAV' , 'url' ).'/'.$user['uid'].'/</D:href>'; 
     97        } 
     98        else 
     99        $xmUser =   '<D:authenticated/>'; 
     100 
     101        $xml ="<?xml version=\"1.0\" encoding=\"utf-8\" ?> 
     102               <D:acl xmlns:D=\"DAV:\"> 
     103            <D:ace> 
     104               <D:principal> 
     105                ".$xmUser." 
     106               </D:principal> 
     107               <D:grant> 
     108                ".self::acltToXML($params['acl'])." 
     109               </D:grant> 
     110            </D:ace> 
     111            </D:acl>"; 
     112         
     113        ob_start(); 
     114        require_once ROOTPATH.'/plugins/davicalCliente/caldav-client-v2.php'; 
     115        $cal = new CalDAVClient( Config::service( 'CalDAV' , 'url' ).'/'.$calendar['location'].'/', Config::me( 'uid' ), Config::me( 'password' )); 
    116116            $cal->DoXMLRequest('ACL', $xml); 
    117117            self::setReadCurrentUserPrivilege(Config::service( 'CalDAV' , 'url' ).'/'.substr($calendar['location'] ,  0 ,(strpos (  $calendar['location'] ,  '/'  ) + 1 ) )); 
    118             ob_end_clean(); 
    119              
    120         } 
     118        ob_end_clean(); 
     119         
     120    } 
    121121    } 
    122122     
     
    128128         
    129129        $xml ="<?xml version=\"1.0\" encoding=\"utf-8\" ?> 
    130                        <D:acl xmlns:D=\"DAV:\"> 
    131                         <D:ace> 
    132                            <D:principal> 
    133                             <D:authenticated /> 
    134                            </D:principal> 
    135                            <D:grant> 
    136                             <D:privilege><D:read-current-user-privilege-set/></D:privilege> 
    137                            </D:grant> 
    138                         </D:ace> 
    139                         </D:acl>"; 
     130               <D:acl xmlns:D=\"DAV:\"> 
     131            <D:ace> 
     132               <D:principal> 
     133                <D:authenticated /> 
     134               </D:principal> 
     135               <D:grant> 
     136                <D:privilege><D:read-current-user-privilege-set/></D:privilege> 
     137               </D:grant> 
     138            </D:ace> 
     139            </D:acl>"; 
    140140        ob_start(); 
    141141        require_once ROOTPATH.'/plugins/davicalCliente/caldav-client-v2.php'; 
     
    147147    private static function acltToXML($acls) 
    148148    { 
    149         $array = array(); 
    150         $acls = str_split($acls); 
    151          
    152         foreach ($acls as &$acl) 
    153             switch ($acl)  
    154             { 
    155                 case CALENDAR_ACL_WRITE: 
    156                     $array[] = "<D:privilege><D:bind/></D:privilege>"; 
    157                     $array[] = "<D:privilege><D:write-properties/></D:privilege>"; 
    158                     $array[] = "<D:privilege><D:write-content/></D:privilege>"; 
    159                     $array[] = "<D:privilege><D:unlock/></D:privilege>"; 
    160                     $array[] = "<D:privilege><D:schedule-deliver/></D:privilege>"; 
    161                     $array[] = "<D:privilege><D:schedule-send/></D:privilege>"; 
    162                     break; 
    163                 case CALENDAR_ACL_READ: 
    164                     $array[] = "<D:privilege><D:read /></D:privilege>"; 
    165                     $array[] = "<D:privilege><D:schedule-query-freebusy /></D:privilege>"; 
    166                     $array[] = "<D:privilege><D:read-free-busy /></D:privilege>"; 
    167                     break; 
    168                 case CALENDAR_ACL_REMOVE: 
    169                     $array[] = "<D:privilege><D:unbind/></D:privilege>"; 
    170                     break; 
    171                 case CALENDAR_ACL_SHARED: 
    172                     $array[] = "<D:privilege><D:write-acl/></D:privilege>"; 
    173                     $array[] = "<D:privilege><D:read-acl/></D:privilege>"; 
    174                     $array[] = "<D:privilege><D:read-current-user-privilege-set/></D:privilege>"; 
    175                     break; 
    176                 case CALENDAR_ACL_BUSY: 
    177                     $array[] = "<D:privilege><D:schedule-query-freebusy/></D:privilege>"; 
    178                     $array[] = "<D:privilege><D:read-free-busy/></D:privilege>"; 
    179                     break; 
    180             }       
    181         return implode("\n", $array); 
     149    $array = array(); 
     150    $acls = str_split($acls); 
     151     
     152    foreach ($acls as &$acl) 
     153        switch ($acl)  
     154        { 
     155        case CALENDAR_ACL_WRITE: 
     156            $array[] = "<D:privilege><D:bind/></D:privilege>"; 
     157            $array[] = "<D:privilege><D:write-properties/></D:privilege>"; 
     158            $array[] = "<D:privilege><D:write-content/></D:privilege>"; 
     159            $array[] = "<D:privilege><D:unlock/></D:privilege>"; 
     160            $array[] = "<D:privilege><D:schedule-deliver/></D:privilege>"; 
     161            $array[] = "<D:privilege><D:schedule-send/></D:privilege>"; 
     162            break; 
     163        case CALENDAR_ACL_READ: 
     164            $array[] = "<D:privilege><D:read /></D:privilege>"; 
     165            $array[] = "<D:privilege><D:schedule-query-freebusy /></D:privilege>"; 
     166            $array[] = "<D:privilege><D:read-free-busy /></D:privilege>"; 
     167            break; 
     168        case CALENDAR_ACL_REMOVE: 
     169            $array[] = "<D:privilege><D:unbind/></D:privilege>"; 
     170            break; 
     171        case CALENDAR_ACL_SHARED: 
     172            $array[] = "<D:privilege><D:write-acl/></D:privilege>"; 
     173            $array[] = "<D:privilege><D:read-acl/></D:privilege>"; 
     174            $array[] = "<D:privilege><D:read-current-user-privilege-set/></D:privilege>"; 
     175            break; 
     176        case CALENDAR_ACL_BUSY: 
     177            $array[] = "<D:privilege><D:schedule-query-freebusy/></D:privilege>"; 
     178            $array[] = "<D:privilege><D:read-free-busy/></D:privilege>"; 
     179            break; 
     180        }       
     181    return implode("\n", $array); 
    182182    } 
    183183     
    184184    static function import($data , $params = false) 
    185185    {                   
    186         $user =  Controller::find(array('concept' => 'user' , 'service' => 'OpenLDAP' ),false,array('filter' => array('=','uid',$params['owner'])));   
     186        $user =  Controller::find(array('concept' => 'user' , 'service' => 'OpenLDAP' ),false,array('filter' => array('=','uid',$params['owner']) , 'notExternal' => true));   
    187187        $params['owner'] = $user[0]['id']; 
    188188         
     
    214214     
    215215    static function delete($data , $params = false) 
    216     {          
    217         $user =  Controller::find(array('concept' => 'user' , 'service' => 'OpenLDAP' ),false,array('filter' => array('=','uid',$params['owner'])));   
     216    {    
     217 
     218        $user =  Controller::find(array('concept' => 'user' , 'service' => 'OpenLDAP' ),false,array('filter' => array('=','uid',$params['owner']) , 'notExternal' => true)); 
     219 
    218220        $params['owner'] = $user[0]['id']; 
    219221         
     
    255257            foreach ($toDelete as $v) 
    256258            { 
    257                  $even = Controller::find(array('concept' => 'schedulable') , false , array ( 'filter' => array('AND', array('=' , 'uid' , $v ), array('=' , 'calendar' , $params['calendar']))) );             
     259                 $even = Controller::find(array('concept' => 'schedulable') , false , array ( 'filter' => array('AND', array('=' , 'calendar' , $params['calendar']) , array('=' , 'uid' , $v ) ) ) );             
    258260                 if(is_array($even) && count($even) > 0 ) 
    259261                       Controller::delete(array('concept' => 'schedulable' , 'id' => $even[0]['id'])); 
     
    264266    static function move($origem , $destino , $owner) 
    265267    {   
    266         $user =  Controller::find(array('concept' => 'user' , 'service' => 'OpenLDAP' ),false,array('filter' => array('=','uid',$owner)));   
     268        $user =  Controller::find(array('concept' => 'user' , 'service' => 'OpenLDAP' ),false,array('filter' => array('=','uid',$owner) , 'notExternal' => true));   
    267269        $owner = $user[0]['id']; 
    268270         
     
    341343     
    342344    static function mkcalendar($location , $name, $description ) 
    343     {    
     345    {    
    344346        ob_start(); 
    345347        require_once ROOTPATH.'/plugins/davicalCliente/caldav-client-v2.php'; 
  • branches/2.4/prototype/services/PostgreSQL.php

    r6754 r6995  
    5252        $map =  Config::get($uri['concept'], 'PostgreSQL.mapping'); 
    5353         
    54         $criteria = ($criteria !== false) ? $this->parseCriteria ( $criteria , $map) : ''; 
    55  
    56         $justthese = self::parseJustthese($justthese, $map); 
    57  
    58         return $this->execSql( 'SELECT '.$justthese['select'].' FROM '. (Config::get($uri['concept'],'PostgreSQL.concept')) .' '.$criteria ); 
     54        $criteria = ($criteria !== false) ? $this->parseCriteria ( $criteria , $map) : '';  
     55  
     56    $justthese = self::parseJustthese($justthese, $map);  
     57  
     58    return $this->execSql( 'SELECT '.$justthese['select'].' FROM '. (Config::get($uri['concept'],'PostgreSQL.concept')) .' '.$criteria );  
    5959    } 
    6060 
     
    6363      $map =  Config::get($uri['concept'], 'PostgreSQL.mapping');    
    6464      $justthese = self::parseJustthese($justthese, $map); 
    65       $criteria = ($criteria !== false) ? $this->parseCriteria ( $criteria , $map , ' WHERE '.$map['id'].' = \''.addslashes( $uri['id'] ).'\'') : ' WHERE '.$map['id'].' = \''.addslashes( $uri['id'] ).'\''; 
     65      $criteria = ($criteria !== false) ? $this->parseCriteria ( $criteria , $map , ' WHERE '.$map['id'].' = \''.pg_escape_string( $uri['id'] ).'\'') : ' WHERE '.$map['id'].' = \''.pg_escape_string( $uri['id'] ).'\'';  
    6666    
    6767      return $this->execSql( 'SELECT '.$justthese['select'].' FROM '. (Config::get($uri['concept'],'PostgreSQL.concept')) .$criteria , true ); 
     
    7070    public function deleteAll ( $uri,   $justthese = false, $criteria = false ){ 
    7171            $map = Config::get($uri['concept'], 'PostgreSQL.mapping'); 
    72             if(!self::parseCriteria ( $criteria , $map)) return false; //Validador para não apagar tabela inteira 
    73             return $this->execSql( 'DELETE FROM '.(Config::get($uri['concept'],'PostgreSQL.concept')).' '.self::parseCriteria ( $criteria ,$map) ); 
     72            if(!self::parseCriteria ( $criteria , $map)) return false; //Validador para não apagar tabela inteira  
     73            return $this->execSql( 'DELETE FROM '.(Config::get($uri['concept'],'PostgreSQL.concept')).' '.self::parseCriteria ( $criteria ,$map) ); 
    7474    } 
    7575 
    7676    public function delete ( $uri, $justthese = false, $criteria = false ){ 
    7777            if(!isset($uri['id']) && !is_int($uri['id'])) return false; //Delete chamado apenas passando id inteiros 
    78             $map = Config::get($uri['concept'], 'PostgreSQL.mapping'); 
    79             $criteria = ($criteria !== false) ? $this->parseCriteria ( $criteria , $map , ' WHERE '.$map['id'].' = \''.addslashes( $uri['id'] ).'\'') : ' WHERE '.$map['id'].' = \''.addslashes( $uri['id'] ).'\''; 
    80             return $this->execSql('DELETE FROM '.(Config::get($uri['concept'],'PostgreSQL.concept')).$criteria); 
     78            $map = Config::get($uri['concept'], 'PostgreSQL.mapping');  
     79            $criteria = ($criteria !== false) ? $this->parseCriteria ( $criteria , $map , ' WHERE '.$map['id'].' = \''.pg_escape_string( $uri['id'] ).'\'') : ' WHERE '.$map['id'].' = \''.pg_escape_string( $uri['id'] ).'\'';  
     80            return $this->execSql('DELETE FROM '.(Config::get($uri['concept'],'PostgreSQL.concept')).$criteria); 
    8181    } 
    8282 
    8383    public function replace ( $uri,  $data, $criteria = false ){ 
    8484            $map = Config::get($uri['concept'], 'PostgreSQL.mapping'); 
    85             return $this->execSql('UPDATE '.(Config::get($uri['concept'],'PostgreSQL.concept')).' '. self::parseUpdateData( $data ,$map).' '.self::parseCriteria($criteria , $map)); 
     85            return $this->execSql('UPDATE '.(Config::get($uri['concept'],'PostgreSQL.concept')).' '. self::parseUpdateData( $data ,$map).' '.self::parseCriteria($criteria , $map));   
    8686    } 
    8787                 
    8888    public function update ( $uri,  $data, $criteria = false ){ 
    8989            $map = Config::get($uri['concept'], 'PostgreSQL.mapping'); 
    90             $criteria = ($criteria !== false) ? $this->parseCriteria ( $criteria , $map , ' WHERE '.$map['id'].' = \''.addslashes( $uri['id'] ).'\'') : ' WHERE '.$map['id'].' = \''.addslashes( $uri['id'] ).'\''; 
    91  
    92             return $this->execSql('UPDATE '.(Config::get($uri['concept'],'PostgreSQL.concept')).' '. self::parseUpdateData( $data ,$map).$criteria); 
    93     } 
    94  
    95     public function create ( $uri,  $data ){     
    96             return $this->execSql( 'INSERT INTO '.(Config::get($uri['concept'],'PostgreSQL.concept')).' '.self::parseInsertData( $data , $uri['concept'] ), true ); 
     90                $criteria = ($criteria !== false) ? $this->parseCriteria ( $criteria , $map , ' WHERE '.$map['id'].' = \''.pg_escape_string( $uri['id'] ).'\'') : ' WHERE '.$map['id'].' = \''.pg_escape_string( $uri['id'] ).'\'';  
     91  
     92        return $this->execSql('UPDATE '.(Config::get($uri['concept'],'PostgreSQL.concept')).' '. self::parseUpdateData( $data ,$map).$criteria);  
     93    }  
     94  
     95    public function create ( $uri,  $data ){      
     96        return $this->execSql( 'INSERT INTO '.(Config::get($uri['concept'],'PostgreSQL.concept')).' '.self::parseInsertData( $data , $uri['concept'] ), true );  
    9797    } 
    9898 
     
    197197                    if(!isset($map[$i])) continue; 
    198198                 
    199                     $ind[] = $map[$i]; 
    200                     $val[] = '\''.addslashes($v).'\''; 
    201             } 
    202             return '('.implode(',', $ind).') VALUES ('.implode(',', $val).') RETURNING '.$map['id'].' as id';        
    203     } 
     199                    $ind[] = $map[$i];  
     200            $val[] = '\''.pg_escape_string($v).'\'';  
     201        }  
     202        return '('.implode(',', $ind).') VALUES ('.implode(',', $val).') RETURNING '.$map['id'].' as id';         
     203    }  
    204204         
    205205    private static function parseUpdateData( $data , &$map){ 
     
    210210                if(!isset($map[$i])) continue; 
    211211                 
    212                 $d[] = $map[$i].' = \''.addslashes ($v).'\''; 
     212                $d[] = $map[$i].' = \''.pg_escape_string ($v).'\''; 
    213213            } 
    214214             
     
    218218    private static function parseCriteria( $criteria  , &$map , $query = '' ){                
    219219         
    220             if( isset($criteria["filter"]) && $criteria["filter"] !== NULL ) 
    221             { 
    222                     /* 
    223                   * ex: array   (  
    224                   *               [0] 'OR', 
    225                   *               [1] array( 'OR', array( array( '=', 'campo', 'valor' ) ),  
    226                   *               [2] array( '=', 'campo' , 'valor' ), 
    227                   *               [3] array( 'IN', 'campo', array( '1' , '2' , '3' ) ) 
    228                   *             ) 
    229                   * OR 
    230                   *         array( '=' , 'campo' , 'valor' ) 
    231                 */ 
     220            if( isset($criteria["filter"]) && $criteria["filter"] !== NULL )  
     221        {  
     222            /*  
     223          * ex: array   (  
     224          *       [0] 'OR',  
     225          *       [1] array( 'OR', array( array( '=', 'campo', 'valor' ) ),  
     226          *       [2] array( '=', 'campo' , 'valor' ),  
     227          *       [3] array( 'IN', 'campo', array( '1' , '2' , '3' ) )  
     228          *     )  
     229          * OR  
     230          *     array( '=' , 'campo' , 'valor' )  
     231        */  
    232232                $query .= ($query === '') ?  'WHERE ('.self::parseFilter( $criteria['filter'] , $map).')' : ' AND ('.self::parseFilter( $criteria['filter'] , $map).')'; 
    233233            } 
     
    301301 
    302302        if( is_array($filter[1]) ) 
    303             return( $filter[0].' '.$op[0]." ($igPrefix'".implode( "'$igSuffix,$igPrefix'", array_map("addslashes" , $filter[1]) )."'$igSuffix)" ); 
    304  
    305         return( $filter[0].' '.$op[0]." $igPrefix'".$op[1].addslashes( $filter[1] ).$op[2]."'$igSuffix" ); 
     303            return( $filter[0].' '.$op[0]." ($igPrefix'".implode( "'$igSuffix,$igPrefix'", array_map("pg_escape_string" , $filter[1]) )."'$igSuffix)" );  
     304          
     305        return( $filter[0].' '.$op[0]." $igPrefix'".$op[1].pg_escape_string( $filter[1] ).$op[2]."'$igSuffix" );  
    306306    } 
    307307 
Note: See TracChangeset for help on using the changeset viewer.