diff options
Diffstat (limited to 'www/wiki/extensions/SemanticMediaWiki/src/Elastic/QueryEngine/DescriptionInterpreters/NamespaceDescriptionInterpreter.php')
-rw-r--r-- | www/wiki/extensions/SemanticMediaWiki/src/Elastic/QueryEngine/DescriptionInterpreters/NamespaceDescriptionInterpreter.php | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/www/wiki/extensions/SemanticMediaWiki/src/Elastic/QueryEngine/DescriptionInterpreters/NamespaceDescriptionInterpreter.php b/www/wiki/extensions/SemanticMediaWiki/src/Elastic/QueryEngine/DescriptionInterpreters/NamespaceDescriptionInterpreter.php new file mode 100644 index 00000000..480d2680 --- /dev/null +++ b/www/wiki/extensions/SemanticMediaWiki/src/Elastic/QueryEngine/DescriptionInterpreters/NamespaceDescriptionInterpreter.php @@ -0,0 +1,57 @@ +<?php + +namespace SMW\Elastic\QueryEngine\DescriptionInterpreters; + +use SMW\Elastic\QueryEngine\ConditionBuilder; +use SMW\Query\Language\NamespaceDescription; + +/** + * @license GNU GPL v2+ + * @since 3.0 + * + * @author mwjames + */ +class NamespaceDescriptionInterpreter { + + /** + * @var ConditionBuilder + */ + private $conditionBuilder; + + /** + * @since 3.0 + * + * @param ConditionBuilder $conditionBuilder + */ + public function __construct( ConditionBuilder $conditionBuilder ) { + $this->conditionBuilder = $conditionBuilder; + } + + /** + * @since 3.0 + * + * @param NamespaceDescription $description + * + * @return Condition + */ + public function interpretDescription( NamespaceDescription $description, $isConjunction = false ) { + + $params = []; + $fieldMapper = $this->conditionBuilder->getFieldMapper(); + + $namespace = $description->getNamespace(); + $params = $fieldMapper->term( 'subject.namespace', $namespace ); + + $condition = $this->conditionBuilder->newCondition( $params ); + $condition->type( '' ); + + if ( !$isConjunction ) { + $condition->type( 'filter' ); + } + + $condition->log( [ 'NamespaceDescription' => $description->getQueryString() ] ); + + return $condition; + } + +} |