|
@@ -1121,13 +1121,20 @@ class QueryBuilderExpressions
|
|
protected $m_aSelectExpr;
|
|
protected $m_aSelectExpr;
|
|
protected $m_aGroupByExpr;
|
|
protected $m_aGroupByExpr;
|
|
protected $m_aJoinFields;
|
|
protected $m_aJoinFields;
|
|
|
|
+ protected $m_aClassIds;
|
|
|
|
|
|
- public function __construct($oCondition, $aGroupByExpr = null)
|
|
|
|
|
|
+ public function __construct($oSearch, $aGroupByExpr = null)
|
|
{
|
|
{
|
|
- $this->m_oConditionExpr = $oCondition;
|
|
|
|
|
|
+ $this->m_oConditionExpr = $oSearch->GetCriteria();
|
|
$this->m_aSelectExpr = array();
|
|
$this->m_aSelectExpr = array();
|
|
$this->m_aGroupByExpr = $aGroupByExpr;
|
|
$this->m_aGroupByExpr = $aGroupByExpr;
|
|
$this->m_aJoinFields = array();
|
|
$this->m_aJoinFields = array();
|
|
|
|
+
|
|
|
|
+ $this->m_aClassIds = array();
|
|
|
|
+ foreach($oSearch->GetJoinedClasses() as $sClassAlias => $sClass)
|
|
|
|
+ {
|
|
|
|
+ $this->m_aClassIds[$sClassAlias] = new FieldExpression('id', $sClassAlias);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
public function GetSelect()
|
|
public function GetSelect()
|
|
@@ -1166,6 +1173,20 @@ class QueryBuilderExpressions
|
|
array_push($this->m_aJoinFields, $oExpression);
|
|
array_push($this->m_aJoinFields, $oExpression);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
+ * Get tables representing the queried objects
|
|
|
|
+ * Could be further optimized: when the first join is an outer join, then the rest can be omitted
|
|
|
|
+ */
|
|
|
|
+ public function GetMandatoryTables(&$aTables = null)
|
|
|
|
+ {
|
|
|
|
+ if (is_null($aTables)) $aTables = array();
|
|
|
|
+
|
|
|
|
+ foreach($this->m_aClassIds as $sClass => $oExpression)
|
|
|
|
+ {
|
|
|
|
+ $oExpression->CollectUsedParents($aTables);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
public function GetUnresolvedFields($sAlias, &$aUnresolved)
|
|
public function GetUnresolvedFields($sAlias, &$aUnresolved)
|
|
{
|
|
{
|
|
$this->m_oConditionExpr->GetUnresolvedFields($sAlias, $aUnresolved);
|
|
$this->m_oConditionExpr->GetUnresolvedFields($sAlias, $aUnresolved);
|
|
@@ -1204,6 +1225,11 @@ class QueryBuilderExpressions
|
|
{
|
|
{
|
|
$this->m_aJoinFields[$index] = $oExpression->Translate($aTranslationData, $bMatchAll, $bMarkFieldsAsResolved);
|
|
$this->m_aJoinFields[$index] = $oExpression->Translate($aTranslationData, $bMatchAll, $bMarkFieldsAsResolved);
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ foreach($this->m_aClassIds as $sClass => $oExpression)
|
|
|
|
+ {
|
|
|
|
+ $this->m_aClassIds[$sClass] = $oExpression->Translate($aTranslationData, $bMatchAll, $bMarkFieldsAsResolved);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
public function RenameParam($sOldName, $sNewName)
|
|
public function RenameParam($sOldName, $sNewName)
|