BlueSpice MediaWiki REL1_27
 All Classes Namespaces Files Functions Variables Groups Pages
Todo List
Member $wgAutopromoteOnceLogInRC
Redocument $wgAutopromote
Member $wgAutopromoteOnceLogInRC
Redocument $wgAutopromote
Member $wgAutopromoteOnceLogInRC
Redocument $wgAutopromote
Member $wgExtensionMessagesFiles ['HeaderTabsMagic']
implement in tab parsing code instead... but problems like nowiki (2011-12-12, ofb)
Member $wgExtraNamespaces
Add a note about maintenance/namespaceDupes.php
Member $wgFooterIcons
Reformat documentation.
Member $wgHashedUploadDirectory
Deprecate the setting and ultimately remove it from Core.
Member $wgTextModelsToParse
On the long run, it would be nice to put categories etc into a separate structure, or at least parse only the contents of comments in the scripts.
Class Apache_Solr_Response
When Solr 1.3 is released, possibly convert to use PHP or Serialized PHP output writer
Class Apache_Solr_Service
Investigate using other HTTP clients other than file_get_contents built-in handler. Could provide performance improvements when dealing with multiple requests by using HTTP's keep alive functionality
Member Apache_Solr_Service::_sendRawGet ($url, $timeout=FALSE)
implement timeout ability
ExceptionIf a non 200 response status is returned
Member Apache_Solr_Service::SOLR_WRITER
Solr 1.3 release may change this to SerializedPHP or PHP implementation
Member APCUBagOStuff::decr ($key, $value=1)
When we only support php 7 or higher remove this hack
Member APCUBagOStuff::incr ($key, $value=1)
When we only support php 7 or higher remove this hack
Member ApiMobileView::execute ()
: Write some unit tests for API results
Member ApiParse::execute ()
: This should be handled closer to the actual cache instead of here, see T110269
Member ApiQueryConfiguredpages::getAllowedParams ()
Once support for MediaWiki < 1.25 is dropped, just use ApiBase::PARAM_HELP_MSG directly
Member ApiQueryOldreviewedpages::getAllowedParams ()
Once support for MediaWiki < 1.25 is dropped, just use ApiBase::PARAM_HELP_MSG directly
Member ApiQueryReviewedpages::getAllowedParams ()
Once support for MediaWiki < 1.25 is dropped, just use ApiBase::PARAM_HELP_MSG directly
Member ApiResult::addValue ($path, $name, $value, $flags=0)
Add i18n message when replacing calls to ->setWarning()
Member ApiReview::getAllowedParams ()
Once support for MediaWiki < 1.25 is dropped, just use ApiBase::PARAM_HELP_MSG directly
Member ApiStabilizeGeneral::getAllowedParams ()

Once support for MediaWiki < 1.25 is dropped, just use ApiBase::PARAM_HELP_MSG directly

Once support for MediaWiki < 1.25 is dropped, just use ApiBase::PARAM_HELP_MSG directly

Member ApiStabilizeProtect::getAllowedParams ()

Once support for MediaWiki < 1.25 is dropped, just use ApiBase::PARAM_HELP_MSG directly

Once support for MediaWiki < 1.25 is dropped, just use ApiBase::PARAM_HELP_MSG directly

Class ApiUploadTest

Port the other Upload tests, and other API tests to this framework

Broken test, reports false errors from time to time. See

This is pretty sucky... needs to be prettified.

Class ApiWatchTest
This test suite is severly broken and need a full review
Class Article
Move and rewrite code to an Action class
Member Article::confirmDelete ($reason)
FIXME: Move to another file?
string$reasonPrefilled reason
Member Article::fetchContentObject ()
When is this null?
Member Article::getRobotPolicy ($action, $pOutput=null)
actions other than 'view'
Member AutoAuthSetup ()
If you want to make AutoAuthSetup() work in an AuthManager world, what you need to do is figure out how to do it with a SessionProvider instead of the hackiness below. You'll probably want an ImmutableSessionProviderWithCookie subclass where provideSessionInfo() does the first part of LdapAutoAuthentication::Authenticate() (stop before the $localId bit).
Namespace Avro

Implement JSON encoding, as is required by the Avro spec.

Refactor AvroNamedSchema to use an AvroName instance to store name information.

Member AvroDataIO::SYNC_SIZE
make this value configurable
Member AvroField::__construct ($name, $schema, $is_type_from_schemata, $has_default, $default, $order=null)

Check validity of $default value

Check validity of $order value

Member AvroStringIO::read ($len)
test for fencepost errors wrt updating current_index
Class AvroValidatorTest
Test methods in this call should be split into a method and a dataprovider.
Member BackupDumper::backupDb ()
Fixme: the –server parameter is currently not respected, as it doesn't seem terribly easy to ask the load balancer for a particular connection by name.
Class BitmapMetadataHandler

Other image formats.

Member BitmapMetadataHandler::Tiff ($filename)
Add XMP support, so this function actually makes sense to put here.
Member Block::getTargetAndType ()
FIXME: This should be an integral part of the Block member variables
Member BSApiWikiPageTasks::getTitleFromTaskData ($oTaskData)
: Maybe have this logic in "parent::getTitle" altogether
Member BSUserLoginMobileTemplate::execute ()
Refactor this into parent template
Member CacheTime::isDifferentRevision ($id)
We always return false if $this->getCacheRevisionId() is null; this prevents invalidating the whole parser cache when this change is deployed. Someday that should probably be changed.
Class Category
Move some stuff from CategoryPage.php to here, and use that.
Member CategoryFinder::seed ($articleIds, $categories, $mode= 'AND')
FIXME: $categories/$mode
File cdb.php


Page Changes in PHPUnit 4.2
will now be reported as risky when the–disallow-todo-testsoption is used orbeStrictAboutTodoAnnotatedTests=trueis set in the configuration file
  • TheatLeast()andatMost()` invocation count matchers were added
Page Changes in PHPUnit 4.3
` annotated tests are counted twice
Class ChangesListSpecialPage
Way too many public functions, most of them should be protected
Member ChangesListSpecialPage::getExtraOptions ($opts)

This should handle options returned by getDefaultOptions().

Not called by anything, should be called by something… doHeader() maybe?

Member ChangeTags::MAX_DELETE_USES
Use the job queue for tag deletion to avoid this restriction
Class ChangeTagsLogItem
Abstract out a base class for this and RevDelLogItem, similar to the RevisionItem class but specifically for log items.
Find a way to retrieve this information from the DBAL
Member Content::getTextForSearchIndex ()

Test that this actually works

Make sure this also works with LuceneSearch / WikiSearch

Member Content::getWikitextForTransclusion ()

Allow native handling, bypassing wikitext representation, like for includable special pages.

Allow transclusion into other content models than Wikitext!

Used in WikiPage and MessageCache to get message text. Not so nice. What should we use instead?!

Member ContentHandler::getAutoDeleteReason (Title $title, &$hasHistory)
&$hasHistory is extremely ugly, it's here because WikiPage::getAutoDeleteReason() and Article::generateReason() have it / want it.
Member ContribsPager::formatRow ($row)
This would probably look a lot nicer in a table.
Member Cookie::validateCookieDomain ($domain, $originDomain=null)

fixme fails to detect 3-letter top-level domains

fixme fails to detect 2-letter top-level domains for single-domain use (probably not a big problem in practice, but there are test cases)

Member CoreTagHooks::gallery ($content, $attributes, $parser)
break Parser::renderImageGallery out here too.
Member DatabasePostgres::insertSelect ($destTable, $srcTable, $varMap, $conds, $fname=__METHOD__, $insertOptions=[], $selectOptions=[])
FIXME: Implement this a little better (seperate select/insert)?
Member DatabaseSqlite::implicitGroupby ()
Check if it should be true like parent class
Member DatabaseSqliteTest::testUpgrades ()
Currently only checks list of tables
Member DataValues::requireArrayFields ($data, array $fields)
: this should be removed once we got rid of all the static newFromArray() methods.
Member DataValues::GLOBE_MOON
Move this constant next to GlobeCoordinateValue::GLOBE_EARTH?
Class DateFormatter

preferences, OutputPage

Member DateFormatter::formatDate ($bits, $link=true)
FIXME: $matches doesn't exist here, what's expected?
Member DBSiteStore::__construct (LoadBalancer $dbLoadBalancer)
: inject some kind of connection manager that is aware of the target wiki, instead of injecting a LoadBalancer.
Member DeletedContribsPager::formatRevisionRow ($row)
This would probably look a lot nicer in a table.
Member DeletedContribsPager::formatRow ($row)
This would probably look a lot nicer in a table.
Member DeletedContributionsPage::getSubTitle ($userObj)
FIXME: Almost the same as contributionsSub in SpecialContributions.php. Could be combined.
File deleteOrphanedRevisions.php
More efficient cleanup of text records
Class DifferenceEngine


Member DifferenceEngine::generateTextDiffBody ($otext, $ntext)
move this to TextDifferenceEngine, make DifferenceEngine abstract. At some point.
Class DifferenceEngineTest
tests for the rest of DifferenceEngine!
Class DiffFormatter


File dumpMessages.php
Make this more useful, right now just dumps $wgContLang
Member EchoAttributeManager::getNotificationSection ($notificationType)
add a unit test case
Member EchoDiscussionParser::interpretDiff ($changes, $user, Title $title=null)
Expand recognisable actions.
array$changesOutput of EchoEvent::getMachineReadableDiff
Array of associative arrays. Each entry represents an action, which is classified in the 'action' field. All types contain a 'content' field except 'unknown' (which instead passes through the machine-readable diff in 'details') and 'unknown-change' (which provides 'new_content' and 'old_content') action may be:
  • add-comment: A comment signed by the user is added to an existing section.
  • new-section-with-comment: A new section is added, containing a single comment signed by the user in question.
  • unknown-signed-addition: Some signed content is added, but it includes section headers, is signed by another user or otherwise confuses the interpretation engine.
  • unknown-multi-signed-addition: Some signed content is added, but it contains multiple signatures.
  • unknown-unsigned-addition: Some content is added, but it is unsigned.
  • unknown-subtraction: Some content was removed. These actions are not currently analysed.
  • unknown-change: Some content was replaced with other content. These actions are not currently analysed.
  • unknown: Unrecognised change type.
Class EchoFilteredSequentialIterator
Member EchoNotificationFormatter::getIconUrl ($icon, $dir)
this shouldn't be static
string$iconName of icon as registered in BeforeCreateEchoEvent hook
string$direither 'ltr' or 'rtl'
Member EchoNotificationMapperTest::testInsert ()
write this test
Member EditPage::importFormData (&$request)
Check if the desired model is allowed in this namespace, and if a transition from the page's current model to the new model is allowed.
Member EditPage::internalAttemptSave (&$result, $bot=false)
FIXME: This interface is TERRIBLE, but hard to get rid of due to various error display idiosyncrasies. There are also lots of cases where error metadata is set in the object and retrieved later instead of being returned, e.g. AS_CONTENT_TOO_BIG and AS_BLOCKED_PAGE_FOR_USER. All that stuff needs to be cleaned up some time.
Member EnhancedChangesList::makeCacheGroupingKey (RCCacheEntry $cacheEntry)
use rc_source to group, if set; fallback to rc_type
Member EnhancedChangesListTest::testEndRecentChangesList ()
more tests for actual formatting, this is more of a smoke test
Member EnhancedChangesListTest::testRecentChangesLine ()
more tests
Class EraseArchivedFile
Maybe add some simple logging
Member Exif::__construct ($file, $byteOrder= '')
FIXME: The following are broke: SubjectArea. Need to test the more obscure tags. DigitalZoomRatio = 0/0 is rejected. need to determine if that's valid. Possibly should treat 0/0 = 0. need to read exif spec on that.
Member ExifBitmapHandler::getRotationForExif ($data)
FIXME: Orientation can include flipping as well; see if this is an issue!
Class ExifRotationTest
covers tags
Member ExtensionProcessor::extractConfig (array $info)
In the future, this should be done via Config interfaces
Class FormOptions
This badly needs some examples and tests :) The usage in SpecialRecentchanges class is a good ersatz in the meantime.
Class GadgetDefinitionValidator
maybe this should use a formal JSON schema validator or something
Member GIFHandler::getImageArea ($image)
Add unit tests
Member HeaderTabs::replaceFirstLevelHeaders (&$parser, &$text, $aboveandbelow)

handle NOTABTOC, TABTOC, FORCETABTOC here (2011-12-12, ofb)

handle TOC, FORCETOC, NOTOC here (2011-12-12, ofb)

insert the toc after the first paragraph, maybe we can steal the location from formatHeadings despite the changed html? (2011-12-12, ofb)

see if we can't add the SMW factbox stuff back in (2011-12-12, ofb)

handle NOEDITTAB here (2011-12-12, ofb)

Member HeaderTabsHooks::addHTMLHeader (&$out)
we might be able to only load our js and styles if we are rendering tabs, speeding up pages that don't use it? but what about cached pages? (2011-12-12, ofb)
Member HistoryPager::diffButtons ($rev, $firstInList)
Move title texts to javascript
Member HistoryPager::historyLine ($row, $next, $notificationtimestamp=false, $latest=false, $firstInList=false)
document some more, and maybe clean up the code (some params redundant?)
Member Html::inlineScript ($contents)
do some useful escaping as well, like if $contents contains literal "</script>" or (for XML) literal "]]>".
Class HTMLForm
Document 'section' / 'subsection' stuff
Member HTMLForm::displaySection ($fields, $sectionName= '', $fieldsetIDPrefix= '', &$hasUserVisibleFields=false)
Member HTMLForm::setMessagePrefix ($p)
Currently only used for the "<fieldset>" legend on forms with multiple sections; should be used elsewhere?
Member HTMLForm::setSubmitID ($t)
FIXME: Integrity of $t is not validated
HTMLForm $this for chaining calls (since 1.20)
File HtmlFormatter.php
: remove in 1.28
Member HTMLFormField::getOptions ()
This is copied from Xml::listDropDown(), deprecate/avoid duplication?
Class HTMLSelectAndOtherField
FIXME: If made 'required', only the text field should be compulsory.
Member Http::isValidURI ($uri)
FIXME this is wildly inaccurate and fails to actually check most stuff
Class HttpErrorTest
tests for HttpError::report
Class HttpStatus
Class IDatabase
: loosen up DB classes from MWException
: IDatabase and DBConnRef should be updated to reflect any changes
File IEContentAnalyzer.php
Define the exact license of this file.
Class IEUrlExtensionTest
tests below for findIE6Extension should be split into... ...a dataprovider and test method.
Member ImagePage::makeMetadataTable ($metadata)
FIXME: Bad interface, see note on MediaHandler::formatMetadata().
Member InlineDifferenceEngine::isDeletedDiff ()
FIXME: Upstream to DifferenceEngine - refactor showDiffPage
Member InlineDifferenceEngine::isHiddenFromUser ()
FIXME: Upstream to DifferenceEngine - refactor showDiffPage
Member InlineDifferenceEngine::isUserAllowedToSee ()
FIXME: Upstream to DifferenceEngine - refactor showDiffPage
Class IPTest
Test methods in this call should be split into a method and a dataprovider.
Member Issue1468Test::testFailure ()
Implement this test
Class JavaScriptContentHandler
Create a ScriptContentHandler base class, do highlighting stuff there?
Class JpegMetadataExtractorTest
Could use a test of extended XMP segments. Hard to find programs that create example files, and creating my own in vim propbably wouldn't serve as a very good "test". (Adobe photoshop probably creates such files but it costs money). The implementation of it currently in MediaWiki is based solely on reading the standard, without any real world test files.
Class JpegPixelFormatTest
covers tags
Member Language::convertHtml ($text, $isTitle=false)
this should get integrated somewhere sane
Member Language::formatNum ($number, $nocommafy=false)
check if it's viable to use localeconv() for the decimal separator thing.
int | float$numberThe string to be formatted, should be an integer or a floating point number.
bool$nocommafySet to true for special numbers like dates
Member Language::formatTimePeriod ($seconds, $format=[])
int | float$seconds
array$formatOptional If $format['avoid'] === 'avoidseconds': don't mention seconds if $seconds >= 1 hour. If $format['avoid'] === 'avoidminutes': don't mention seconds/minutes if $seconds > 48 hours. If $format['noabbrevs'] is true: use 'seconds' and friends instead of 'seconds-abbrev' and friends. For backwards compatibility, $format may also be one of the strings 'avoidseconds' or 'avoidminutes'.
Member Language::needsGenderDistinction ()
There may be other gender namespace than NS_USER & NS_USER_TALK in the future
Member Language::sprintfDate ($format, $ts, DateTimeZone $zone=null, &$ttl=null)
handling of "o" format character for Iranian, Hebrew, Hijri & Thai?
Member Language::translateBlockExpiry ($str, User $user=null)
Maybe translate block durations. Note that this function is somewhat misnamed: it deals with translating the duration ("1 week", "4 days", etc), not the expiry time (which is an absolute timestamp). Please note: do NOT add this blindly, as it is used on old expiry lengths recorded in log entries. You'd need to provide the start date to match up with it.
Member LanguageAr::normalize ($s)
FIXME: This is language-specific for now only to avoid the negative performance impact of enabling it for all languages.
Member LanguageArTest::testFormatNum ()
split into a test and a dataprovider
Member LanguageMl::normalize ($s)
FIXME: This is language-specific for now only to avoid the negative performance impact of enabling it for all languages.
Member LanguageNlTest::testFormatNum ()
split into a test and a dataprovider
File LanguageSrTest.php
methods in test class should be tidied:
  • Should be split into separate test methods and data providers
  • Tests for LanguageConverter and Language should probably be separate..
File LanguageUzTest.php
methods in test class should be tidied:
  • Should be split into separate test methods and data providers
  • Tests for LanguageConverter and Language should probably be separate..
Member LanguageYue::segmentByWord ($string)
FIXME: Only do this for Han characters...
Member LanguageZh_hans::segmentByWord ($string)
FIXME: Only do this for Han characters...
Class LdapPrimaryAuthenticationProvider
Someday someone who knows about authenticating against LDAP should write an extension that doesn't have craziness like a global "domain" variable where we have to guess at the correct value in half the entry points.
Class Linker
turn this into a legacy interface for HtmlPageLinkRenderer and similar services.
Member Linker::formatLinksInComment ($comment, $title=null, $local=false, $wikiId=null)
FIXME: Doesn't handle sub-links as in image thumb texts like the main parser
string$commentText to format links in. WARNING! Since the output of this function is html, $comment must be sanitized for use as html. You probably want to pass $comment through Sanitizer::escapeHtmlAllowEntities() before calling this function.
Title | null$titleAn optional title object used to links to sections
bool$localWhether section links should refer to local page
string | null$wikiIdId of the wiki to link to (if not the local wiki), as used by WikiMap.
Member Linker::makeMediaLinkFile (Title $title, $file, $html= '')
Handle invalid or missing images better.
Class LinkFilter
implement the filter. Currently these are just some functions to help maintenance/cleanupSpam.php remove links to a single specified domain. The next thing is to implement functions for checking a given page against a big list of domains.
Member LinkSearchPage::getMaxResults ()
FIXME This special page should not use LIMIT for paging
Member LinkSearchPage::setPageLinkRenderer (PageLinkRenderer $linkRenderer)
query logic and rendering logic should be split and also injected
Class LinksUpdate
document (e.g. one-sentence top-level class description).
Class LoadBalancer


Class LocalFileTest
Split tests into providers and test methods
Member LogPage::getTitleLink ($type, $lang, $title, &$params)
Language | null$lang
File MagicVariableTest.php
covers tags
File mcc.php


Member MediaHandler::formatMetadata ($image, $context=false)
FIXME: This interface is not very flexible. The media handler should generate HTML instead. It can do all the formatting according to some standard. That makes it possible to do things like visual indication of grouped and chained streams in ogg container files.
bool | IContextSource$contextContext to use (optional)
Member MediaStatisticsPage::outputMediaType ($mediaType)
Possibly could add a message here explaining what the different types are. not sure if it is needed though.
Member MediaStatisticsPage::outputTableRow ($mime, $count, $bytes)

Check to be sure this really should have number formatting

Check to be sure this really should have number formatting

Member MediaWiki::testSetPasswordResetFlag ()
: Because we're currently using User, which uses the global config...
Member MediaWikiTitleCodec::splitTitleString ($text, $defaultNamespace=NS_MAIN)

this method is only exposed as a temporary measure to ease refactoring. It was copied with minimal changes from Title::secureAndSplit().

This method should be split up and an appropriate interface defined for use by the Title class.

Member MergeHistory::merge (User $user, $reason= '')
if all versions of page A are moved to B and then a user tries to do a reverse-merge via the "unmerge" log link, then page A will still be a redirect (as it was after the original merge), though it will have the old revisions back from before (as expected). The user may have to "undo" the redirect manually to finish the "unmerge". Maybe this should delete redirects at the source page of merges?
Class MergeUserTest
this should use the Database group
Class Message
  • test, can we have tests?
  • this documentation needs to be extended
Member Message::isBlank ()
FIXME: Merge with isDisabled()?
Member MimeMagic::__construct (Config $config=null)
Make this constructor private once everything uses the singleton instance
Member MimeMagic::getMediaType ($path=null, $mime=null)

analyse file if need be

look at multiple extension, separately and together.

Member MimeMagic::isRecognizableExtension ($extension)
Be more accurate when using fancy MIME detector plugins; right now this is the bare minimum getimagesize() list.
Member MinervaTemplate::render ($data)
replace with template engines
Member MobileFormatter::enableExpandableSections ($flag=true)
kill with fire when there will be minimum of pre-1.1 app users remaining
Class MobilePage
FIXME: Rename when this class when its purpose becomes clearer
Member MobileSpecialPageFeed::renderFeedItemHtml ($ts, $diffLink= '', $username= '', $comment= '', $title=null, $isAnon=false, $bytes=0, $isMinor=false)
FIXME: use an array as an argument?
Member MovePageForm::doSubmit ()
FIXME: A specific error message should be given in this case.
File mwdocgen.php


Antoine Musso <hashar at="" free="" dot="" fr>="">
Brion Vibber
Alexandre Emsenhuber
first release

Member MWHttpRequest::setData ($args)
overload the args param
Class MWNamespaceTest

covers tags

FIXME: this test file is a mess

Member MWNamespaceTest::testCanTalk ()

Implement testGetCanonicalNamespaces().

Implement testGetCanonicalName().

Implement testGetCanonicalIndex().

Implement testGetValidNamespaces().

Member MWNamespaceTest::testEquals ()
Implement testExists().
Member MWNamespaceTest::testIsCapitalizedWithWgCapitalLinkOverrides ()
split groups of assertions in autonomous testing functions MWNamespace::isCapitalized
Member MWNamespaceTest::testIsMovable ()
Write more texts, handle $wgAllowImageMoving setting MWNamespace::isMovable
File MWTerm.php
Fixme: Make this more generic
Class NewParserTest
covers tags
Member NewParserTest::testFuzzTests ()
fixme Needs some work to not eat memory until the world explodes
Class OldChangesListTest
add tests to cover article link, timestamp, character difference, log entry, user tool links, direction marks, tags, rollback, watching users, and date header.
Class OutputPage

FIXME: Another class handles sending the whole page to the client.


Member OutputPage::disallowUserJs ()
this should be given a more accurate name
Class OutputPageTest
factor tests in this class into providers and test methods
Member PageArchive::listFiles ()
Does this belong in Image for fuller encapsulation?
Member PageLinkRenderer::getPageUrl (LinkTarget $page, $params=[])
expand this to cover the functionality of Linker::linkUrl
Member PageLinkRenderer::renderHtmlLink (LinkTarget $page, $text=null)
expand this to cover the functionality of Linker::link
Member Parser::closeList ($char)
Member Parser::setTransparentTagHook ($tag, $callback)
better document or deprecate this
Class ParserCache
Member ParserCache::getKey ($article, $popts, $useOutdated=true)
Document parameter $useOutdated

Make this more independent of the configuration (and if possible the database)


Namespace PHPExcel
Sort out xdebug in vagrant so that this works in all sandboxes For now, it is safer to test for it rather then remove it.
Member PHPExcel_Calculation_LookupRef::INDIRECT ($cellAddress=NULL, PHPExcel_Cell $pCell=NULL)
Support for the optional a1 parameter introduced in Excel 2010
Member PHPExcel_Calculation_Statistical::BINOMDIST ($value, $trials, $probability, $cumulative)
Cumulative distribution function
Member PHPExcel_Calculation_Statistical::CRITBINOM ($trials, $probability, $alpha)
Warning. This implementation differs from the algorithm detailed on the MS web site in that $CumPGuessMinus1 = $CumPGuess - 1 rather than $CumPGuess - $PGuess This eliminates a potential endless loop error, but may have an adverse affect on the accuracy of the function (although all my tests have so far returned correct results).
Member PHPExcel_Calculation_Statistical::LOGINV ($probability, $mean, $stdDev)
Try implementing P J Acklam's refinement algorithm for greater accuracy if I can get my head round the mathematics (as described at)
Member PostgresUpdater::getCoreUpdateList ()
FIXME: Postgres should use sequential updates like Mysql, Sqlite and everybody else. It never got refactored like it should've.
Class ProtectedPagesPager


Member ProtectionForm::show ($err=null)
FIXME: i18n issue, should use formatted number.
Member PurgeChangedPages::pageableSortedRows (ResultWrapper $res, $column, $limit)
move this elsewhere
File rebuildrecentchanges.php
File rebuildtextindex.php
Member RenameAndMergeUserToStrLower::movePages (User $oOldUser, User $oNewUser)
This code is a duplicate of Renameuser and GlobalRename
Member ResourceLoader::getTestModuleNames ($framework= 'all')
api siteinfo prop testmodulenames modulenames
Class Revision
Member Revision::getText ($audience=self::FOR_PUBLIC, User $user=null)
Replace usage in core
Member Revision::newFromArchiveRow ($row, $overrides=[])
FIXME: Should be a subclass for RevisionDelete. [TS]
Member RevisionItem::getDiffLink ()
Essentially a copy of RevDelRevisionItem::getDiffLink. That class should inherit from this one, and implement an appropriate interface instead of extending RevDelItem
Member RevisionItem::getHTML ()
Essentially a copy of RevDelRevisionItem::getHTML. That class should inherit from this one, and implement an appropriate interface instead of extending RevDelItem
Member RevisionItem::getRevisionLink ()
Essentially a copy of RevDelRevisionItem::getRevisionLink. That class should inherit from this one, and implement an appropriate interface instead of extending RevDelItem
Member Sanitizer::escapeClass ($class)
For extra validity, input should be validated UTF-8.
Member Sanitizer::mergeAttributes ($a, $b)
implement merging for other attributes such as style
Member Sanitizer::validateAttributes ($attribs, $whitelist)

Check for legal values where the DTD limits things.

Check for unique id attribute :P

Member Sanitizer::validateTagAttributes ($attribs, $element)

Check for legal values where the DTD limits things.

Check for unique id attribute :P

Class SanitizerTest
Tests covering decodeCharReferences can be refactored into a single method and dataprovider.
Class SanitizerValidateEmailTest
all test methods in this class should be refactored and... use a single test method and a single data provider...
Member Scribunto_LuaStandaloneInterpreter::__construct ($engine, array $options)
: Remove this case once we no longer support PHP 5.3
Member SearchEngine::getTextFromContent (Title $t, Content $c=null)
This isn't ideal, we'd really like to have content-specific handling here
Title$tTitle we're indexing
Content$cContent of the page to index
Class SearchEngineDummy

FIXME: Dummy class should probably try something at least mildly useful, such as a LIKE search through titles.

Member SearchMssql::parseQuery ($filteredText, $fulltext)
Class SearchResult

FIXME: This class is horribly factored. It would probably be better to have a useful base class to which you pass some standard information, then let the fancy self-highlighters extend that.

File Setup.php
Class SiteConfiguration
Give examples for, suffixes: $conf->suffixes = array( 'wiki' ); localVHosts callbacks!
Member Skin::setupSkinUserCss (OutputPage $out)
Member SkinMinerva::isAuthenticatedUser ()
This helper function is only truly needed whilst SkinMobileApp does not support login
Member SkinMinerva::prepareLanguages ($tpl)
Remove when Special:Languages link goes stable
Class SkinTemplate
Needs some serious refactoring into functions that correspond to the computations individual esi snippets need. Most importantly no body parsing for most of those of course.
Member SkinTemplate::makeArticleUrlDetails ($name, $urlaction= '')
is this even used?
Member SMW::parse (array $rawParams)
$rawParams should be of IParameterFormatter QueryParameterFormatter class
Member SMW::getCaptionFromDataItem (DITime $dataItem)
Internationalize the CE and BCE strings.
Class SMW
Currently no support for language tags.
Member SMW::getRowListContent (array $row)

The inner lists of values per field should use different separators.

Some spaces are hard-coded here; should probably be part of separators.

Member SMW::recache ($limit, $ignoreErrors=true)
Implement caching for SMW query pages
Member SMW::ping ($endpointType=self::EP_TYPE_QUERY)
SPARQL endpoints sometimes return errors if no (valid) query is posted. The current implementation tries to catch this, but this might not be entirely correct. Especially, the SPARQL 1.1 HTTP error codes for Update are not defined yet (April 15 2011).
Member SMW::interpretDescription (Description $description)
The case of nominal classes (top-level ValueDescription) still makes some assumptions about the table structure, especially about the name of the joinfield (o_id). Better extend compilePropertyValueDescription to deal with this case.
Member SMW::cleanUp ()
I might be better to keep the tables and possibly reuse them later on. Being temporary, the tables will vanish with the session anyway.
Member SMWDIError::doUnserialize ($serialization)
Be more careful with unserialization. It can create E_NOTICEs.
Member SMWDITime::__construct ($calendarmodel, $year, $month=false, $day=false, $hour=false, $minute=false, $second=false, $timezone=false)
Implement more validation here.
Member SMWDIUri::__construct ($scheme, $hierpart, $query, $fragment)
Implement more validation here.
Member SMWDIUri::getURI ()
This should be changed to the spelling getUri().
Member SMWExportController::printPages ($pages, $recursion=1, $revisiondate=false)
Consider dropping the $revisiondate filtering and all associated functionality. Is anybody using this?
Member SMWExporter::getOWLPropertyType ($type= '')
An improved mechanism for selecting property types here is needed.
Member SMWExporter::makeExportDataForSubject (SMWDIWikiPage $diWikiPage, $addStubData=false)
Take into account whether the wiki page belongs to a builtin property, and ensure URI alignment/type declaration in this case.
Member SMWLanguage::findMonth ($label)

Should we add functionality to ignore case here?

Should there be prefix string matching instead of two arrays for full and short names?

Class SMWNumberValue
Wiki-HTML-conversion for unit strings must be revisited, as the current solution might be unsafe.
Member SMWPropertyValue::parseUserValue ($value)
Accept/enforce property namespace.
Member SMWQuery::setOffset ($offset)
The function should be extended to take into account whether or not we are in inline mode (not critical, since offsets are usually not applicable inline).
Class SMWRecordValue

Enforce limitation of maximal number of values.

Enforce uniqueness of properties in declaration.

Complete internationalisation.

Member SMWRecordValue::checkAllowedValues ()
Allowed values for multi-valued properties are not supported yet.
Member SMWRecordValue::getPropertyDataItems ()
I18N for error message.
Member SMWRecordValue::setProperty (SMWDIProperty $property)
This is not a full reset yet (the case that property is changed after a value was set does not occur in the normal flow of things, hence this has low priority).
Member SMWSql3SmwIds::getPropertyInterwiki (SMWDIProperty $property)
This documentation is out of date. Right now, the special interwiki is used only for special properties without a label, i.e., which cannot be shown to a user. This allows us to filter such cases from all queries that retrieve lists of properties. It should be checked that this is really the only use that this has throughout the code.
Member SMWSql3SmwIds::moveSubobjects ($oldtitle, $oldnamespace, $newtitle, $newnamespace)
This method is neither efficient nor very convincing architecturally; it should be redesigned.
Member SMWSQLStore3Readers::getPropertySubjects (SMWDIProperty $property, SMWDataItem $value=null, SMWRequestOptions $requestOptions=null)
This method cannot retrieve subjects for sortkeys, i.e., for property _SKEY. Only empty arrays will be returned there.
Member SMWSQLStore3Readers::getPropertyValues ($subject, SMWDIProperty $property, $requestOptions=null)
Retrieving all sortkeys (values for _SKEY with $subject null) is not supported. An empty array will be given.
Member SMWSQLStore3Writers::changeTitle (Title $oldTitle, Title $newTitle, $pageId, $redirectId=0)
Currently the sortkey is not moved with the remaining data. It is not possible to move it reliably in all cases: we cannot distinguish an unset sortkey from one that was set to the name of oldtitle. Maybe use update jobs right away?
Member SMWSQLStore3Writers::updateRedirects ($subject_t, $subject_ns, $curtarget_t= '', $curtarget_ns=-1)
Clean up this code.
Member SMWStringValue::getLongHTMLText ($linker=null)
Rather parse input to obtain properly formatted HTML.
See Also
Class SMWTimeValue

Theparsing process can encounter many kinds of well-defined problems but uses only one error message. More detailed reporting should be done.

Try to reuse more of MediaWiki's records, e.g. to obtain month names or to format dates. The problem is that MW is based on SIO timestamps that don't extend to very ancient or future dates, and that MW uses PHP functions that are bound to UNIX time.

Member SMWTimeValue::getWikiValue ()
The preferred caption may not be suitable as a wiki value (i.e. not parsable).
See Also
Member SMWTimeValue::parseDateString ($string, &$datecomponents, &$calendarmodel, &$era, &$hours, &$minutes, &$seconds, &$microseconds, &$timeoffset, &$timezone)
This method in principle allows date parsing to be internationalized further. Should be done.
Class SpecialAllPages
Rewrite using IndexPager
Member SpecialBlock::getSuggestedDurations ($lang=null)
FIXME: This uses a rather odd syntax for the options, should it be converted to the standard "**<duration>|<displayname>" format?
Language | null$langThe language to get the durations in, or null to use the wiki's content language
Member SpecialBlock::getTargetAndType ($par, WebRequest $request=null)
Should be in Block.php?
string$parSubpage parameter passed to setup, or data value from the HTMLForm
WebRequest$requestOptionally try and get data from a request too
array( User|string|null, Block::TYPE_ constant|null )
Member SpecialCategories::setPageLinkRenderer (PageLinkRenderer $linkRenderer)
the pager should also be injected, and de-coupled from the rendering logic.
Member SpecialContributions::contributionsSub ($userObj)
FIXME: Almost the same as getSubTitle in SpecialDeletedContributions.php. Could be combined.
Member SpecialExport::execute ($par)

FIXME: This can lead to hitting memory limit for very large categories. Ideally we would do the lookup synchronously during the export in a single query.

Member SpecialMergeHistory::merge ()
if all versions of page A are moved to B and then a user tries to do a reverse-merge via the "unmerge" log link, then page A will still be a redirect (as it was after the original merge), though it will have the old revisions back from before (as expected). The user may have to "undo" the redirect manually to finish the "unmerge". Maybe this should delete redirects at the target page of merges?
Class SpecialMobileContributions
FIXME: On Special:Contributions add ability to filter a la desktop
Class SpecialMobileMenu

FIXME: Rename from MobileMenu to NavigationMenu

Member SpecialMobileWatchlist::showResults (ResultWrapper $res, $feed)
FIXME: use templates/PageList.html when server side templates are available to keep consistent with nearby view
Member SpecialPreferencesTest::testBug41337 ()
give this test a real name explaining what is being tested here
Member SpecialReplaceText::extractContext ($text, $target, $use_regex=false)
The bolding needs to be fixed for regular expressions.
Member SpecialRevisionDelete::addUsageText ()
FIXME: Wikimedia-specific policy text
Member SpecialRevisionDelete::tryShowFile ($archiveName)
Mostly copied from Special:Undelete. Refactor.
Member SpecialUpload::rotationEnabled ()
What about non-BitmapHandler handled files?
File SpecialWhatlinkshere.php
Use some variant of Pager or something; the pagination here is lousy.
Member SRFArray::getResultText (SMWQueryResult $res, $outputmode)
Is there some other way to check the data value directly for being the page title or not? SMWs behavior could change on mainlabel handling...
Member SRFCalendar::getResultText (SMWQueryResult $res, $outputmode)
Split up megamoth
Class StripState

document, briefly.

Member Title::getBrokenLinksFrom ()
check if needed (used only in SpecialBrokenRedirects.php, and should use redirect table in this case).
Title[] Array of Title the Title objects
Member Title::getUserPermissionsErrors ($action, $user, $rigor= 'secure', $ignoreErrors=[])
FIXME: This does not check throttles (User::pingLimiter()).
Member Title::isCssJsSubpage ()
FIXME: Rename to isUserConfigPage()
Member Title::isCssOrJsPage ()
FIXME: Rename to isSiteConfigPage() and remove deprecated hook
Member Title::validateFileMoveOperation ($nt)
move this to MovePage
Title$ntTarget title
array List of errors
Member TitleFormatter::getNamespaceName ($namespace, $text)
Move this to a separate interface
Member TitlePermissionTest::testActionPermissions ()
This test method should be split up into separate test methods and data providers
Member TitlePermissionTest::testCssAndJavascriptPermissions ()
This test method should be split up into separate test methods and data providers
Member TitlePermissionTest::testPageRestrictions ()
This test method should be split up into separate test methods and data providers
Member TitlePermissionTest::testQuickPermissions ()
This test method should be split up into separate test methods and data providers
Member TitlePermissionTest::testSpecialsAndNSPermissions ()
This test method should be split up into separate test methods and data providers
Member TitleTest::testGetSubpageText ($title, $expected, $msg= '')
Handle $wgNamespacesWithSubpages cases provideSubpageTitleCases Title::getSubpageText
Member TransformationalImageHandler::getClientScalingThumbnailImage ($image, $scalerParams)
FIXME: No rotation support
Member UIDGenerator::singleton ()
: move to MW-specific factory class and inject temp dir
Class UncategorizedImagesPage
FIXME: Use an instance of UncategorizedPagesPage or something
Class UncategorizedPagesPage
FIXME: Make $requestedNamespace selectable, unify all subclasses into one
Class UnregisteredLocalFile
Currently it doesn't really work in the repository role, there are lots of functions missing. It is used by the WebStore extension in the standalone role.
File update.php


File update.php


Member UploadBase::checkSvgScriptCallback ($element, $attribs, $data=null)
Replace this with a whitelist filter!
Return a status object to a closure in XmlTypeCheck, for MW1.21+
Member UploadBase::detectScript ($file, $mime, $extension)
FIXME: Convert from UTF-16 if necessary!
Member UploadBase::getImageInfo ($result)
This cries out for refactoring. We really want to say $file->getAllInfo(); here. Perhaps "info" methods should be moved into files, and the API should just wrap them in queries.
Member UploadBase::getRealPath ($srcPath)
Just make uploads work with storage paths UploadFromStash loads files via virtual URLs.
Member UploadBase::verifyExtension ($mime, $extension)
If it's a bitmap, make sure PHP or ImageMagick resp. can handle it!
Member UploadStash::removeFileNoAuth ($key)
Look into UnregisteredLocalFile and find out why the rv here is sometimes wrong (false when file was removed). For now, ignore.
Member UploadStashTest::testBug29408 ()
give this test a real name explaining what is being tested here
Member User::passwordChangeInputAttribs ()
FIXME: This does not belong here; put it in Html or Linker or somewhere
Member User::saveSettings ()
Only rarely do all these fields need to be set!
Member UserMergeLogger::addDeleteEntry (User $perfomer, User $oldUser)
Stop using this deprecated format
Member UserMergeLogger::addMergeEntry (User $performer, User $oldUser, User $newUser)
Stop using this deprecated format
Member Util_TestTest::methodForTestParseAnnotation ()
Remove fixture from test class
Member Util_TestTest::testGetExpectedException ()
Split up in separate tests
Member Util_TestTest::testGetProvidedDataRegEx ()
This test does not really test functionality of PHPUnit_Util_Test
Member Util_TestTest::testParseAnnotation ()
Not sure what this test tests (name is misleading at least)
Member WatchedItem::getTitle ()

remove in 1.28/9

Member wfAssembleUrl ($urlParts)
Need to integrate this into wfExpandUrl (bug 32168)
Member wfClientAcceptsGzip ($force=false)


FIXME: We may want to blacklist some broken browsers

Member wfExpandIRI ($url)
handle punycode domains too
Member wfExpandUrl ($url, $defaultProto=PROTO_CURRENT)
this won't work with current-path-relative URLs like "subdir/foo.html", etc.
Member wfLogProfilingData ()
Member wfNegotiateType ($cprefs, $sprefs)
FIXME: Doesn't handle params like 'text/plain; charset=UTF-8' XXX: generalize to negotiate other stuff
Member wfRemoveDotSegments ($urlPath)
Need to integrate this into wfExpandUrl (bug 32168)
Member wfShowingResults ($offset, $limit)
Member WikiMap::getWikiName ($wikiID)
We can give more info than just the wiki id!
string$wikiIDWiki'd id (generally database name)
string|int Wiki's name or $wiki_id if the wiki was not found
Member WikiPage::doRollback ($fromP, $summary, $token, $bot, &$resultDetails, User $user, $tags=null)
Separate the business/permission stuff out from backend code
Member WikiPage::getActionOverrides ()
Move this UI stuff somewhere else
Member WikiPage::supportsSections ()

The skin should check this and not offer section functionality if sections are not supported.

The EditPage should check this and not offer section functionality if sections are not supported.

Member WikiPageTest::broken_testDoRollback ()
FIXME: this is a better rollback test than the one below, but it keeps failing in jenkins for some reason.
Member WikiPageTest::testDoRollback ()
FIXME: the above rollback test is better, but it keeps failing in jenkins for some reason. WikiPage::doRollback
Member WikiRevision::$fileIsTemp
Member WikiRevision::$importer
Member XMPReader::parseExtended ($content)
In serious need of testing
See Also XMP spec part 3 page 20
string$contentXMPExtended block minus the namespace signature
bool If it succeeded.
Member XMPTest::testExtendedXMP ()
This is based on what the standard says. Need to find a real world example file to double check the support for this is right.