Netbrain has uploaded a new change for review.
https://gerrit.wikimedia.org/r/125955
Change subject: Added values from category and values from subpage property
parameters
......................................................................
Added values from category and values from subpage property parameters
Change-Id: Ie110dc939faf16fe4797ef39b22349a983f57269
---
M src/main/parserfunction/Sift.php
1 file changed, 71 insertions(+), 0 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/SemanticSifter
refs/changes/55/125955/1
diff --git a/src/main/parserfunction/Sift.php b/src/main/parserfunction/Sift.php
index b8ca4c5..5784c9a 100644
--- a/src/main/parserfunction/Sift.php
+++ b/src/main/parserfunction/Sift.php
@@ -2,9 +2,11 @@
namespace SemanticSifter\ParserFunction;
+use Category;
use ParamProcessor\Processor;
use SemanticSifter\Model\FilterStorageHTTPQuery;
use SMW\StoreFactory;
+use Title;
class Sift
{
@@ -282,6 +284,13 @@
switch($key){
case 'values':
$this->propertyValues[$property] =
explode(',',$value);
+ break;
+ case 'values from category':
+ $this->propertyValues[$property] =
$this->getValuesFromCategory($value);
+ break;
+ case 'values from subpage':
+ $this->propertyValues[$property] =
$this->getValuesFromSubpage($value);
+ break;
}
}
}
@@ -380,4 +389,66 @@
)
);
}
+
+ /**
+ * @param $category string
+ * @return array
+ */
+ private function getValuesFromCategory($category){
+ global $wgParser;
+ $category = $wgParser->recursiveTagParse($category);
+ $category = Title::newFromText($category);
+ if ( is_null( $category ) ) {
+ return array();
+ }
+ $category = Category::newFromTitle($category);
+ $catMembers = $category->getMembers();
+ $result = array();
+ while($catMembers->valid()){
+ /**
+ * @var $member Title
+ */
+ $member = $catMembers->current();
+ $result[] = $member->getText();
+ $catMembers->next();
+ }
+ return $result;
+ }
+
+ /**
+ * @param $title string
+ * @return array
+ */
+ private function getValuesFromSubpage($title){
+ global $wgParser;
+ $title = $wgParser->recursiveTagParse($title);
+ $title = Title::newFromText($title);
+ if ( is_null( $title ) ) {
+ return array();
+ }
+
+ $subPages = $title->getSubpages();
+ if(empty($subPages)){
+ return array();
+ }
+ /** @var Title[] $titles */
+ $titles[ ] = $title;
+ while ( $subPages->valid() ) {
+ $titles[ ] = $subPages->current();
+ $subPages->next();
+ }
+
+ $result = array();
+ foreach ( $titles as $title ) {
+ $titleText = $title->getFullText();
+ $titleTextParts = explode( '/', $titleText );
+ $titleText = '';
+ foreach ( $titleTextParts as $part ) {
+ $titleText .= $part;
+ $result[ $titleText ] = null;
+ $titleText .= '/';
+ }
+ }
+ return array_keys($result);
+ }
}
\ No newline at end of file
--
To view, visit https://gerrit.wikimedia.org/r/125955
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Ie110dc939faf16fe4797ef39b22349a983f57269
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/SemanticSifter
Gerrit-Branch: master
Gerrit-Owner: Netbrain <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits