Ignore:
Timestamp:
01/27/12 15:37:21 (12 years ago)
Author:
cristiano
Message:

Ticket #2434 - Atualização modulo agenda e API

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/prototype/services/PostgreSQL.php

    r5399 r5437  
    88     
    99    public function find ( $uri, $justthese = false, $criteria = false ){ 
    10      
    11         $criteria = ($criteria !== false) ? $this->parseCriteria ( $criteria ) : ''; 
    12  
    13         $justthese = $justthese ? '"'.implode('", "', $justthese).'"' : '*'; 
    14  
    15         return $this->execResultSql( 'SELECT '.$justthese.' FROM '.$uri['concept'].' '.$criteria ); 
     10          
     11        $map =  Config::get($uri['concept'], 'PostgreSQL.mapping'); 
     12         
     13        $criteria = ($criteria !== false) ? $this->parseCriteria ( $criteria , $map) : ''; 
     14 
     15        $justthese = self::parseJustthese($justthese, $map); 
     16 
     17        return $this->execResultSql( 'SELECT '.$justthese['select'].' FROM '. (Config::get($uri['concept'],'PostgreSQL.concept')) .' '.$criteria ); 
    1618    } 
    1719 
    1820   public function read ( $uri, $justthese = false ){ 
    19     
    20       $justthese = $justthese ? '"'.implode('", "', $justthese).'"' : '*'; 
    21  
    22       return $this->execResultSql( 'SELECT '.$justthese.' FROM '.$uri['concept'].' WHERE id = \''.addslashes( $uri['id'] ).'\'', true ); 
    23     } 
    24          
    25     public function deleteAll ( $uri,   $justthese = false, $criteria = false ){         
    26             if(!self::parseCriteria ( $criteria )) return false; //Validador para não apagar tabela inteira 
    27             return $this->execSql( 'DELETE FROM '.$uri['concept'].' '.self::parseCriteria ( $criteria ) ); 
     21       
     22      $map =  Config::get($uri['concept'], 'PostgreSQL.mapping'); 
     23        
     24      $justthese = self::parseJustthese($justthese, $map); 
     25 
     26      return $this->execResultSql( 'SELECT '.$justthese['select'].' FROM '. (Config::get($uri['concept'],'PostgreSQL.concept')) .' WHERE id = \''.addslashes( $uri['id'] ).'\'', true ); 
     27    } 
     28         
     29    public function deleteAll ( $uri,   $justthese = false, $criteria = false ){ 
     30            $map = Config::get($uri['concept'], 'PostgreSQL.mapping'); 
     31            if(!self::parseCriteria ( $criteria , $map)) return false; //Validador para não apagar tabela inteira 
     32            return $this->execSql( 'DELETE FROM '.(Config::get($uri['concept'],'PostgreSQL.concept')).' '.self::parseCriteria ( $criteria ,$map) ); 
    2833    } 
    2934 
    3035    public function delete ( $uri, $justthese = false ){ 
    31             return $this->execSql('DELETE FROM '.$uri['concept'].' WHERE id = '.addslashes($uri['id'])); 
     36            return $this->execSql('DELETE FROM '.(Config::get($uri['concept'],'PostgreSQL.concept')).' WHERE id = '.addslashes($uri['id'])); 
    3237    } 
    3338 
    3439    public function replace ( $uri,  $data, $criteria = false ){ 
    35             return $this->execSql('UPDATE '.$uri['concept'].' '. self::parseUpdateData( $data ).' '.self::parseCriteria($criteria)); 
     40             
     41            return $this->execSql('UPDATE '.(Config::get($uri['concept'],'PostgreSQL.concept')).' '. self::parseUpdateData( $data ,$uri['concept']).' '.self::parseCriteria($criteria , $uri['concept'])); 
    3642    } 
    3743                 
    3844    public function update ( $uri,  $data ){ 
    39             return $this->execSql('UPDATE '.$uri['concept'].' '. self::parseUpdateData( $data ).' WHERE id = \''. addslashes( $uri['id']) .'\''); 
     45            return $this->execSql('UPDATE '.(Config::get($uri['concept'],'PostgreSQL.concept')).' '. self::parseUpdateData( $data ,$uri['concept']).' WHERE id = \''. addslashes( $uri['id']) .'\''); 
    4046    } 
    4147 
    4248    public function create ( $uri,  $data ){     
    43             return $this->execResultSql( 'INSERT INTO '.$uri['concept'].' '.self::parseInsertData( $data ), true ); 
     49            return $this->execResultSql( 'INSERT INTO '.(Config::get($uri['concept'],'PostgreSQL.concept')).' '.self::parseInsertData( $data , $uri['concept'] ), true ); 
    4450    } 
    4551 
     
    122128    public function teardown(){} 
    123129 
    124     private static function parseInsertData( $data ){ 
    125              
     130    private static function parseInsertData( $data , $concept){ 
     131          
     132            $map = Config::get($concept, 'PostgreSQL.mapping'); 
     133         
    126134            $ind = array(); 
    127135            $val = array(); 
    128136             
    129137            foreach ($data as $i => $v){ 
    130                     $ind[] = $i; 
     138                    if(!isset($map[$i])) continue; 
     139                 
     140                    $ind[] = $map[$i]; 
    131141                    $val[] = '\''.addslashes($v).'\''; 
    132142            } 
     
    135145    } 
    136146         
    137     private static function parseUpdateData( $data ){ 
    138              
     147    private static function parseUpdateData( $data , $concept){ 
     148             
     149            $map = Config::get($concept, 'PostgreSQL.mapping'); 
     150                         
    139151            $d = array(); 
    140  
    141152            foreach ($data as $i => $v) 
    142                 $d[] = $i.' = \''.addslashes ($v).'\''; 
     153            { 
     154                if(!isset($map[$i])) continue; 
     155                 
     156                $d[] = $map[$i].' = \''.addslashes ($v).'\''; 
     157            } 
    143158             
    144159            return 'SET '.implode(',', $d); 
     
    160175    } 
    161176         
    162     private static function parseCriteria( $criteria ){                
     177    private static function parseCriteria( $criteria  , &$map ){                
    163178             
    164179            $result = ''; 
     
    177192                */ 
    178193 
    179                     $result .= 'WHERE '.self::parseFilter( $criteria['filter'] ); 
     194                    $result .= 'WHERE '.self::parseFilter( $criteria['filter'] , $map); 
    180195            } 
    181196            /* 
     
    210225    } 
    211226     
    212     private static function parseFilter( $filter ){ 
     227    private static function parseFilter( $filter ,&$map){ 
    213228     
    214229        if( !is_array( $filter ) || count($filter) <= 0) return null; 
    215  
     230                 
    216231        $op = self::parseOperator( array_shift( $filter ) ); 
    217  
     232         
    218233        if( is_array($filter[0]) ) 
    219234        { 
     
    221236 
    222237            foreach( $filter as $i => $f ) 
    223                 $nested[] = self::parseFilter( $f ); 
     238                $nested[] = self::parseFilter( $f , $map); 
    224239 
    225240            return( '('.implode( ' '.$op.' ', $nested ).')' ); 
    226241        } 
    227242 
     243         
     244        if(isset($map[$filter[0]])) 
     245            $filter[0] = $map[$filter[0]]; 
     246         
    228247        $igSuffix = $igPrefix = ''; 
    229  
     248                 
    230249        if( strpos( $op[0], 'i' ) === 0 ) 
    231250        { 
     
    258277        } 
    259278    } 
    260          
     279     
     280    private static function parseJustthese($justthese , &$map) 
     281    { 
     282                   
     283        if(!is_array($justthese)) //Caso seja um full select pegar todas as keys 
     284            $justthese = array_keys($map); 
     285 
     286        $return = array(); 
     287 
     288        foreach ($justthese as &$value)  
     289        { 
     290            if(!isset($map[$value])) continue; //Escapa itens não existentes no mapa 
     291 
     292            if(is_array($map[$value])) 
     293                $return['deepness'][$value] = $map[$value]; 
     294            else 
     295                $return['select'][] = $map[$value] .' as "'. $value. '"'; 
     296        } 
     297         
     298        $return['select'] = implode(', ', $return['select']); 
     299        return $return;   
     300    } 
     301    
    261302} 
    262303 
Note: See TracChangeset for help on using the changeset viewer.