https://www.mediawiki.org/wiki/Special:Code/MediaWiki/114427

Revision: 114427
Author:   danwe
Date:     2012-03-22 18:17:36 +0000 (Thu, 22 Mar 2012)
Log Message:
-----------
intro/outro/default parameters for "?" parser function implemented

Modified Paths:
--------------
    trunk/extensions/SemanticExpressiveness/includes/SemExExpressiveStringPF.php
    trunk/extensions/SemanticExpressiveness/includes/SemExQueryPF.php

Modified: 
trunk/extensions/SemanticExpressiveness/includes/SemExExpressiveStringPF.php
===================================================================
--- 
trunk/extensions/SemanticExpressiveness/includes/SemExExpressiveStringPF.php    
    2012-03-22 18:07:15 UTC (rev 114426)
+++ 
trunk/extensions/SemanticExpressiveness/includes/SemExExpressiveStringPF.php    
    2012-03-22 18:17:36 UTC (rev 114427)
@@ -43,7 +43,7 @@
         * @return array
         */
        protected function getParameterInfo( $type ) {
-               $params = array();
+               $params = SemExExpressiveStringOutputOptions::getPFParams();
                
                # input text.
                # since 0.1
@@ -55,13 +55,11 @@
                
                $params['detect'] = new ListParameter( 'detect' );
                $params['detect']->addCriteria( $pieceTypesCriteria );
-               $params['detect']->setDefault( false, false );
+               $params['detect']->setDefault( array( '' ), false );
                
                $params['ignore'] = new ListParameter( 'ignore' );
                $params['ignore']->addCriteria( $pieceTypesCriteria );
                $params['ignore']->setDefault( array(), false );
-                               
-               $params = array_merge( $params, 
SemExExpressiveStringOutputOptions::getPFParams() );
                
                return $params;
        }
@@ -102,7 +100,7 @@
                // get all types that should be handled by this
                $enabledTypes = array();
                
-               if( $parameters['detect'] !== false ) {
+               if( implode( '', $parameters['detect'] ) !== '' ) { // '' 
counts as if parameter not set
                        foreach( $parameters['detect'] as $typeName ) {
                                $type = 
SemExExpressiveString::getRegisteredPieceTypeByName( $typeName );
                                if( $type !== null ) {
@@ -115,11 +113,13 @@
                        $enabledTypes = 
SemExExpressiveString::getRegisteredPieceTypeNames();
                }
                
-               $enabledTypes = array_flip( $enabledTypes );
-               foreach( $parameters['ignore'] as $typeName ) {
-                       unset( $enabledTypes[ 
SemExExpressiveString::getRegisteredPieceTypeByName( $typeName ) ] );
+               if( $enabledTypes !== null ) {
+                       $enabledTypes = array_flip( $enabledTypes );
+                       foreach( $parameters['ignore'] as $typeName ) {
+                               unset( $enabledTypes[ 
SemExExpressiveString::getRegisteredPieceTypeByName( $typeName ) ] );
+                       }
+                       $enabledTypes = array_flip( $enabledTypes );
                }
-               $enabledTypes = array_flip( $enabledTypes );
                
                // build expressive string from input with enabled types:
                $exprString = new SemExExpressiveString( $parameters['text'], 
$this->parser, $enabledTypes );

Modified: trunk/extensions/SemanticExpressiveness/includes/SemExQueryPF.php
===================================================================
--- trunk/extensions/SemanticExpressiveness/includes/SemExQueryPF.php   
2012-03-22 18:07:15 UTC (rev 114426)
+++ trunk/extensions/SemanticExpressiveness/includes/SemExQueryPF.php   
2012-03-22 18:17:36 UTC (rev 114427)
@@ -20,27 +20,47 @@
                        $smwgIQRunningNumber++;
                        
                        $params = func_get_args();
-                       array_shift( $params ); // remove $parser
+                       array_shift( $params ); // remove $parser               
        
+                       $params = static::validateParams( $params );
                        
-                       $query = SemExShortQuery::newFromPFParams(
-                                       $params,
-                                       array( 'property', 
Validator::PARAM_UNNAMED )
-                       );
-                       $options = 
SemExShortQueryOutputOptions::newFromPFParams( $params );
+                       $query = SemExShortQuery::newFromValidatedParams( 
$params );
+                       $options = 
SemExShortQueryOutputOptions::newFromValidatedParams( $params );
                        
                        if( ! $query || ! $options ) {
                                // @ToDo: real error message (anyway, in what 
case can this happen?)
                                return 'FALSE';
                        }
                        
-                       $result = SemExShortQueryProcessor::getResultFromQuery( 
$parser, $query, $options );                    
-               } else {
+                       $result = SemExShortQueryProcessor::getResultFromQuery( 
$parser, $query, $options );
+                       
+                       if( $result === '' ) {
+                               $result = $params['default'];
+                       } else {
+                               $result = // allow ' ' in form of '_' around 
the result
+                                               preg_replace( '/_$/', ' ', 
$params['intro'] ) .
+                                               $result .
+                                               preg_replace( '/^_/', ' ', 
$params['outro'] );
+                       }
+               }
+               else {
                        $result = smwfEncodeMessages( array( wfMsgForContent( 
'smw_iq_disabled' ) ) );
                }
                
                 return $result;
        }
        
+       protected static function validateParams( array $rawParams, &$validator 
= null ) {
+               $validator = new Validator();
+               $validator->setFunctionParams(
+                               $rawParams,
+                               static::getParameters(),
+                               array( 'property', Validator::PARAM_UNNAMED ) 
// 'property' is parameter 1
+               );
+               $validator->validateParameters();
+               
+               return $validator->getParameterValues();
+       }
+       
        /**
         * Returns a description of all allowed function Parameters.
         * 
@@ -50,8 +70,13 @@
                $params = array();
                
                $params['intro']   = new Parameter( 'intro' );
+               $params['intro']->setDefault( '' );
+               
                $params['outro']   = new Parameter( 'outro' );
+               $params['outro']->setDefault( '' );
+               
                $params['default'] = new Parameter( 'default' );
+               $params['default']->setDefault( '' );
                
                // add function parameters describing the querry and its 
options:
                $params = array_merge(


_______________________________________________
MediaWiki-CVS mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs

Reply via email to