Ignore:
Timestamp:
06/15/12 17:00:17 (12 years ago)
Author:
gustavo
Message:

Ticket #2766 - Merge do branch das novas funcionalidaes para o trunk

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk

  • trunk/prototype/services/PostgreSQL.php

    r6299 r6528  
    4040 */ 
    4141 
     42use prototype\api\Config as Config; 
     43 
    4244class PostgreSQL implements Service 
    4345{ 
     
    8789            $map = Config::get($uri['concept'], 'PostgreSQL.mapping'); 
    8890            $criteria = ($criteria !== false) ? $this->parseCriteria ( $criteria , $map , ' WHERE '.$map['id'].' = \''.addslashes( $uri['id'] ).'\'') : ' WHERE '.$map['id'].' = \''.addslashes( $uri['id'] ).'\''; 
     91 
    8992            return $this->execSql('UPDATE '.(Config::get($uri['concept'],'PostgreSQL.concept')).' '. self::parseUpdateData( $data ,$map).$criteria); 
    9093    } 
     
    197200                    $val[] = '\''.addslashes($v).'\''; 
    198201            } 
    199              
    200             return '('.implode(',', $ind).') VALUES ('.implode(',', $val).') RETURNING '.$map['id'].' as id'; 
     202            return '('.implode(',', $ind).') VALUES ('.implode(',', $val).') RETURNING '.$map['id'].' as id';        
    201203    } 
    202204         
     
    244246                    $query .= ' GROUP BY '.( is_array($criteria["group"]) ? implode(', ', $criteria["group"]) : $criteria["group"] ).' '; 
    245247            } 
    246              
     248    
    247249            if( isset($criteria["order"]) ) 
    248250            { 
    249                     $query .= ' ORDER BY '.self::parseOrder( $criteria["order"], $map ).' '; 
    250             } 
     251                    //Verificar se os atributos para o ORDER BY serao ordenados em ordem decrescente [DESC] 
     252                    $orderDesc = ( isset($criteria["orderDesc"]) && count($criteria["order"]) == count($criteria["orderDesc"]) ) ? $criteria["orderDesc"] : false; 
     253                 
     254                    $query .= ' ORDER BY '.self::parseOrder( $criteria["order"], $map, $orderDesc ).' '; 
     255             
     256            } 
     257 
    251258            if( isset($criteria["limit"]) ) 
    252259            { 
     
    339346    } 
    340347 
    341    private static function parseOrder($order , &$map) 
     348    private static function parseOrder($order , &$map, $orderDesc=false) 
    342349    { 
    343                    
     350 
    344351        if($notArray = !is_array($order)) //Caso seja um full select pegar todas as keys 
    345352            $order = array( $order ); 
     353 
     354        //Caso seja feita ordenacao em ordem descrescente 
     355        //concatenar DESC em cada atributo 
     356        if($orderDesc !== false){ 
     357                if(!is_array($orderDesc)){ 
     358                        $orderDesc = array( $orderDesc ); 
     359                } 
     360 
     361                for($i=0; $i<count($order); $i++){ 
     362                        $order[$i] .= ($orderDesc[$i] === true) ? ' DESC' : ''; 
     363                } 
     364        } 
    346365 
    347366        $return = array(); 
     
    356375        return ( $notArray ?  $order[0] : implode(', ', $order) ); 
    357376    } 
     377 
    358378} 
    359379 
Note: See TracChangeset for help on using the changeset viewer.