* Localize time zone regions in Special:Preferences
* Add NUMBEROFACTIVEUSERS magic word, which is like NUMBEROFUSERS, but uses
the active users data from site_stats.
+* (bug 13040) Gender-aware user namespace aliases
=== Bug fixes in 1.15 ===
* (bug 16968) Special:Upload no longer throws useless warnings.
*/
$wgNamespaceAliases = array();
+/**
+ * Whether to check correct gender for all titles. If false, correct gender
+ * alias is only fetched for wgTitle.
+ */
+$wgSlowGenderAliases = true;
+
/**
* Limit images on image description pages to a user-selectable limit. In order
* to reduce disk usage, limits can only be selected from a list.
* @return \type{\string} Namespace text
*/
public function getNsText() {
- global $wgContLang, $wgCanonicalNamespaceNames;
+ global $wgCanonicalNamespaceNames;
if ( '' != $this->mInterwiki ) {
// This probably shouldn't even happen. ohh man, oh yuck.
return $wgCanonicalNamespaceNames[$this->mNamespace];
}
}
+
+ return $this->getNsTextInternal( $this->mNamespace );
+ }
+
+ function getNsTextInternal( $namespace) {
+ global $wgContLang, $wgSlowGenderAliases, $wgTitle, $title;
+ if( $namespace === NS_USER || $namespace === NS_USER_TALK ) {
+ static $gender = null;
+
+ $name = $this->getBaseText();
+ if( !isset($gender[$name] ) ) {
+ $gender[$name] = User::getDefaultOption( 'gender' );
+
+ // wgTitle may not be defined
+ $mytitle = isset($wgTitle) ? $wgTitle: Title::newFromText($title);
+
+ // Check stuff
+ if ( $wgSlowGenderAliases ||
+ // Needs to be checked always to produce desired
+ // effect when viewing user pages
+ ($mytitle && $name === $mytitle->getBaseText()) ) {
+
+ $user = User::newFromName( $name );
+ if ( $user ) $gender[$name] = $user->getOption( 'gender' );
+ }
+ }
+
+ return $wgContLang->getGenderNsText( $this->mNamespace, $gender[$name] );
+ }
return $wgContLang->getNsText( $this->mNamespace );
}
/**
* @return \type{\string} Namespace text
*/
public function getSubjectNsText() {
- global $wgContLang;
- return $wgContLang->getNsText( MWNamespace::getSubject( $this->mNamespace ) );
+ return $this->getNsTextInternal( MWNamespace::getSubject( $this->mNamespace ) );
}
/**
* Get the namespace text of the talk page
* @return \type{\string} Namespace text
*/
public function getTalkNsText() {
- global $wgContLang;
- return( $wgContLang->getNsText( MWNamespace::getTalk( $this->mNamespace ) ) );
+ return $this->getNsTextInternal( MWNamespace::getTalk( $this->mNamespace ) );
}
/**
* Could this title have a corresponding talk page?
'defaultUserOptionOverrides', 'linkTrail', 'namespaceAliases',
'dateFormats', 'datePreferences', 'datePreferenceMigrationMap',
'defaultDateFormat', 'extraUserToggles', 'specialPageAliases',
- 'imageFiles'
+ 'imageFiles', 'genderAliases'
);
static public $mMergeableMapKeys = array( 'messages', 'namespaceNames', 'mathNames',
return isset( $ns[$index] ) ? $ns[$index] : false;
}
+ /**
+ * Like getNsText, but looks first if there is custom alias for given gender
+ */
+ function getGenderNsText( $index, $gender ) {
+ $this->load();
+ if ( isset( $this->genderAliases[$index][$gender] ) ) {
+ return $this->genderAliases[$index][$gender];
+ } else {
+ return $this->getNsText( $index );
+ }
+ }
+
/**
* A convenience function that returns the same thing as
* getNsText() except with '_' changed to ' ', useful for
*
* @return array Dependencies, map of filenames to mtimes
*/
- static function loadLocalisation( $code, $disableCache = false ) {
+ static function loadLocalisation( $code, $disableCache = true ) {
static $recursionGuard = array();
global $wgMemc, $wgEnableSerializedMessages, $wgCheckSerialized;
foreach ( $this->namespaceNames as $index => $name ) {
$this->mNamespaceIds[$this->lc($name)] = $index;
}
+ # Add gender aliases to the normal aliases table automatically
+ foreach ( $this->genderAliases as $index => $aliases ) {
+ foreach ( $aliases as $alias ) {
+ $this->namespaceAliases[$alias] = $index;
+ }
+ }
if ( $this->namespaceAliases ) {
foreach ( $this->namespaceAliases as $name => $index ) {
if ( $index === NS_PROJECT_TALK ) {
NS_CATEGORY_TALK => 'Category_talk',
);
+/**
+ * Array of gender-based namespace aliases per namespace. Only NS_USER and
+ * NS_USER_TALK works.
+ *
+ * Example:
+ NS_USER => array(
+ 'male' => 'Male_user',
+ 'female' => 'Female_user',
+ ),
+ */
+$genderAliases = array();
+
/**
* Array of namespace aliases, mapping from name to NS_xxx index
*/