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

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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 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.