[ Index ]

PHP Cross Reference of MediaWiki-1.24.0

title

Body

[close]

/extensions/ParserFunctions/ -> ParserFunctions.php (source)

   1  <?php
   2  
   3  if ( !defined( 'MEDIAWIKI' ) ) {
   4      die( 'This file is a MediaWiki extension, it is not a valid entry point' );
   5  }
   6  
   7  /**
   8   * CONFIGURATION
   9   * These variables may be overridden in LocalSettings.php after you include the
  10   * extension file.
  11   */
  12  
  13  /**
  14   * Defines the maximum length of a string that string functions are allowed to operate on
  15   * Prevention against denial of service by string function abuses.
  16   */
  17  $wgPFStringLengthLimit = 1000;
  18  
  19  /**
  20   * Enable string functions.
  21   *
  22   * Set this to true if you want your users to be able to implement their own
  23   * parsers in the ugliest, most inefficient programming language known to man:
  24   * MediaWiki wikitext with ParserFunctions.
  25   *
  26   * WARNING: enabling this may have an adverse impact on the sanity of your users.
  27   * An alternative, saner solution for embedding complex text processing in
  28   * MediaWiki templates can be found at: http://www.mediawiki.org/wiki/Extension:Scribunto
  29   */
  30  $wgPFEnableStringFunctions = false;
  31  
  32  /**
  33    * Enable string functions, when running Wikimedia Jenkins unit tests.
  34    *
  35    * Running Jenkins unit tests without setting $wgPFEnableStringFunctions = true;
  36    * will cause all the parser tests for string functions to be skipped.
  37    */
  38  if ( isset( $wgWikimediaJenkinsCI ) && $wgWikimediaJenkinsCI === true ) {
  39      $wgPFEnableStringFunctions = true;
  40  }
  41  
  42  /** REGISTRATION */
  43  $wgExtensionCredits['parserhook'][] = array(
  44      'path' => __FILE__,
  45      'name' => 'ParserFunctions',
  46      'version' => '1.6.0',
  47      'url' => 'https://www.mediawiki.org/wiki/Extension:ParserFunctions',
  48      'author' => array( 'Tim Starling', 'Robert Rohde', 'Ross McClure', 'Juraj Simlovic' ),
  49      'descriptionmsg' => 'pfunc_desc',
  50  );
  51  
  52  $wgAutoloadClasses['ExtParserFunctions'] = __DIR__ . '/ParserFunctions_body.php';
  53  $wgAutoloadClasses['ExprParser'] = __DIR__ . '/Expr.php';
  54  $wgAutoloadClasses['ExprError'] = __DIR__ . '/Expr.php';
  55  $wgAutoloadClasses['Scribunto_LuaParserFunctionsLibrary'] = __DIR__ . '/ParserFunctions.library.php';
  56  
  57  $wgMessagesDirs['ParserFunctions'] = __DIR__ . '/i18n';
  58  $wgExtensionMessagesFiles['ParserFunctions'] = __DIR__ . '/ParserFunctions.i18n.php';
  59  $wgExtensionMessagesFiles['ParserFunctionsMagic'] = __DIR__ . '/ParserFunctions.i18n.magic.php';
  60  
  61  $wgParserTestFiles[] = __DIR__ . "/funcsParserTests.txt";
  62  $wgParserTestFiles[] = __DIR__ . "/stringFunctionTests.txt";
  63  
  64  $wgHooks['ParserFirstCallInit'][] = 'wfRegisterParserFunctions';
  65  
  66  /**
  67   * @param $parser Parser
  68   * @return bool
  69   */
  70  function wfRegisterParserFunctions( $parser ) {
  71      global $wgPFEnableStringFunctions;
  72  
  73      // These functions accept DOM-style arguments
  74      $parser->setFunctionHook( 'if', 'ExtParserFunctions::ifObj', SFH_OBJECT_ARGS );
  75      $parser->setFunctionHook( 'ifeq', 'ExtParserFunctions::ifeqObj', SFH_OBJECT_ARGS );
  76      $parser->setFunctionHook( 'switch', 'ExtParserFunctions::switchObj', SFH_OBJECT_ARGS );
  77      $parser->setFunctionHook( 'ifexist', 'ExtParserFunctions::ifexistObj', SFH_OBJECT_ARGS );
  78      $parser->setFunctionHook( 'ifexpr', 'ExtParserFunctions::ifexprObj', SFH_OBJECT_ARGS );
  79      $parser->setFunctionHook( 'iferror', 'ExtParserFunctions::iferrorObj', SFH_OBJECT_ARGS );
  80      $parser->setFunctionHook( 'time', 'ExtParserFunctions::timeObj', SFH_OBJECT_ARGS );
  81      $parser->setFunctionHook( 'timel', 'ExtParserFunctions::localTimeObj', SFH_OBJECT_ARGS );
  82  
  83      $parser->setFunctionHook( 'expr', 'ExtParserFunctions::expr' );
  84      $parser->setFunctionHook( 'rel2abs', 'ExtParserFunctions::rel2abs' );
  85      $parser->setFunctionHook( 'titleparts', 'ExtParserFunctions::titleparts' );
  86  
  87      // String Functions
  88      if ( $wgPFEnableStringFunctions ) {
  89          $parser->setFunctionHook( 'len',       'ExtParserFunctions::runLen'       );
  90          $parser->setFunctionHook( 'pos',       'ExtParserFunctions::runPos'       );
  91          $parser->setFunctionHook( 'rpos',      'ExtParserFunctions::runRPos'      );
  92          $parser->setFunctionHook( 'sub',       'ExtParserFunctions::runSub'       );
  93          $parser->setFunctionHook( 'count',     'ExtParserFunctions::runCount'     );
  94          $parser->setFunctionHook( 'replace',   'ExtParserFunctions::runReplace'   );
  95          $parser->setFunctionHook( 'explode',   'ExtParserFunctions::runExplode'   );
  96          $parser->setFunctionHook( 'urldecode', 'ExtParserFunctions::runUrlDecode' );
  97      }
  98  
  99      return true;
 100  }
 101  
 102  $wgHooks['UnitTestsList'][] = 'wfParserFunctionsTests';
 103  
 104  /**
 105   * @param $files array
 106   * @return bool
 107   */
 108  function wfParserFunctionsTests( &$files ) {
 109      $files[] = __DIR__ . '/tests/ExpressionTest.php';
 110      return true;
 111  }
 112  
 113  $wgHooks['ScribuntoExternalLibraries'][] = function( $engine, array &$extraLibraries ) {
 114      if( $engine == 'lua' ) {
 115          $extraLibraries['mw.ext.ParserFunctions'] = 'Scribunto_LuaParserFunctionsLibrary';
 116      }
 117      return true;
 118  };


Generated: Fri Nov 28 14:03:12 2014 Cross-referenced by PHPXref 0.7.1