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

Reply via email to