From 310e103f6298ba053983f3ec4a8ac735aa47e7a9 Mon Sep 17 00:00:00 2001 From: Olav Frengstad Date: Fri, 8 Jun 2012 16:28:00 +0200 Subject: [PATCH] Add support for localparams for queries --- classes/ezfezpsolrquerybuilder.php | 2 +- search/plugins/ezsolr/ezsolr.php | 11 +++++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/classes/ezfezpsolrquerybuilder.php b/classes/ezfezpsolrquerybuilder.php index 3d93b776..6f9042f5 100644 --- a/classes/ezfezpsolrquerybuilder.php +++ b/classes/ezfezpsolrquerybuilder.php @@ -989,7 +989,7 @@ protected function getParamFilterQuery( $parameterList ) $baseNameInfo = eZSolr::getFieldName( $baseName, true, 'filter' ); if ( is_array( $baseNameInfo ) and isset( $baseNameInfo['contentClassId'] ) ) { - $filterQueryList[] = '( ' . eZSolr::getMetaFieldName( 'contentclass_id' ) . ':' . $baseNameInfo['contentClassId'] . ' AND ' . $baseNameInfo['fieldName'] . ':' . $value . ' )' ; + $filterQueryList[] = $baseNameInfo['localVars'] . '( ' . eZSolr::getMetaFieldName( 'contentclass_id' ) . ':' . $baseNameInfo['contentClassId'] . ' AND ' . $baseNameInfo['fieldName'] . ':' . $value . ' )' ; } else { diff --git a/search/plugins/ezsolr/ezsolr.php b/search/plugins/ezsolr/ezsolr.php index 0c947081..1256ba20 100644 --- a/search/plugins/ezsolr/ezsolr.php +++ b/search/plugins/ezsolr/ezsolr.php @@ -190,6 +190,12 @@ static function getMetaAttributeType( $name, $context = 'search' ) */ static function getFieldName( $baseName, $includingClassID = false, $context = 'search' ) { + $localVars = ""; + if (preg_match('/^(\{[^}]+\})(.+)$/', $baseName, $matches)) { + $baseName = array_pop($matches); + $localVars = array_pop($matches); + } + // If the base name is a meta field, get the correct field name. if ( eZSolr::hasMetaAttributeType( $baseName, $context ) ) { @@ -247,10 +253,11 @@ static function getFieldName( $baseName, $includingClassID = false, $context = ' if ( $includingClassID ) { return array( 'fieldName' => $fieldName, - 'contentClassId' => $contentClassAttribute->attribute( 'contentclass_id' ) ); + 'contentClassId' => $contentClassAttribute->attribute( 'contentclass_id' ), + 'localVars' => $localVars ); } else - return $fieldName; + return $localVars . $fieldName; } }