HomeHelpTrac

Changeset 15952


Ignore:
Timestamp:
02/06/12 22:23:27 (4 months ago)
Author:
Alexander Trofimov
Message:

Grid - default sorting by multiple fields

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/inc/classes/BxDolGrid.php

    r15929 r15952  
    434434 
    435435        // add order  
    436         if ($sOrderField && is_array($this->_aOptions['sorting_fields']) && in_array($sOrderField, $this->_aOptions['sorting_fields'])) // explicit order 
    437             $sQuery .= " ORDER BY `$sOrderField` " . (0 == strcasecmp($sOrderDir, 'desc') ? 'DESC' : 'ASC'); 
    438         elseif ($sOrderByFilter) // order by filter 
    439             $sQuery .= " ORDER BY $sOrderByFilter DESC"; 
    440         elseif (!empty($this->_aOptions['field_order'])) // order by "order" field 
    441             $sQuery .= " ORDER BY `" . $this->_aOptions['field_order'] . "` ASC"; 
     436        $sQuery .= $this->_getDataSqlOrderClause ($sOrderByFilter, $sOrderField, $sOrderDir); 
    442437                 
    443438 
     
    445440        return $oDb->getAll($sQuery); 
    446441    } 
     442 
     443    protected function _getDataSqlOrderClause ($sOrderByFilter, $sOrderField, $sOrderDir) { 
     444 
     445        $sOrderClause = ''; 
     446 
     447        if ($sOrderField && is_array($this->_aOptions['sorting_fields']) && in_array($sOrderField, $this->_aOptions['sorting_fields'])) { // explicit order 
     448 
     449            $sOrderClause = " ORDER BY `$sOrderField` " . (0 == strcasecmp($sOrderDir, 'desc') ? 'DESC' : 'ASC'); 
     450 
     451        } elseif ($sOrderByFilter) { // order by filter 
     452 
     453            $sOrderClause = " ORDER BY $sOrderByFilter DESC"; 
     454 
     455        } elseif (!empty($this->_aOptions['field_order'])) { // order by "order" field 
     456 
     457            if (false == strpos($this->_aOptions['field_order'], ',')) { 
     458                $sOrderClause = " ORDER BY `" . $this->_aOptions['field_order'] . "` ASC"; 
     459            } else { 
     460                $a = explode(',', $this->_aOptions['field_order']);                 
     461                foreach ($a as $sField) 
     462                    $sOrderClause .= "`" . trim($sField) . "` ASC, "; 
     463                if ($sOrderClause) 
     464                    $sOrderClause = " ORDER BY " . trim($sOrderClause, ', '); 
     465            } 
     466 
     467        }  
     468 
     469        return $sOrderClause; 
     470    }     
    447471 
    448472    protected function _getCellData($sKey, $aField, $aRow) { 
Note: See TracChangeset for help on using the changeset viewer.