'MAG_CURRENTMONTHNAMEGEN',
'MAG_CURRENTMONTHABBREV',
'MAG_CURRENTDAY',
+ 'MAG_CURRENTDAY2',
'MAG_CURRENTDAYNAME',
'MAG_CURRENTYEAR',
'MAG_CURRENTTIME',
'MAG_UC',
'MAG_FULLPAGENAME',
'MAG_FULLPAGENAMEE',
+ 'MAG_RAW',
+ 'MAG_SUBPAGENAME',
+ 'MAG_SUBPAGENAMEE',
);
if ( ! defined( 'MEDIAWIKI_INSTALL' ) )
wfRunHooks( 'MagicWordMagicWords', array( &$magicWords ) );
MAG_CURRENTMONTHNAMEGEN,
MAG_CURRENTMONTHABBREV,
MAG_CURRENTDAY,
+ MAG_CURRENTDAY2,
MAG_CURRENTDAYNAME,
MAG_CURRENTYEAR,
MAG_CURRENTTIME,
MAG_CURRENTWEEK,
MAG_CURRENTDOW,
MAG_REVISIONID,
+ MAG_SUBPAGENAME,
+ MAG_SUBPAGENAMEE
);
if ( ! defined( 'MEDIAWIKI_INSTALL' ) )
wfRunHooks( 'MagicWordwgVariableIDs', array( &$wgVariableIDs ) );
* This class encapsulates "magic words" such as #redirect, __NOTOC__, etc.
* Usage:
* if (MagicWord::get( MAG_REDIRECT )->match( $text ) )
- *
- * Possible future improvements:
+ *
+ * Possible future improvements:
* * Simultaneous searching for a number of magic words
* * $wgMagicWords in shared memory
*
- * Please avoid reading the data out of one of these objects and then writing
+ * Please avoid reading the data out of one of these objects and then writing
* special case code. If possible, add another match()-like function here.
*
* @package MediaWiki
*/
var $mId, $mSynonyms, $mCaseSensitive, $mRegex;
var $mRegexStart, $mBaseRegex, $mVariableRegex;
- var $mModified;
+ var $mModified;
/**#@-*/
function MagicWord($id = 0, $syn = '', $cs = false) {
*/
function &get( $id ) {
global $wgMagicWords;
-
+
if ( !is_array( $wgMagicWords ) ) {
wfDebugDieBacktrace( "Incorrect initialisation order, \$wgMagicWords does not exist\n" );
}
}
return $wgMagicWords[$id];
}
-
+
# Initialises this object with an ID
function load( $id ) {
- global $wgContLang;
+ global $wgContLang;
$this->mId = $id;
$wgContLang->getMagic( $this );
}
-
+
/**
* Preliminary initialisation
* @access private
# This was used for matching "$1" variables, but different uses of the feature will have
# different restrictions, which should be checked *after* the MagicWord has been matched,
# not here. - IMSoP
- $escSyn = array_map( 'preg_quote', $this->mSynonyms );
+
+ $escSyn = array();
+ foreach ( $this->mSynonyms as $synonym )
+ // In case a magic word contains /, like that's going to happen;)
+ $escSyn[] = preg_quote( $synonym, '/' );
$this->mBaseRegex = implode( '|', $escSyn );
+
$case = $this->mCaseSensitive ? '' : 'i';
$this->mRegex = "/{$this->mBaseRegex}/{$case}";
$this->mRegexStart = "/^(?:{$this->mBaseRegex})/{$case}";
$this->mVariableRegex = str_replace( "\\$1", "(.*?)", $this->mRegex );
- $this->mVariableStartToEndRegex = str_replace( "\\$1", "(.*?)",
+ $this->mVariableStartToEndRegex = str_replace( "\\$1", "(.*?)",
"/^(?:{$this->mBaseRegex})$/{$case}" );
}
-
+
/**
* Gets a regex representing matching the word
*/
return $this->mRegex;
}
+ /**
+ * Gets the regexp case modifier to use, i.e. i or nothing, to be used if
+ * one is using MagicWord::getBaseRegex(), otherwise it'll be included in
+ * the complete expression
+ */
+ function getRegexCase() {
+ if ( $this->mRegex === '' )
+ $this->initRegex();
+
+ return $this->mCaseSensitive ? '' : 'i';
+ }
+
/**
* Gets a regex matching the word, if it is at the string start
*/
}
return $this->mBaseRegex;
}
-
+
/**
* Returns true if the text contains the word
* @return bool
$wgMagicFound = false;
$text = preg_replace_callback( $this->getRegexStart(), 'pregRemoveAndRecord', $text );
return $wgMagicFound;
- }
+ }
/**
function getVariableRegex() {
if ( $this->mVariableRegex == '' ) {
$this->initRegex();
- }
+ }
return $this->mVariableRegex;
}
function getVariableStartToEndRegex() {
if ( $this->mVariableStartToEndRegex == '' ) {
$this->initRegex();
- }
+ }
return $this->mVariableStartToEndRegex;
}
}
/**
- * Returns true if the last call to replace() or substituteCallback()
+ * Returns true if the last call to replace() or substituteCallback()
* returned a modified text, otherwise false.
*/
function getWasModified(){
* This method uses the php feature to do several replacements at the same time,
* thereby gaining some efficiency. The result is placed in the out variable
* $result. The return value is true if something was replaced.
- * @static
+ * @static
**/
function replaceMultiple( $magicarr, $subject, &$result ){
$search = array();