'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 ) );
*/
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->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;
- }
+ }
/**