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

Ticket #2766 - implementacao da dfd0065 e correcao de bugs da dfd0099

File:
1 edited

Legend:

Unmodified
Added
Removed
  • sandbox/2.4.1-3/prototype/services/PostgreSQL.php

    r6357 r6514  
    8989            $map = Config::get($uri['concept'], 'PostgreSQL.mapping'); 
    9090            $criteria = ($criteria !== false) ? $this->parseCriteria ( $criteria , $map , ' WHERE '.$map['id'].' = \''.addslashes( $uri['id'] ).'\'') : ' WHERE '.$map['id'].' = \''.addslashes( $uri['id'] ).'\''; 
     91 
    9192            return $this->execSql('UPDATE '.(Config::get($uri['concept'],'PostgreSQL.concept')).' '. self::parseUpdateData( $data ,$map).$criteria); 
    9293    } 
     
    199200                    $val[] = '\''.addslashes($v).'\''; 
    200201            } 
    201  
    202 //          return '('.implode(',', $ind).') VALUES ('.implode(',', $val).') RETURNING '.$map['id'].' as id';        
    203             return '('.implode(',', $ind).') VALUES ('.implode(',', $val).') RETURNING id';          
     202            return '('.implode(',', $ind).') VALUES ('.implode(',', $val).') RETURNING '.$map['id'].' as id';        
    204203    } 
    205204         
     
    247246                    $query .= ' GROUP BY '.( is_array($criteria["group"]) ? implode(', ', $criteria["group"]) : $criteria["group"] ).' '; 
    248247            } 
    249              
     248    
    250249            if( isset($criteria["order"]) ) 
    251250            { 
    252                     $query .= ' ORDER BY '.self::parseOrder( $criteria["order"], $map ).' '; 
    253             } 
     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 
    254258            if( isset($criteria["limit"]) ) 
    255259            { 
     
    342346    } 
    343347 
    344    private static function parseOrder($order , &$map) 
     348    private static function parseOrder($order , &$map, $orderDesc=false) 
    345349    { 
    346                    
     350 
    347351        if($notArray = !is_array($order)) //Caso seja um full select pegar todas as keys 
    348352            $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        } 
    349365 
    350366        $return = array(); 
     
    359375        return ( $notArray ?  $order[0] : implode(', ', $order) ); 
    360376    } 
     377 
    361378} 
    362379 
Note: See TracChangeset for help on using the changeset viewer.