/** * 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); }