diff options
Diffstat (limited to 'www/wiki/extensions/SemanticMediaWiki/src/PropertyAnnotators/SortKeyPropertyAnnotator.php')
-rw-r--r-- | www/wiki/extensions/SemanticMediaWiki/src/PropertyAnnotators/SortKeyPropertyAnnotator.php | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/www/wiki/extensions/SemanticMediaWiki/src/PropertyAnnotators/SortKeyPropertyAnnotator.php b/www/wiki/extensions/SemanticMediaWiki/src/PropertyAnnotators/SortKeyPropertyAnnotator.php new file mode 100644 index 00000000..387608f1 --- /dev/null +++ b/www/wiki/extensions/SemanticMediaWiki/src/PropertyAnnotators/SortKeyPropertyAnnotator.php @@ -0,0 +1,48 @@ +<?php + +namespace SMW\PropertyAnnotators; + +use SMW\DIProperty; +use SMW\PropertyAnnotator; + +/** + * @license GNU GPL v2+ + * @since 1.9 + * + * @author mwjames + */ +class SortKeyPropertyAnnotator extends PropertyAnnotatorDecorator { + + /** + * @var string + */ + private $defaultSort; + + /** + * @since 1.9 + * + * @param PropertyAnnotator $propertyAnnotator + * @param string $defaultSort + */ + public function __construct( PropertyAnnotator $propertyAnnotator, $defaultSort ) { + parent::__construct( $propertyAnnotator ); + $this->defaultSort = $defaultSort; + } + + protected function addPropertyValues() { + + $sortkey = $this->defaultSort ? $this->defaultSort : $this->getSemanticData()->getSubject()->getSortKey(); + + $property = $this->dataItemFactory->newDIProperty( + DIProperty::TYPE_SORTKEY + ); + + if ( !$this->getSemanticData()->hasProperty( $property ) ) { + $this->getSemanticData()->addPropertyObjectValue( + $property, + $this->dataItemFactory->newDIBlob( $sortkey ) + ); + } + } + +} |