/** * Associated with the metamodel -> MakeQuery/MakeQuerySingleTable * * @copyright Copyright (C) 2010-2015 Combodo SARL * @license http://opensource.org/licenses/AGPL-3.0 */ class QueryBuilderContext { protected $m_oRootFilter; protected $m_aClassAliases; protected $m_aTableAliases; protected $m_aModifierProperties; protected $m_aSelectedClasses; public $m_oQBExpressions; public function __construct($oFilter, $aModifierProperties, $aGroupByExpr = null, $aSelectedClasses = null) { $this->m_oRootFilter = $oFilter; $this->m_oQBExpressions = new QueryBuilderExpressions($oFilter, $aGroupByExpr); $this->m_aClassAliases = $oFilter->GetJoinedClasses(); $this->m_aTableAliases = array(); $this->m_aModifierProperties = $aModifierProperties; if (is_null($aSelectedClasses)) { $this->m_aSelectedClasses = $oFilter->GetSelectedClasses(); } else { // For the unions, the selected classes can be upper in the hierarchy (lowest common ancestor) $this->m_aSelectedClasses = $aSelectedClasses; } } public function GetRootFilter() { return $this->m_oRootFilter; } public function GenerateTableAlias($sNewName, $sRealName) { return MetaModel::GenerateUniqueAlias($this->m_aTableAliases, $sNewName, $sRealName); } public function GenerateClassAlias($sNewName, $sRealName) { return MetaModel::GenerateUniqueAlias($this->m_aClassAliases, $sNewName, $sRealName); } public function GetModifierProperties($sPluginClass) { if (array_key_exists($sPluginClass, $this->m_aModifierProperties)) { return $this->m_aModifierProperties[$sPluginClass]; } else { return array(); } } public function GetSelectedClass($sAlias) { return $this->m_aSelectedClasses[$sAlias]; } }