Пример #1
0
 /**
  * Construit la requête SELECT complète. Cette méthode est utilisé par
  * Mapper::load et Mapper::loadCollection
  *
  * @access private
  * @param  mixed $attributeFilters un tableau ou un objet filtre
  * @param  array $sortOrder un tableau pour les tris
  * @return string la requête SELECT
  */
 private function _getSQLRequest($attributeFilters = array(), $sortOrder = array(), $fields = array())
 {
     $filteraddon = $params = array();
     if (false != call_user_func(array($this->_cls, 'getParentClassName'))) {
         $filteraddon['ClassName'] = $this->_cls;
         $params[] = 'ClassName';
     }
     if ($attributeFilters instanceof FilterComponent) {
         $filter = SearchTools::buildFilterFromArray($filteraddon, $attributeFilters);
         $filterMacros = $attributeFilters->CollectMacros();
     } else {
         if (is_array($attributeFilters)) {
             $filter = SearchTools::buildFilterFromArray(array_merge($filteraddon, $attributeFilters), false, $this->_cls);
             $filterMacros = $filter->CollectMacros();
         }
     }
     // si fields est un tableau
     if (empty($fields)) {
         $params = array('*');
     } else {
         if (!in_array('Id', $fields)) {
             $params[] = 'Id';
         }
         if (defined('DATABASE_ID') && !in_array('DBId', $fields)) {
             $params[] = 'DBId';
         }
         if (property_exists($this->_cls, 'lastModified')) {
             $params[] = 'LastModified';
         }
         $params = array_merge($params, $fields);
     }
     // on appelle le state machine pour construire la requête
     $stateMachine = new StateMachine($this->_cls, $params, $filterMacros, $sortOrder);
     return $stateMachine->toSQL($filter);
 }