diff --git a/core/oql/expression.class.inc.php b/core/oql/expression.class.inc.php index 2cea667be..ff899d170 100644 --- a/core/oql/expression.class.inc.php +++ b/core/oql/expression.class.inc.php @@ -34,6 +34,14 @@ abstract class Expression // recursive translation of identifiers abstract public function GetUnresolvedFields($sAlias, &$aUnresolved); + + /** + * @param array $aTranslationData + * @param bool $bMatchAll + * @param bool $bMarkFieldsAsResolved + * + * @return Expression Translated expression + */ abstract public function Translate($aTranslationData, $bMatchAll = true, $bMarkFieldsAsResolved = true); // recursive rendering (aArgs used as input by default, or used as output if bRetrofitParams set to True diff --git a/sources/application/search/searchform.class.inc.php b/sources/application/search/searchform.class.inc.php index ab222175e..3b0454976 100644 --- a/sources/application/search/searchform.class.inc.php +++ b/sources/application/search/searchform.class.inc.php @@ -122,9 +122,18 @@ class SearchForm $sHtml .= "
\n
\n"; $sHtml .= "\n"; + if (isset($aExtraParams['query_params'])) + { + $aArgs = $aExtraParams['query_params']; + } + else + { + $aArgs = array(); + } + $aFields = $this->GetFields($oSet); $oSearch = $oSet->GetFilter(); - $aCriterion = $this->GetCriterion($oSearch, $aFields); + $aCriterion = $this->GetCriterion($oSearch, $aFields, $aArgs); $oBaseSearch = $oSearch->DeepClone(); $oBaseSearch->ResetCondition(); @@ -284,12 +293,22 @@ class SearchForm * @param \DBSearch $oSearch * @param array $aFields * + * @param array $aArgs + * * @return array */ - public function GetCriterion($oSearch, $aFields) + public function GetCriterion($oSearch, $aFields, $aArgs = array()) { $oExpression = $oSearch->GetCriteria(); + if (!empty($aArgs)) + { + $aArgs = MetaModel::PrepareQueryArguments($aArgs); + + $sOQL = $oExpression->Render($aArgs); + $oExpression = Expression::FromOQL($sOQL); + } + $aOrCriterion = array(); $aORExpressions = Expression::Split($oExpression, 'OR'); foreach($aORExpressions as $oORSubExpr)