* HTMLForm 'select', 'selectandother', 'selectorother', 'multiselect', and
'radio' fields can now use message keys as labels via the 'options-messages'
parameter, which overrides the 'options' parameter.
-* Admins can expire users users passwords manually, or on a schedule using the
+* Admins can expire users passwords manually, or on a schedule using the
$wgPasswordExpirationDays configuration setting.
* Add new hook SendWatchlistEmailNotification, this will be used to determine
whether to send a watchlist email notification.
=== New features in 1.21 ===
* (bug 38110) Schema changes (adding or dropping tables, indices and
- fields) can be now be done separately from from other changes that
+ fields) can be now be done separately from other changes that
update.php makes. This is useful in environments that use database
permissions to restrict schema changes but allow the DB user that
MediaWiki normally runs as to perform other changes that update.php
* (bug 20186) Allow filtering Special:Contributions for RevisionDeleted edits.
* ajaxwatch now uses the API and JQuery, and can be used to animate arbitrary
watch links, not just to watch the page the link is on.
-* (bug 20976) "searchmenu-new-nocreate" message now displayed when when there
+* (bug 20976) "searchmenu-new-nocreate" message now displayed when there
is no title match in search and the user has no rights to create pages.
* (bug 23429) Added new hook WatchlistEditorBuildRemoveLine.
* (bug 22844) Added support for WinCache object caching (for IIS).
** Note that this change will break some extensions which have not been adapted
for it.
* (bug 17020) Adding fallback encodings for Traditional and Simplified Chinese
- languages while the the text is typed as URLs.
+ languages while the text is typed as URLs.
* (bug 17614) Prev / Next links are not shown if all results are shown
* (bug 18207) Strange spacing before [[irc:...]] links
* Removed float from the user login form in RTL interface - caused display
enabled
* (bug 19857) maintenance/deleteRevision.php on last revision no longer breaks
target page
-* (bug 20365) Page name with with c/g/h/j/s/u + x are now correctly handled in
+* (bug 20365) Page name with c/g/h/j/s/u + x are now correctly handled in
Special:MovePage with Esperanto as content language
* (bug 20364) Fixed regression in GIF metadata loading
* (bug 20299) MediaWiki:Move-subpages and MediaWiki:Move-talk-subpages can now
* (bug 19966) MediaWiki:License-header is now used for the licensing header in
the file description page instead of MediaWiki:License
* (bug 20380) Links to history/deleted edits at the top of
- Special:RevisionDelete are no more displayed when when doing log suppression
+ Special:RevisionDelete are no more displayed when doing log suppression
* (bug 8143) Localised parser function names are now correctly case insensitive
if they contain non-ASCII characters
* (bug 19055) maintenance/rebuildrecentchanges.php now purges
* Extensions can use the SkinBuildSidebar hook to modify the content of the
sidebar and add custom portlets to it
* Added 'MakeGlobalVariablesScript' hook for extensions to be able to add vari-
- ables into into the output of Skin::makeVariablesScript
+ ables into the output of Skin::makeVariablesScript
* (bug 13846) Added $wgAddGroups and $wgRemoveGroups display on
Special:ListGroupRights
* (bug 14377) Add a date selector to history pages
* Fix formatting of titles on Special:Undelete
* (bug 7026) Fix action=raw&templates=expand
* (bug 6976) Add namespace and direction classes to classic skins
-* (bug 7144) Don't "return to main" from OutputPage::loginToUse() if the the user can't
+* (bug 7144) Don't "return to main" from OutputPage::loginToUse() if the user can't
read the main page in the first place
* (bug 7188) Fix minor borkage in HTMLForm
* (bug 6675) Replaced message 'watchthis' with new message 'watchthisupload in Special:Upload
'ImgAuthBeforeStream': executed before file is streamed to user, but only when
using img_auth.php.
&$title: the Title object of the file as it would appear for the upload page
-&$path: the original file and path name when img_auth was invoked by the the web
+&$path: the original file and path name when img_auth was invoked by the web
server
&$name: the name only component of the file
&$result: The location to pass back results of the hook routine (only used if
Monobook.
* Monobook: Named after the black-and-white photo of a book in the page
- background. Introduced in the 2004 release of 1.3, it had been been the
+ background. Introduced in the 2004 release of 1.3, it had been the
default skin since then, before being replaced by Vector.
* Modern: An attractive blue/grey theme with sidebar and top bar. Derived from
/**
* Get a cache object.
*
- * @param int $inputType Cache type, one the the CACHE_* constants.
+ * @param int $inputType Cache type, one of the CACHE_* constants.
* @return BagOStuff
*/
function wfGetCache( $inputType ) {
continue;
}
if ( $nsId === NS_MAIN ) {
- // For other namespaces use use the namespace prefix as label, but for
+ // For other namespaces use the namespace prefix as label, but for
// main we don't use "" but the user message describing it (e.g. "(Main)" or "(Article)")
$nsName = wfMessage( 'blanknamespace' )->text();
} elseif ( is_int( $nsId ) ) {
}
/**
- * Set the page as printable, i.e. it'll be displayed with with all
+ * Set the page as printable, i.e. it'll be displayed with all
* print styles included
*/
public function setPrintable() {
$type = $oldaddr != '' ? 'changed' : 'set';
$result = $this->sendConfirmationMail( $type );
if ( $result->isGood() ) {
- // Say the the caller that a confirmation mail has been sent
+ // Say to the caller that a confirmation mail has been sent
$result->value = 'eauth';
}
} else {
}
/**
- * Get the the URL in a way to de displayed to the user
+ * Get the URL in a way to be displayed to the user
* More or less Wikimedia specific
*
* @return string
"apihelp-query+revisions-example-last5": "Get last 5 revisions of the \"Main Page\"",
"apihelp-query+revisions-example-first5": "Get first 5 revisions of the \"Main Page\"",
"apihelp-query+revisions-example-first5-after": "Get first 5 revisions of the \"Main Page\" made after 2006-05-01",
- "apihelp-query+revisions-example-first5-not-localhost": "Get first 5 revisions of the \"Main Page\" that were not made made by anonymous user \"127.0.0.1\"",
+ "apihelp-query+revisions-example-first5-not-localhost": "Get first 5 revisions of the \"Main Page\" that were not made by anonymous user \"127.0.0.1\"",
"apihelp-query+revisions-example-first5-user": "Get first 5 revisions of the \"Main Page\" that were made by the user \"MediaWiki default\"",
"apihelp-query+revisions+base-param-prop": "Which properties to get for each revision:\n;ids:The ID of the revision.\n;flags:Revision flags (minor).\n;timestamp:The timestamp of the revision.\n;user:User that made the revision.\n;userid:User ID of the revision creator.\n;size:Length (bytes) of the revision.\n;sha1:SHA-1 (base 16) of the revision.\n;contentmodel:Content model ID of the revision.\n;comment:Comment by the user for the revision.\n;parsedcomment:Parsed comment by the user for the revision.\n;content:Text of the revision.\n;tags:Tags for the revision.",
public function getSummaryFields();
/**
- * Selects the the specified fields of the records matching the provided
+ * Selects the specified fields of the records matching the provided
* conditions and returns them as DBDataObject. Field names get prefixed.
*
* @see DatabaseBase::select()
array $options = array(), $functionName = null );
/**
- * Selects the the specified fields of the records matching the provided
+ * Selects the specified fields of the records matching the provided
* conditions and returns them as DBDataObject. Field names get prefixed.
*
* @since 1.20
array $options = array(), $functionName = null );
/**
- * Selects the the specified fields of the records matching the provided
+ * Selects the specified fields of the records matching the provided
* conditions and returns them as associative arrays.
* Provided field names get prefixed.
* Returned field names will not have a prefix.
array $options = array(), $collapse = true, $functionName = null );
/**
- * Selects the the specified fields of the first matching record.
+ * Selects the specified fields of the first matching record.
* Field names get prefixed.
*
* @since 1.20
array $options = array(), $functionName = null );
/**
- * Selects the the specified fields of the records matching the provided
+ * Selects the specified fields of the records matching the provided
* conditions. Field names do NOT get prefixed.
*
* @since 1.20
array $options = array(), $functionName = null );
/**
- * Selects the the specified fields of the first record matching the provided
+ * Selects the specified fields of the first record matching the provided
* conditions and returns it as an associative array, or false when nothing matches.
* This method makes use of selectFields and expects the same parameters and
* returns the same results (if there are any, if there are none, this method returns false).
}
/**
- * Selects the the specified fields of the records matching the provided
+ * Selects the specified fields of the records matching the provided
* conditions and returns them as DBDataObject. Field names get prefixed.
*
* @since 1.20
}
/**
- * Selects the the specified fields of the records matching the provided
+ * Selects the specified fields of the records matching the provided
* conditions and returns them as DBDataObject. Field names get prefixed.
*
* @since 1.20
}
/**
- * Selects the the specified fields of the records matching the provided
+ * Selects the specified fields of the records matching the provided
* conditions and returns them as associative arrays.
* Provided field names get prefixed.
* Returned field names will not have a prefix.
}
/**
- * Selects the the specified fields of the first matching record.
+ * Selects the specified fields of the first matching record.
* Field names get prefixed.
*
* @since 1.20
}
/**
- * Selects the the specified fields of the records matching the provided
+ * Selects the specified fields of the records matching the provided
* conditions. Field names do NOT get prefixed.
*
* @since 1.20
}
/**
- * Selects the the specified fields of the first record matching the provided
+ * Selects the specified fields of the first record matching the provided
* conditions and returns it as an associative array, or false when nothing matches.
* This method makes use of selectFields and expects the same parameters and
* returns the same results (if there are any, if there are none, this method returns false).
// and no explicit wgDebugLogGroups configuration.
$shouldEmit = false;
} else {
- // Default return value is the the same as the historic wfDebug
+ // Default return value is the same as the historic wfDebug
// method: emit if $wgDebugLogFile has been set.
$shouldEmit = $wgDebugLogFile != '';
}
* More ideas are taken from:
* http://www.ics.uci.edu/~eppstein/161/960229.html
*
- * Some ideas are (and a bit of code) are from from analyze.c, from GNU
+ * Some ideas (and a bit of code) are from analyze.c, from GNU
* diffutils-2.7, which can be found at:
* ftp://gnudist.gnu.org/pub/gnu/diffutils/diffutils-2.7.tar.gz
*
/**
* Check if a container name is valid.
- * This checks for for length and illegal characters.
+ * This checks for length and illegal characters.
*
* @param string $container
* @return bool
* Append a line to the open filehandle. The line is assumed to
* be a complete SQL statement.
*
- * This is used as a callback for for sourceLine().
+ * This is used as a callback for sourceLine().
*
* @param string $line Text to append to the file
* @return bool False to skip actually executing the file
}
$rowSet = array(); // (sha1 => job) map for jobs that are de-duplicated
- $rowList = array(); // list of jobs for jobs that are are not de-duplicated
+ $rowList = array(); // list of jobs for jobs that are not de-duplicated
foreach ( $jobs as $job ) {
$row = $this->insertFields( $job );
if ( $job->ignoreDuplicates() ) {
*
* This job comes in a few variants:
* - a) Recursive jobs to purge caches for backlink pages for a given title.
- * These jobs have have (recursive:true,table:<table>) set.
+ * These jobs have (recursive:true,table:<table>) set.
* - b) Jobs to purge caches for a set of titles (the job title is ignored).
- * These jobs have have (pages:(<page ID>:(<namespace>,<title>),...) set.
+ * These jobs have (pages:(<page ID>:(<namespace>,<title>),...) set.
*
* @ingroup JobQueue
*/
array( 'params' => $this->getRootJobParams() )
);
JobQueueGroup::singleton()->push( $jobs );
- // Job to purge pages for for a set of titles
+ // Job to purge pages for a set of titles
} elseif ( isset( $this->params['pages'] ) ) {
$this->invalidateTitles( $this->params['pages'] );
// B/C for job to purge a range of backlink pages for a given page
*
* This job comes in a few variants:
* - a) Recursive jobs to update links for backlink pages for a given title.
- * These jobs have have (recursive:true,table:<table>) set.
+ * These jobs have (recursive:true,table:<table>) set.
* - b) Jobs to update links for a set of pages (the job title is ignored).
- * These jobs have have (pages:(<page ID>:(<namespace>,<title>),...) set.
+ * These jobs have (pages:(<page ID>:(<namespace>,<title>),...) set.
* - c) Jobs to update links for a single page (the job title)
* These jobs need no extra fields set.
*
array( 'params' => $extraParams )
);
JobQueueGroup::singleton()->push( $jobs );
- // Job to update link tables for for a set of titles
+ // Job to update link tables for a set of titles
} elseif ( isset( $this->params['pages'] ) ) {
foreach ( $this->params['pages'] as $pageId => $nsAndKey ) {
list( $ns, $dbKey ) = $nsAndKey;
$ellapsed = microtime( true ) - $start;
// If it took a long time to render, then save this back to the cache to avoid
// wasted CPU by other apaches or job runners. We don't want to always save to
- // cache as this cause cause high cache I/O and LRU churn when a template changes.
+ // cache as this can cause high cache I/O and LRU churn when a template changes.
if ( $ellapsed >= self::PARSE_THRESHOLD_SEC
&& $page->isParserCacheUsed( $parserOptions, $revision->getId() )
&& $parserOutput->isCacheable()
/** @var float The second central moment (or variance). **/
public $m2 = 0.0;
- /** @var float The least value in the the set. **/
+ /** @var float The least value in the set. **/
public $min = INF;
- /** @var float The most value in the set. **/
+ /** @var float The greatest value in the set. **/
public $max = NEGATIVE_INF;
/**
* Get the estimated standard deviation.
*
* The standard deviation of a statistical population is the square root of
- * its variance. It shows shows how much variation from the mean exists. In
+ * its variance. It shows how much variation from the mean exists. In
* addition to expressing the variability of a population, the standard
* deviation is commonly used to measure confidence in statistical conclusions.
*
== Testing ==
'make test' will run the conformance test (UtfNormalTest.php), fetching the
-data from from the net if necessary. If it reports failure, something is
+data from the net if necessary. If it reports failure, something is
going wrong!
You may have to set up PHPUnit first.
* @param string|int $from One of the following:
* - "fromdb" or WikiPage::READ_NORMAL if the data comes from a slave DB
* - "fromdbmaster" or WikiPage::READ_LATEST if the data comes from the master DB
- * - "forupdate" or WikiPage::READ_LOCKING if the data comes from from
+ * - "forupdate" or WikiPage::READ_LOCKING if the data comes from
* the master DB using SELECT FOR UPDATE
*/
public function loadFromRow( $data, $from ) {
$source = $this->mTitle->getFullURL( 'redirect=no' );
return $rt->getFullURL( array( 'rdfrom' => $source ) );
} else {
- // External pages pages without "local" bit set are not valid
+ // External pages without "local" bit set are not valid
// redirect targets
return false;
}
$pref = $parser->getOptions()->getDateFormat();
- // Specify a different default date format other than the the normal default
+ // Specify a different default date format other than the normal default
// if the user has 'default' for their setting
if ( $pref == 'default' && $defaultPref ) {
$pref = $defaultPref;
}
/**
- * Save space for for serialization by removing useless values
+ * Save space for serialization by removing useless values
* @return array
*/
public function __sleep() {
}
/**
- * Base modules required for the the base environment of ResourceLoader
+ * Base modules required for the base environment of ResourceLoader
*
* @return array
*/
// ATTENTION!: Because of the line below, this is not going to cause
// infinite recursion - think carefully before making changes to this
// code!
- // Pre-populate modifiedTime with something because the the loop over
- // all modules below includes the the startup module (this module).
+ // Pre-populate modifiedTime with something because the loop over
+ // all modules below includes the startup module (this module).
$this->modifiedTime[$hash] = 1;
foreach ( $loader->getModuleNames() as $name ) {
* "revdelete-restricted", "revdelete-unrestricted" indicating (un)suppression
* or null to indicate nothing in particular.
* You can turn the keys in $arr[0] and $arr[1] into message keys by
- * appending -hid and and -unhid to the keys respectively.
+ * appending -hid and -unhid to the keys respectively.
*
* @param int $n The new bitfield.
* @param int $o The old bitfield.
*/
/**
- * A special page page that list most used images
+ * A special page that lists most used images
*
* @ingroup SpecialPage
*/
}
/**
- * Message to show the the update log was unable to log the completion of this update
+ * Message to show that the update log was unable to log the completion of this update
* @return string
*/
protected function updatelogFailedMessage() {
* \n
* text (may be empty)
*
- * note that that the text string itself is *not* followed by newline
+ * note that the text string itself is *not* followed by newline
*/
public function execute() {
$db = wfGetDB( DB_SLAVE );
"rev_id < " . intval( $row->rev_id ) ),
__METHOD__,
array( 'ORDER BY' => 'rev_id DESC' ) );
- # If there are none, check the the highest ID with a lower timestamp
+ # If there are none, check the highest ID with a lower timestamp
if ( !$previousID ) {
# Get the highest older timestamp
$lastTimestamp = $db->selectField(
-The icons used here are derived from the crystalsvg icons in the the
+The icons used here are derived from the crystalsvg icons in the
pics/crystalsvg/ directory of kdelibs-3.4.0 they were modified on 2005-05-15
by Ævar Arnfjörð Bjarmason for use in MediaWiki.
.prop( 'tabIndex', 0 );
}
} else {
- // The toggle-link will be in one the the cells (td or th) of the first row
+ // The toggle-link will be in one of the cells (td or th) of the first row
$firstItem = $collapsible.find( 'tr:first th, tr:first td' );
$toggle = $firstItem.find( '> .mw-collapsible-toggle' );
buildCollationTable();
// Legacy fix of .sortbottoms
- // Wrap them inside inside a tfoot (because that's what they actually want to be) &
+ // Wrap them inside a tfoot (because that's what they actually want to be)
// and put the <tfoot> at the end of the <table>
var $tfoot,
$sortbottoms = $table.find( '> tbody > tr.sortbottom' );
// This causes further calls to addButton to go to insertion directly
// instead of to the queue.
// It is important that this is after the one and only loop through
- // the the queue
+ // the queue
isReady = true;
// Apply to dynamically created textboxes as well as normal ones
if ( 'documentMode' in document && document.documentMode <= 9 ) {
$style = getMarker().prev();
- // Verify that the the element before Marker actually is a
+ // Verify that the element before Marker actually is a
// <style> tag and one that came from ResourceLoader
// (not some other style tag or even a `<meta>` or `<script>`).
if ( $style.data( 'ResourceLoaderDynamicStyleTag' ) === true ) {
}</script>
'
),
- // Load module script with with ESI
+ // Load module script with ESI
array(
array( 'test.foo', ResourceLoaderModule::TYPE_SCRIPTS, true ),
'<script><esi:include src="http://127.0.0.1:8080/w/load.php?debug=false&lang=en&modules=test.foo&only=scripts&skin=fallback&*" /></script>
'
),
- // Load module styles with with ESI
+ // Load module styles with ESI
array(
array( 'test.foo', ResourceLoaderModule::TYPE_STYLES, true ),
'<style><esi:include src="http://127.0.0.1:8080/w/load.php?debug=false&lang=en&modules=test.foo&only=styles&skin=fallback&*" /></style>
return;
}
- // For 404 handled thumbnails, we only use the the base name of the URI
+ // For 404 handled thumbnails, we only use the base name of the URI
// for the thumb params and the parent directory for the source file name.
// Check that the zone relative path matches up so squid caches won't pick
// up thumbs that would not be purged on source file deletion (bug 34231).