MediaWiki  1.33.0
Todo List
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.
Member ApiLoginTest::testGotCookie ()
Should this test just be deleted? Broken
Member ApiQuerySiteinfoTest::testSkins ( $code)

Test a skin with a description that's known to be different in a different language.

Test that an invalid language code doesn't actually try reading any messages

Member ApiUpload::handleStashException ( $e)
Internationalize the exceptions then get rid of this
Class ApiUploadTest

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

Broken test, reports false errors from time to time. See https://phabricator.wikimedia.org/T28169

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::$mContentObject
MCR: Remove in 1.33
Member Article::confirmDelete ( $reason)
Move to another file?
Member Article::fetchContentObject ()
When is this null?
Member Article::getRobotPolicy ( $action, ParserOutput $pOutput=null)
actions other than 'view'
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.
Member BaseBlacklist::getTypeFromTitle (Title $title)
building a regex for this is pretty overkill
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 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', $maxdepth=-1)
FIXME: $categories/$mode
File cdb.php
document
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 in this class (but is in subclasses), 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.
Member CommentStore::$stage
Deprecate and remove once extensions seem unlikely to need to use it for migration anymore.
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::createDifferenceEngine (IContextSource $context, $old=0, $new=0, $rcid=0, $refreshCache=false, $unhide=false)
This is page-level functionality so it should not belong to ContentHandler. Move it to a better place once one exists (e.g. PageTypeHandler).
Member ContentHandler::getAutoDeleteReason (Title $title, &$hasHistory)
&$hasHistory is extremely ugly, it's here because WikiPage::getAutoDeleteReason() and Article::generateReason() have it / want it.
Member ContentHandler::getFieldsForSearchIndex (SearchEngine $engine)
Expose title, redirect, namespace, text, source_text, text_bytes field mappings here. (see T142670 and T143409)
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 DatabaseInstaller::$parent
Naming this parent is confusing, 'installer' would be clearer.
Member DatabaseSqliteTest::testUpgrades ()
Currently only checks list of tables @coversNothing
Class DateFormatter
preferences, OutputPage
Member DBLockManager::getLocksOnServer ( $lockSrv, array $pathsByType)
change this code to work in one batch
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.
File deleteOrphanedRevisions.php
More efficient cleanup of text records
Class Diff
document
Class DifferenceEngine
This class is huge and poorly defined. It should be split into a controller responsible for interpreting query parameters, retrieving data and checking permissions; and a HTML renderer.
Class DifferenceEngineTest
tests for the rest of DifferenceEngine!
Class DiffFormatter
document
Member DummySerializeErrorContentHandler::supportsDirectApiEditing ()
Should this be in the parent class?
File dumpMessages.php
Make this more useful, right now just dumps content language
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!
Member ExtensionProcessor::extractConfig1 (array $info)
In the future, this should be done via Config interfaces
Member ExtensionProcessor::extractConfig2 (array $info, $dir)
In the future, this should be done via Config interfaces
Member ForeignResourceManager::parseBasicYaml ( $input)
Just ship symfony/yaml.
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 HistoryPager::historyLine ( $row, $next, $notificationtimestamp=false, $latest=false, $firstInList=false)
document some more, and maybe clean up the code (some params redundant?)
Class HTMLForm
Document 'section' / 'subsection' stuff
Member HTMLForm::displaySection ( $fields, $sectionName='', $fieldsetIDPrefix='', &$hasUserVisibleFields=false)
Document
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
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
document
File IEContentAnalyzer.php
Define the exact license of this file.
Member ImagePage::makeMetadataTable ( $metadata)
FIXME: Bad interface, see note on MediaHandler::formatMetadata().
Member IPTC::timeHelper ( $date, $time, $charset)
Potentially this should also capture the timezone offset.
Class IPTest
Test methods in this call should be split into a method and a dataprovider.
Class JavaScriptContentHandler
Create a ScriptContentHandler base class, do highlighting stuff there?
Class JpegMetadataExtractorTest
Could use a test of extended XMP segments.
Member Language::convertHtml ( $text)
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.
Member Language::sprintfDate ( $format, $ts, DateTimeZone $zone=null, &$ttl='unused')
handling of "o" format character for Iranian, Hebrew, Hijri & Thai?
Member Language::translateBlockExpiry ( $str, User $user=null, $now=0)
Maybe translate block durations.
Member LanguageAr::normalize ( $s)
FIXME: This is language-specific for now only to avoid the negative performance impact of enabling it for all languages.
Class LanguageCode
Move some of the code-related static methods out of Language into this class
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 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
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 LinkFilter::makeRegex ( $filterEntry, $protocol)
This doesn't match the rest of the functionality here.
Member LinkSearchPage::getMaxResults ()
FIXME This special page should not use LIMIT for paging
Class LocalFileTest
Split tests into providers and test methods
Class LocalisationUpdate\GitHubFetcher
Could use file hashes to 1) avoid fetching files with same hash as the source. 2) avoid fetching files which haven't changed since last check if we store them.
Member LogPage::getTitleLink ( $type, $lang, $title, &$params)
Document
File mcc.php
document
Member MediaHandler::formatMetadata ( $image, $context=false)
FIXME: This interface is not very flexible.
Member MediaWiki\Linker\LinkRenderer::normalizeTarget (LinkTarget $target)
move the code from Linker actually here
Member MediaWiki\OutputHandler::findUriExtension ()
As of 2018, this actually runs after autoloader in Setup.php, so WebRequest seems like a good place for this.
Member MediaWiki\Permissions\PermissionManager::getPermissionErrors ( $action, User $user, LinkTarget $page, $rigor=self::RIGOR_SECURE, $ignoreErrors=[])
FIXME: This does not check throttles (User::pingLimiter()).
Member MediaWiki\Preferences\DefaultPreferencesFactory::profilePreferences (User $user, IContextSource $context, &$defaultPreferences, $canIPUseHTTPS)
Inject user Language instead of using context.
Member MediaWiki\Special\SpecialPageFactory::$coreList
Make this a const when we drop HHVM support (T192166). It can still be private in PHP 7.1.
Class MediaWiki\Storage\DerivedPageDataUpdater
Define interfaces for the different use cases of DerivedPageDataUpdater, particularly providing access to post-PST content and ParserOutput to callbacks during revision creation, which currently use WikiPage::prepareContentForEdit, and allowing updates to be triggered on purge, import, and undeletion, which currently use WikiPage::doEditUpdates() and Content::getSecondaryDataUpdates().
Member MediaWiki\Storage\DerivedPageDataUpdater::getRevision ()
This is currently used by PageUpdater::makeNewRevision() to construct an unsaved MutableRevisionRecord instance. Introduce something like an UnsavedRevisionFactory service for that purpose instead!
Member MediaWiki\Storage\SqlBlobStore::compressData (&$blob)
make this private, there should be no need to use this method outside this class.
Member MediaWiki\Storage\SqlBlobStore::decompressData ( $blob, array $blobFlags)
make this private, there should be no need to use this method outside this class.
Member MediaWiki\Storage\SqlBlobStore::expandBlob ( $raw, $flags, $cacheKey=null)
make this private, there should be no need to use this method outside this class.
Member MediaWiki\Tests\Permissions\PermissionManagerTest::testActionPermissions ()
This test method should be split up into separate test methods and data providers \MediaWiki\Permissions\PermissionManager::checkActionPermissions
Member MediaWiki\Tests\Permissions\PermissionManagerTest::testCssConfigEditPermissions ()
This test method should be split up into separate test methods and data providers \MediaWiki\Permissions\PermissionManager::checkUserConfigPermissions
Member MediaWiki\Tests\Permissions\PermissionManagerTest::testJsConfigEditPermissions ()
This test method should be split up into separate test methods and data providers \MediaWiki\Permissions\PermissionManager::checkUserConfigPermissions
Member MediaWiki\Tests\Permissions\PermissionManagerTest::testJsonConfigEditPermissions ()
This test method should be split up into separate test methods and data providers \MediaWiki\Permissions\PermissionManager::checkUserConfigPermissions
Member MediaWiki\Tests\Permissions\PermissionManagerTest::testOtherCssConfigEditPermissions ()
This test method should be split up into separate test methods and data providers \MediaWiki\Permissions\PermissionManager::checkUserConfigPermissions
Member MediaWiki\Tests\Permissions\PermissionManagerTest::testOtherJsConfigEditPermissions ()
This test method should be split up into separate test methods and data providers \MediaWiki\Permissions\PermissionManager::checkUserConfigPermissions
Member MediaWiki\Tests\Permissions\PermissionManagerTest::testOtherJsonConfigEditPermissions ()
This test method should be split up into separate test methods and data providers \MediaWiki\Permissions\PermissionManager::checkUserConfigPermissions
Member MediaWiki\Tests\Permissions\PermissionManagerTest::testOtherNonConfigEditPermissions ()
This test method should be split up into separate test methods and data providers \MediaWiki\Permissions\PermissionManager::checkUserConfigPermissions
Member MediaWiki\Tests\Permissions\PermissionManagerTest::testPageRestrictions ()
This test method should be split up into separate test methods and data providers
Member MediaWiki\Tests\Permissions\PermissionManagerTest::testPatrolActionConfigEditPermissions ()
This should use data providers like the other methods here.
Member MediaWiki\Tests\Permissions\PermissionManagerTest::testQuickPermissions ()
This test method should be split up into separate test methods and data providers
Member MediaWiki\Tests\Permissions\PermissionManagerTest::testSpecialsAndNSPermissions ()
This test method should be split up into separate test methods and data providers MediaWiki\Permissions\PermissionManager::checkSpecialsAndNSPermissions
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?
Member MimeAnalyzer::doGuessMimeType ( $file, $ext)
Remove $ext param
Member MimeAnalyzer::getMediaType ( $path=null, $mime=null)

analyse file if need be

look at multiple extension, separately and together.

Member MimeAnalyzer::isRecognizableExtension ( $extension)
Be more accurate when using fancy MIME detector plugins; right now this is the bare minimum getimagesize() list.
Member MovePage::moveToInternal (User $user, &$nt, $reason='', $createRedirect=true, array $changeTags=[])
This was basically directly moved from Title, it should be split into smaller functions
Member MultiHttpClient::runMultiHttp (array $reqs, array $opts=[])
Remove dependency on MediaWikiServices: use a separate HTTP client library or copy code from PhpHttpRequest
File mwdocgen.php
document
Member MWHttpRequest::setData (array $args)
overload the args param
Member MWLBFactory::getLBFactoryClass (array $config)
instead of this, use a ServiceContainer for managing the different implementations.
Member MWNamespaceTest::testIsCapitalizedWithWgCapitalLinkOverrides ()
split groups of assertions in autonomous testing functions MWNamespace::isCapitalized
Member MWNamespaceTest::testIsMovable ()
Write more texts, handle $wgAllowImageMoving setting MWNamespace::isMovable
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.
Member PageArchive::getLastRevisionText ()
remove in 1.33
Member PageArchive::getTextFromRow ( $row)
remove in 1.33
Member PageArchive::listFiles ()
Does this belong in Image for fuller encapsulation?
Class ParserCache
document
Member ParserOptions::$mUser
Track this for caching somehow without fragmenting the cache insanely
Member ParserOptions::$redirectTarget
Track this for caching somehow
Member ParserOutput::addTrackingCategory ( $msg, $title)
Migrate some code to TrackingCategories
File ParserTestRunner.php
Make this more independent of the configuration (and if possible the database)
Member PostgresUpdater::getCoreUpdateList ()
FIXME: Postgres should use sequential updates like Mysql, Sqlite and everybody else.
Class Preprocessor_Hash
: Consider replacing descriptor arrays with objects of a new class. Benchmark and measure resulting memory impact.
Member PurgeChangedPages::pageableSortedRows (ResultWrapper $res, $column, $limit)
move this elsewhere
File rebuildrecentchanges.php
Document
File rebuildtextindex.php
document
Class RecentChange
Deprecate access to mAttribs (direct or via getAttributes). Right now we're having to include both rc_comment and rc_comment_text/rc_comment_data so random crap works right.
Member ResourcesTest::testIllegalDependencies ()
Modules can dynamically choose dependencies based on context. This method does not test such dependencies. The same goes for testMissingDependencies() and testUnsatisfiableDependencies().
Member Revision::getContentFormat ()
drop this, the format is irrelevant to the revision!
Member Revision::getContentModel ()
drop this, with MCR, there no longer is a single model associated with a revision.
Member Revision\RevisionRenderer::combineSlotOutput (RenderedRevision $rrev, array $hints=[])
Use placement hints from SlotRoleHandlers instead of hard-coding the layout.
Member Revision\RevisionStore::__construct (ILoadBalancer $loadBalancer, SqlBlobStore $blobStore, WANObjectCache $cache, CommentStore $commentStore, NameTableStore $contentModelStore, NameTableStore $slotRoleStore, SlotRoleRegistry $slotRoleRegistry, $mcrMigrationStage, ActorMigration $actorMigration, $wikiId=false)
$blobStore should be allowed to be any BlobStore!
Member Revision\RevisionStore::findSlotContentId (IDatabase $db, $revId, $role)
remove after MCR schema migration is complete.
Member Revision\RevisionStore::getRcIdIfUnpatrolled (RevisionRecord $rev)
This is overly specific, so move or kill this method.
Member Revision\RevisionStore::getRecentChange (RevisionRecord $rev, $flags=0)
move this somewhere else?
Member Revision\RevisionStore::loadRevisionFromId (IDatabase $db, $id)
remove when unused! there seem to be no callers of Revision::loadFromId
Member Revision\RevisionStore::loadRevisionFromPageId (IDatabase $db, $pageid, $id=0)
remove when unused!
Member Revision\RevisionStore::loadRevisionFromTimestamp (IDatabase $db, $title, $timestamp)
remove when unused!
Member Revision\RevisionStore::loadRevisionFromTitle (IDatabase $db, $title, $id=0)
remove when unused!
Member Revision\RevisionStore::newNullRevision (IDatabase $dbw, Title $title, CommentStoreComment $comment, $minor, User $user)
Introduce newFromParentRevision(). newNullRevision can then be based on that (or go away).
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.
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
Class SanitizerValidateEmailTest
all test methods in this class should be refactored and...
Member SearchEngine::getTextFromContent (Title $t, Content $c=null)
This isn't ideal, we'd really like to have content-specific handling here
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)
document
Class SearchResult
FIXME: This class is horribly factored.
File Setup.php
UGLY UGLY
Member SideBarTest::assertSideBar ( $expected, $text, $message='')
this assert method to should be converted to a test using a dataprovider..
Class SiteConfiguration
Give examples for, suffixes: $conf->suffixes = [ 'wiki' ]; localVHosts callbacks!
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?
Class SpecialAllPages
Rewrite using IndexPager
Member SpecialBlock::getSuggestedDurations (Language $lang=null, $includeOther=true)
FIXME: This uses a rather odd syntax for the options, should it be converted to the standard "**<duration>|<displayname>" format?
Member SpecialBlock::getTargetAndType ( $par, WebRequest $request=null)
Should be in Block.php?
Member SpecialBlock::parseExpiryInput ( $expiry)
strtotime() only accepts English strings. This means the expiry input can only be specified in English.
Member SpecialContributions::contributionsSub ( $userObj)
FIXME: Almost the same as getSubTitle in SpecialDeletedContributions.php. Could be combined.
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 SpecialPageAliasTest
This should be a structure test
Member SpecialPreferencesTest::testT43337 ()
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 SpecialSearch::showGoogleSearch ( $term)
FIXME Maybe we should get rid of this raw html message at some future time @suppress SecurityCheck-XSS
Member SpecialUpload::rotationEnabled ()
What about non-BitmapHandler handled files?
Member SpecialUploadStash::outputFileHeaders ( $contentType, $size)
Unsure about encoding as binary; if we received from HTTP perhaps we should use that encoding, concatenated with semicolon to $contentType as it usually is.
File SpecialWhatlinkshere.php
Use some variant of Pager or something; the pagination here is lousy.
Class SquidPurgeClient
Consider using MultiHttpClient.
Class StripState
document, briefly.
Class SwiftVirtualRESTService
caching support (APC/memcached)
Class TableDiffFormatter
document
Module TermColorer
Fixme: Make this more generic
Member TestUserRegistry::isMutable (User $user)
It would be nice if this were a non-static method of TestUser instead, but that doesn't seem possible without friends?
Member Title::getBrokenLinksFrom ()
check if needed (used only in SpecialBrokenRedirects.php, and should use redirect table in this case).
Member Title::getContentModel ( $flags=0)
Deprecate this in favor of SlotRecord::getModel()
Member Title::getUserPermissionsErrors ( $action, $user, $rigor=PermissionManager::RIGOR_SECURE, $ignoreErrors=[])
FIXME: This does not check throttles (User::pingLimiter()).
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 \MediaWiki\Permissions\PermissionManager::checkActionPermissions
Member TitlePermissionTest::testCssConfigEditPermissions ()
This test method should be split up into separate test methods and data providers \MediaWiki\Permissions\PermissionManager::checkUserConfigPermissions
Member TitlePermissionTest::testJsConfigEditPermissions ()
This test method should be split up into separate test methods and data providers \MediaWiki\Permissions\PermissionManager::checkUserConfigPermissions
Member TitlePermissionTest::testJsonConfigEditPermissions ()
This test method should be split up into separate test methods and data providers \MediaWiki\Permissions\PermissionManager::checkUserConfigPermissions
Member TitlePermissionTest::testOtherCssConfigEditPermissions ()
This test method should be split up into separate test methods and data providers \MediaWiki\Permissions\PermissionManager::checkUserConfigPermissions
Member TitlePermissionTest::testOtherJsConfigEditPermissions ()
This test method should be split up into separate test methods and data providers \MediaWiki\Permissions\PermissionManager::checkUserConfigPermissions
Member TitlePermissionTest::testOtherJsonConfigEditPermissions ()
This test method should be split up into separate test methods and data providers \MediaWiki\Permissions\PermissionManager::checkUserConfigPermissions
Member TitlePermissionTest::testOtherNonConfigEditPermissions ()
This test method should be split up into separate test methods and data providers \MediaWiki\Permissions\PermissionManager::checkUserConfigPermissions
Member TitlePermissionTest::testPageRestrictions ()
This test method should be split up into separate test methods and data providers
Member TitlePermissionTest::testPatrolActionConfigEditPermissions ()
This should use data providers like the other methods here.
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 \MediaWiki\Permissions\PermissionManager::checkSpecialsAndNSPermissions
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
document
Member UploadStashTest::testT31408 ()
give this test a real name explaining what is being tested here
Member User::saveSettings ()
Only rarely do all these fields need to be set!
Member wfAssembleUrl ( $urlParts)
Need to integrate this into wfExpandUrl (see T34168)
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 wfGetDB ( $db, $groups=[], $wiki=false)
Replace calls to wfGetDB with calls to LoadBalancer::getConnection() on an injected instance of LoadBalancer.
Member wfLogProfilingData ()

document

Move logic to MediaWiki.php

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 (see T34168)
Member wfShowingResults ( $offset, $limit)
document
Member WikiMap::getWikiName ( $wikiID)
We can give more info than just the wiki id!
Member Wikimedia\Http\HttpAcceptParser::parseWeights ( $rawHeader)
If additional type parameters are present, ignore them cleanly. At present, they often confuse the result.
Member Wikimedia\Rdbms\DatabasePostgres::nativeInsertSelect ( $destTable, $srcTable, $varMap, $conds, $fname=__METHOD__, $insertOptions=[], $selectOptions=[], $selectJoinConds=[])
FIXME: Implement this a little better (separate select/insert)?
Member Wikimedia\Rdbms\DatabaseSqlite::implicitGroupby ()
Check if it should be true like parent class
Member WikiPage::doRollback ( $fromP, $summary, $token, $bot, &$resultDetails, User $user, $tags=null)

Separate the business/permission stuff out from backend code

Remove $token parameter. Already verified by RollbackAction and ApiRollback.

Member WikiPage::getActionOverrides ()
Move this UI stuff somewhere else
Member WikiPage::insertOn ( $dbw, $pageId=null)
Factor out into a PageStore service, to be used by PageUpdater.
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 WikiPage::updateRevisionOn ( $dbw, $revision, $lastRevision=null, $lastRevIsRedirect=null)
Factor out into a PageStore service, or move into PageUpdater.
Member WikiReference::getLocalUrl ( $page, $fragmentId=null)
FIXME: This may be generalized...
Member WikiRevision::$isTemp
Unused?
Member Xml::isWellFormed ( $text)
Error position reporting return