hook */ public static function efRefbaseParserInit( $parser ) { $parser->setHook( 'refbase', 'RefbaseHooks::efRefbaseRender' ); return true; } /** * Define special formatting for this tag */ private static function makeOutputString ( $str ) { return $str; } /** * Add
 tags around error message and return
	 */
	private static function makeErrorOutputString ( $errMsg ) {
		$errMsg = "Refbase: 
" . $errMsg; $preMsg = Html::openElement( 'pre' ) . $errMsg . Html::closeElement( 'pre' ); return self::makeOutputString( $preMsg ); } /** * Main function: parse input and create HTML table with events */ public static function efRefbaseRender( $input, array $args, Parser $parser, PPFrame $frame ) { // Global parameters global $wgRefbaseDefaultTagType; global $wgRefbaseDefaultOutputType; global $wgRefbaseDefaultCitationType; // Read arguments if ( isset( $args['tagtype'] ) ) { $tagType = $args['tagtype']; } else { $tagType = $wgRefbaseDefaultTagType; } if ( ! ( strtolower( $tagType ) === 'serial' ) && ! ( strtolower( $tagType ) === 'citekey' ) ) { $errStr = wfMessage( 'refbase-error-tagtype' )->text(); return self::makeErrorOutputString( $errStr ); } if ( isset( $args['output'] ) ) { $outputType = $args['output']; } else { $outputType = $wgRefbaseDefaultOutputType; } if ( ! ( strtolower( $outputType ) === 'cite_journal' ) && ! ( strtolower( $outputType ) === 'link' ) && ! ( strtolower( $outputType ) === 'cite' ) ) { $errStr = wfMessage( 'refbase-error-outputtype' )->text(); return self::makeErrorOutputString( $errStr ); } if ( isset( $args['citationtype'] ) ) { $citationType = $args['citationtype']; } else { $citationType = $wgRefbaseDefaultCitationType; } if ( ! ( strtolower( $citationType ) === 'minimal' ) && ! ( strtolower( substr( $citationType, 0, 3 ) ) === 'rb-' ) ) { $errStr = wfMessage( 'refbase-error-citation-type' )->text(); return self::makeErrorOutputString( $errStr ); } // Order tag types switch ( strtolower( $tagType ) ) { case 'serial': $tagTypeList = array( 'serial', 'citekey' ); break; case 'citekey': $tagTypeList = array( 'citekey', 'serial' ); break; } // Instantiate renderer based on options $refbaseRenderer = RefbaseRenderer::create( $outputType, $citationType ); // Request list of fields to extract $fieldList = $refbaseRenderer->getFieldList(); // Perform database query to get entry $refbaseDbConnector = new RefbaseConnector(); $entry = ""; if ( !$refbaseDbConnector->getEntry( $input, $tagTypeList, $entry, $fieldList ) ) { return self::makeErrorOutputString( $entry ); } // Generate output $citekey = $input; $renderOpts = array( 'citekey' => $citekey ); $outputStr = ""; if ( !$refbaseRenderer->render( $entry, $outputStr, $renderOpts ) ) { return self::makeErrorOutputString( $outputStr ); } $outputStr = $parser->recursiveTagParse( $outputStr ); return self::makeOutputString( $outputStr ); } }