From a67fce66fc4752d3d0d3651bde430110b3edd0d0 Mon Sep 17 00:00:00 2001 From: acognet Date: Fri, 26 Jun 2020 16:42:03 +0200 Subject: [PATCH] =?UTF-8?q?N=C2=B02999=20-=20Optimize=20OQL?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/dbobjectsearch.class.php | 12 ++++++------ core/dbobjectset.class.php | 4 ++-- .../criterionconversion/criteriontooql.class.inc.php | 2 +- sources/application/search/searchform.class.inc.php | 2 +- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/core/dbobjectsearch.class.php b/core/dbobjectsearch.class.php index 0dba2f23c..ddf88be2a 100644 --- a/core/dbobjectsearch.class.php +++ b/core/dbobjectsearch.class.php @@ -1324,7 +1324,7 @@ class DBObjectSearch extends DBSearch // Make the list of acceptable arguments... could be factorized with run_query, into oSearch->GetQueryParams($bExclude magic params) $aNakedMagicArguments = array(); - foreach (MetaModel::PrepareQueryArguments(array()) as $sArgName => $value) + foreach (MetaModel::PrepareQueryArguments(array(),array(), $this->GetExpectedArguments()) as $sArgName => $value) { $iPos = strpos($sArgName, '->object()'); if ($iPos === false) @@ -1387,7 +1387,7 @@ class DBObjectSearch extends DBSearch { $aParams = array_merge($aContextParams, $this->m_aParams); } - $aParams = MetaModel::PrepareQueryArguments($aParams); + $aParams = MetaModel::PrepareQueryArguments($aParams,array(), $this->GetExpectedArguments()); } else { @@ -1580,7 +1580,7 @@ class DBObjectSearch extends DBSearch $aRet = array('selects' => array(), 'joins' => array(), 'where' => array()); $aParams = array_merge($this->m_aParams); - $aParams = MetaModel::PrepareQueryArguments($aParams); + $aParams = MetaModel::PrepareQueryArguments($aParams, array(), $this->GetExpectedArguments()); foreach ($this->m_aSelectedClasses as $sAlias => $sClass) { @@ -1787,7 +1787,7 @@ class DBObjectSearch extends DBSearch { $oSQLObjectQueryBuilder = new SQLObjectQueryBuilder($this); $oSQLQuery = $oSQLObjectQueryBuilder->MakeSQLObjectDeleteQuery(); - $aScalarArgs = MetaModel::PrepareQueryArguments($aArgs, $this->GetInternalParams()); + $aScalarArgs = MetaModel::PrepareQueryArguments($aArgs, $this->GetInternalParams(), $this->GetExpectedArguments()); $sRet = $oSQLQuery->RenderDelete($aScalarArgs); return $sRet; } @@ -1803,7 +1803,7 @@ class DBObjectSearch extends DBSearch { $oSQLObjectQueryBuilder = new SQLObjectQueryBuilder($this); $oSQLQuery = $oSQLObjectQueryBuilder->MakeSQLObjectUpdateQuery($aValues); - $aScalarArgs = MetaModel::PrepareQueryArguments($aArgs, $this->GetInternalParams()); + $aScalarArgs = MetaModel::PrepareQueryArguments($aArgs, $this->GetInternalParams(), $this->GetExpectedArguments()); $sRet = $oSQLQuery->RenderUpdate($aScalarArgs); return $sRet; } @@ -1822,7 +1822,7 @@ class DBObjectSearch extends DBSearch { $oSQLObjectQueryBuilder = new SQLObjectQueryBuilder($this); $oSQLQuery = $oSQLObjectQueryBuilder->MakeSQLObjectUpdateQuery($aValues); - $aScalarArgs = MetaModel::PrepareQueryArguments($aArgs, $this->GetInternalParams()); + $aScalarArgs = MetaModel::PrepareQueryArguments($aArgs, $this->GetInternalParams(), $this->GetExpectedArguments()); $sRet = $oSQLQuery->RenderInsert($aScalarArgs); return $sRet; } diff --git a/core/dbobjectset.class.php b/core/dbobjectset.class.php index fa2dea8de..7bd2e3484 100644 --- a/core/dbobjectset.class.php +++ b/core/dbobjectset.class.php @@ -1468,7 +1468,7 @@ class DBObjectSet implements iDBObjectSetIterator public function ListConstantFields() { // The complete list of arguments will include magic arguments (e.g. current_user->attcode) - $aScalarArgs = MetaModel::PrepareQueryArguments($this->m_oFilter->GetInternalParams(), $this->m_aArgs); + $aScalarArgs = MetaModel::PrepareQueryArguments($this->m_oFilter->GetInternalParams(), $this->m_aArgs, $this->m_oFilter->ListParameters()); $aConst = $this->m_oFilter->ListConstantFields(); foreach($aConst as $sClassAlias => $aVals) @@ -1487,7 +1487,7 @@ class DBObjectSet implements iDBObjectSetIterator public function ApplyParameters() { - $aAllArgs = MetaModel::PrepareQueryArguments($this->m_oFilter->GetInternalParams(), $this->m_aArgs); + $aAllArgs = MetaModel::PrepareQueryArguments($this->m_oFilter->GetInternalParams(), $this->m_aArgs, $this->m_oFilter->GetExpectedArguments()); $this->m_oFilter->ApplyParameters($aAllArgs); } } diff --git a/sources/application/search/criterionconversion/criteriontooql.class.inc.php b/sources/application/search/criterionconversion/criteriontooql.class.inc.php index 0c70778d2..cf3e84c8c 100644 --- a/sources/application/search/criterionconversion/criteriontooql.class.inc.php +++ b/sources/application/search/criterionconversion/criteriontooql.class.inc.php @@ -411,7 +411,7 @@ class CriterionToOQL extends CriterionConversionAbstract // Use the 'below' operator by default $oSearch->AddCondition_PointingTo($oHKFilter, $sAttCode); $oCriteria = $oSearch->GetCriteria(); - $aArgs = MetaModel::PrepareQueryArguments(array(), $oSearch->GetInternalParams()); + $aArgs = MetaModel::PrepareQueryArguments(array(), $oSearch->GetInternalParams(), $oSearch->GetExpectedArguments() ); $oSearch->ResetCondition(); $sCondition = $oCriteria->Render($aArgs); } diff --git a/sources/application/search/searchform.class.inc.php b/sources/application/search/searchform.class.inc.php index 7b77e5f2c..86da53990 100644 --- a/sources/application/search/searchform.class.inc.php +++ b/sources/application/search/searchform.class.inc.php @@ -530,7 +530,7 @@ class SearchForm { $aOrCriterion = array(); $bIsEmptyExpression = true; - $aArgs = MetaModel::PrepareQueryArguments($aArgs, $oSearch->GetInternalParams()); + $aArgs = MetaModel::PrepareQueryArguments($aArgs, $oSearch->GetInternalParams(), $oSearch->GetExpectedArguments()); if ($oSearch instanceof DBObjectSearch) {