Ignore:
Timestamp:
03/06/12 02:03:17 (12 years ago)
Author:
cristiano
Message:

Ticket #2497 - Nova estrategia para o salvamento automatico de rascunhos

File:
1 edited

Legend:

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

    r5514 r5637  
    1818    } 
    1919 
    20    public function read ( $uri, $justthese = false ){ 
     20   public function read ( $uri, $justthese = false , $criteria = false){ 
    2121       
    22       $map =  Config::get($uri['concept'], 'PostgreSQL.mapping'); 
    23         
     22      $map =  Config::get($uri['concept'], 'PostgreSQL.mapping');    
    2423      $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 ); 
     24      $criteria = ($criteria !== false) ? $this->parseCriteria ( $criteria , $map , ' WHERE id = \''.addslashes( $uri['id'] ).'\'') : ''; 
     25       
     26      return $this->execResultSql( 'SELECT '.$justthese['select'].' FROM '. (Config::get($uri['concept'],'PostgreSQL.concept')) .$criteria , true ); 
    2727    } 
    2828         
     
    174174    } 
    175175         
    176     private static function parseCriteria( $criteria  , &$map ){                
    177              
    178             $result = ''; 
     176    private static function parseCriteria( $criteria  , &$map , $query = '' ){                
    179177         
    180178            if( isset($criteria["filter"]) && $criteria["filter"] !== NULL ) 
     
    190188                  *         array( '=' , 'campo' , 'valor' ) 
    191189                */ 
    192  
    193                     $result .= 'WHERE ('.self::parseFilter( $criteria['filter'] , $map).')'; 
     190                $query .= ($query === '') ?  'WHERE ('.self::parseFilter( $criteria['filter'] , $map).')' : ' AND ('.self::parseFilter( $criteria['filter'] , $map).')'; 
    194191            } 
    195192            /* 
     
    200197            { 
    201198                foreach ($criteria["join"] as $i => $v) 
    202                     $result .= ' AND '.$i.' = '.$v.' '; 
     199                    $query .= ' AND '.$i.' = '.$v.' '; 
    203200            } 
    204201             
    205202            if( isset($criteria["group"]) ) 
    206203            { 
    207                     $result .= ' GROUP BY '.( is_array($criteria["group"]) ? implode(', ', $criteria["group"]) : $criteria["group"] ).' '; 
     204                    $query .= ' GROUP BY '.( is_array($criteria["group"]) ? implode(', ', $criteria["group"]) : $criteria["group"] ).' '; 
    208205            } 
    209206             
    210207            if( isset($criteria["order"]) ) 
    211208            { 
    212                     $result .= ' ORDER BY '.self::parseOrder( $criteria["order"], $map ).' '; 
     209                    $query .= ' ORDER BY '.self::parseOrder( $criteria["order"], $map ).' '; 
    213210            } 
    214211            if( isset($criteria["limit"]) ) 
    215212            { 
    216                     $result .= ' LIMIT '. $criteria["limit"] .' '; 
     213                    $query .= ' LIMIT '. $criteria["limit"] .' '; 
    217214            } 
    218215            if( isset($criteria["offset"]) ) 
    219216            { 
    220                     $result .= ' OFFSET '. $criteria["offset"] .' '; 
    221             } 
    222              
    223             return $result; 
     217                    $query .= ' OFFSET '. $criteria["offset"] .' '; 
     218            } 
     219             
     220            return $query; 
    224221    } 
    225222     
Note: See TracChangeset for help on using the changeset viewer.