- Member UploadBase::checkSvgScriptCallback ( $element, $attribs, $data=null)
- Replace this with a whitelist filter!
- Member MediaWiki\Storage\RevisionStore::getRcIdIfUnpatrolled (RevisionRecord $rev)
- This is overly specific, so move or kill this method.
- Member MediaWiki\Storage\RevisionStore::getRecentChange (RevisionRecord $rev, $flags=0)
- move this somewhere else?
- Member MediaWiki\Storage\RevisionStore::loadRevisionFromId (IDatabase $db, $id)
- remove when unused! there seem to be no callers of Revision::loadFromId
- Member MediaWiki\Storage\RevisionStore::loadRevisionFromPageId (IDatabase $db, $pageid, $id=0)
- remove when unused!
- Member MediaWiki\Storage\RevisionStore::loadRevisionFromTitle (IDatabase $db, $title, $id=0)
- remove when unused!
- Member MediaWiki\Storage\RevisionStore::loadRevisionFromTimestamp (IDatabase $db, $title, $timestamp)
- remove when unused!
- 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\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 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 TitleFormatter::getNamespaceName ( $namespace, $text)
- Move this to a separate interface
- Member Title::getUserPermissionsErrors ( $action, $user, $rigor='secure', $ignoreErrors=[])
- FIXME: This does not check throttles (User::pingLimiter()).
- Member Title::getBrokenLinksFrom ()
- check if needed (used only in SpecialBrokenRedirects.php, and should use redirect table in this case).
- Member Title::validateFileMoveOperation ( $nt)
- move this to MovePage
- Member MediaWiki\Storage\RevisionStore::newNullRevision (IDatabase $dbw, Title $title, CommentStoreComment $comment, $minor, User $user)
- Introduce newFromParentRevision(). newNullRevision can then be based on that (or go away).
- Member User::saveSettings ()
- Only rarely do all these fields need to be set!
- Member UIDGenerator::singleton ()
- : move to MW-specific factory class and inject temp dir
- Member WikiMap::getWikiName ( $wikiID)
- We can give more info than just the wiki id!
- Member WikiReference::getLocalUrl ( $page, $fragmentId=null)
- FIXME: This may be generalized...
- Member Xml::isWellFormed ( $text)
- Error position reporting return
- 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 LanguageMl::normalize ( $s)
- FIXME: This is language-specific for now only to avoid the negative performance impact of enabling it for all languages.
- Member LanguageYue::segmentByWord ( $string)
- FIXME: Only do this for Han characters...
- Member LanguageZh_hans::segmentByWord ( $string)
- FIXME: Only do this for Han characters...
- Member Language::sprintfDate ( $format, $ts, DateTimeZone $zone=null, &$ttl='unused')
- handling of "o" format character for Iranian, Hebrew, Hijri & Thai?
- Member Language::formatNum ( $number, $nocommafy=false)
- check if it's viable to use localeconv() for the decimal separator thing.
- Member Language::translateBlockExpiry ( $str, User $user=null, $now=0)
- 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 Language::convertHtml ( $text, $isTitle=false)
- this should get integrated somewhere sane
- Class LanguageCode
- Move some of the code-related static methods out of Language into this class
- Member DeletedContribsPager::formatRevisionRow ( $row)
- This would probably look a lot nicer in a table.
- Member SearchEngine::getTextFromContent (Title $t, Content $c=null)
- This isn't ideal, we'd really like to have content-specific handling here
- Member SearchMssql::parseQuery ( $filteredText, $fulltext)
- document
- 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.
- Member MediaWiki\Session\PHPSessionHandler::returnSuccess ()
- When we drop support for Zend PHP 5, this can be removed.
- File Setup.php
- UGLY UGLY
- Member DBSiteStore::__construct (LoadBalancer $dbLoadBalancer)
- : inject some kind of connection manager that is aware of the target wiki, instead of injecting a LoadBalancer.
- Class SiteConfiguration
- Give examples for, suffixes: $conf->suffixes = [ 'wiki' ]; localVHosts callbacks!
- Member Skin::setupSkinUserCss (OutputPage $out)
- delete
- 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 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 ContribsPager::formatRow ( $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 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 SpecialAllPages
- Rewrite using IndexPager
- Member SpecialBlock::getTargetAndType ( $par, WebRequest $request=null)
- Should be in Block.php?
- 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?
- Member SpecialContributions::contributionsSub ( $userObj)
- FIXME: Almost the same as getSubTitle in SpecialDeletedContributions.php. Could be combined.
- Member LinkSearchPage::getMaxResults ()
- FIXME This special page should not use LIMIT for paging
- 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?
- Member SpecialRevisionDelete::tryShowFile ( $archiveName)
- Mostly copied from Special:Undelete. Refactor.
- Member SpecialRevisionDelete::addUsageText ()
- FIXME: Wikimedia-specific policy text
- Class UncategorizedImagesPage
- FIXME: Use an instance of UncategorizedPagesPage or something
- Class UncategorizedPagesPage
- FIXME: Make $requestedNamespace selectable, unify all subclasses into one
- 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. Side effect: preps PHP to write headers to STDOUT.
- File SpecialWhatlinkshere.php
- Use some variant of Pager or something; the pagination here is lousy.
- Member MediaWiki\Storage\RevisionStore::__construct (LoadBalancer $loadBalancer, SqlBlobStore $blobStore, WANObjectCache $cache, CommentStore $commentStore, ActorMigration $actorMigration, $wikiId=false)
- $blobStore should be allowed to be any BlobStore!
- Member TitlePermissionTest::testOtherJsConfigEditPermissions ()
- This test method should be split up into separate test methods and data providers Title::checkUserConfigPermissions
- 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.
- Class JpegMetadataExtractorTest
- Could use a test of extended XMP segments. Hard to find programs that create example files, and creating my own in vim probably 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 MWNamespaceTest::testIsMovable ()
- Write more texts, handle $wgAllowImageMoving setting MWNamespace::isMovable
- Member MWNamespaceTest::testIsCapitalizedWithWgCapitalLinkOverrides ()
- split groups of assertions in autonomous testing functions MWNamespace::isCapitalized
- Class OutputPageTest
- factor tests in this class into providers and test methods
- Class SanitizerValidateEmailTest
- all test methods in this class should be refactored and... use a single test method and a single data provider...
- Member SpecialPreferencesTest::testBug41337 ()
- give this test a real name explaining what is being tested here
- 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 TitlePermissionTest::testQuickPermissions ()
- This test method should be split up into separate test methods and data providers Title::checkQuickPermissions
- Member TitlePermissionTest::testSpecialsAndNSPermissions ()
- This test method should be split up into separate test methods and data providers Title::checkSpecialsAndNSPermissions
- Member TitlePermissionTest::testJsConfigEditPermissions ()
- This test method should be split up into separate test methods and data providers Title::checkUserConfigPermissions
- Member TitlePermissionTest::testJsonConfigEditPermissions ()
- This test method should be split up into separate test methods and data providers Title::checkUserConfigPermissions
- Member TitlePermissionTest::testCssConfigEditPermissions ()
- This test method should be split up into separate test methods and data providers Title::checkUserConfigPermissions
- Class IPTest
- Test methods in this call should be split into a method and a dataprovider.
- Member TitlePermissionTest::testOtherJsonConfigEditPermissions ()
- This test method should be split up into separate test methods and data providers Title::checkUserConfigPermissions
- Member TitlePermissionTest::testOtherCssConfigEditPermissions ()
- This test method should be split up into separate test methods and data providers Title::checkUserConfigPermissions
- Member TitlePermissionTest::testOtherNonConfigEditPermissions ()
- This test method should be split up into separate test methods and data providers Title::checkUserConfigPermissions
- Member TitlePermissionTest::testPageRestrictions ()
- This test method should be split up into separate test methods and data providers Title::checkPageRestrictions
- Member TitlePermissionTest::testActionPermissions ()
- This test method should be split up into separate test methods and data providers Title::checkActionPermissions
- Member TitleTest::testGetSubpageText ( $title, $expected, $msg='')
- Handle $wgNamespacesWithSubpages cases provideSubpageTitleCases Title::getSubpageText
- Member UploadStashTest::testBug29408 ()
- give this test a real name explaining what is being tested here
- Class AvroValidatorTest
- Test methods in this call should be split into a method and a dataprovider.
- Member LanguageArTest::testFormatNum ()
- split into a test and a dataprovider
- 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 DummySerializeErrorContentHandler::supportsDirectApiEditing ()
- Should this be in the parent class?
- Member SideBarTest::assertSideBar ( $expected, $text, $message='')
- this assert method to should be converted to a test using a dataprovider..
- Member ParserTestRunner::setupDatabase ( $nextTeardown=null)
- : This is basically an unrefactored copy of MediaWikiTestCase::setupAllTestDBs. They should be factored out somehow.
- File cdb.php
document
- File deleteOrphanedRevisions.php
- More efficient cleanup of text records
- Class EraseArchivedFile
- Maybe add some simple logging
- File dumpMessages.php
- Make this more useful, right now just dumps $wgContLang
- File mcc.php
document
- File mwdocgen.php
- document
- Member Orphans::checkWidows ( $fix)
- DON'T USE THIS YET! It will remove entries which have children, but which aren't properly attached (eg if page_latest is bogus but valid revisions do exist)
- Member PurgeChangedPages::pageableSortedRows (ResultWrapper $res, $column, $limit)
- move this elsewhere
- File rebuildrecentchanges.php
- Document
- File rebuildtextindex.php
- document
- Module TermColorer
- Fixme: Make this more generic
- File update.php
document
- File ParserTestRunner.php
Make this more independent of the configuration (and if possible the database)
- Member ParserTestRunner::parseOptions ( $instring)
- Move this to TestFileReader
- Class SearchEngineDummy
FIXME: Dummy class should probably try something at least mildly useful, such as a LIKE search through titles.
- Member ParserTestRunner::teardownDatabase ()
- Move most things here to CloneDatabase
- Member ApiParseTest::setupSkin ()
- Should this code be in MediaWikiTestCase or something?
- 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
- Member EnhancedChangesListTest::testRecentChangesLine ()
- more tests
- Member EnhancedChangesListTest::testEndRecentChangesList ()
- more tests for actual formatting, this is more of a smoke test
- 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 DatabaseSqliteTest::testUpgrades ()
- Currently only checks list of tables @coversNothing
- Class DifferenceEngineTest
- tests for the rest of DifferenceEngine!
- Class HttpErrorTest
- tests for HttpError::report
- Class LocalFileTest
- Split tests into providers and test methods
- Class IEUrlExtensionTest
- tests below for findIE6Extension should be split into... ...a dataprovider and test method.
- Member WikiRevision::$isTemp
- Unused?
- Member wfRemoveDotSegments ( $urlPath)
- Need to integrate this into wfExpandUrl (see T34168)
- Member wfExpandIRI ( $url)
- handle punycode domains too
- Member wfLogProfilingData ()
document
Move logic to MediaWiki.php
- Member wfShowingResults ( $offset, $limit)
- document
- Member wfNegotiateType ( $cprefs, $sprefs)
- FIXME: Doesn't handle params like 'text/plain; charset=UTF-8' XXX: generalize to negotiate other stuff
- Member wfGetDB ( $db, $groups=[], $wiki=false)
- Replace calls to wfGetDB with calls to LoadBalancer::getConnection() on an injected instance of LoadBalancer.
- Member Html::inlineScript ( $contents)
- do some useful escaping as well, like if $contents contains literal "</script>" or (for XML) literal "]]>".
- Class HTMLSelectAndOtherField
- FIXME: If made 'required', only the text field should be compulsory.
- Class HTMLForm
- Document 'section' / 'subsection' stuff
- Member HTMLForm::setSubmitID ( $t)
- FIXME: Integrity of $t is not validated
- Member HTMLForm::setMessagePrefix ( $p)
- Currently only used for the "<fieldset>" legend on forms with multiple sections; should be used elsewhere?
- Member HTMLForm::displaySection ( $fields, $sectionName='', $fieldsetIDPrefix='', &$hasUserVisibleFields=false)
- Document
- Member Http::isValidURI ( $uri)
- FIXME this is wildly inaccurate and fails to actually check most stuff
- Member MWHttpRequest::setData ( $args)
- overload the args param
- Member wfAssembleUrl ( $urlParts)
- Need to integrate this into wfExpandUrl (see T34168)
- Member DatabaseInstaller::$parent
- Naming this parent is confusing, 'installer' would be clearer.
- Member PostgresUpdater::getCoreUpdateList ()
- FIXME: Postgres should use sequential updates like Mysql, Sqlite and everybody else. It never got refactored like it should've.
- 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 Wikimedia\Http\HttpAcceptParser::parseWeights ( $rawHeader)
- : If additional type parameters are present, ignore them cleanly. At present, they often confuse the result.
- Class HttpStatus
- document
- File IEContentAnalyzer.php
- Define the exact license of this file.
- Member MimeAnalyzer::isRecognizableExtension ( $extension)
- Be more accurate when using fancy MIME detector plugins; right now this is the bare minimum getimagesize() list.
- 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 Wikimedia\Rdbms\DatabasePostgres::nativeInsertSelect ( $destTable, $srcTable, $varMap, $conds, $fname=__METHOD__, $insertOptions=[], $selectOptions=[], $selectJoinConds=[])
- FIXME: Implement this a little better (seperate select/insert)?
- Member Wikimedia\Rdbms\DatabaseSqlite::implicitGroupby ()
- Check if it should be true like parent class
- Class SwiftVirtualRESTService
- caching support (APC/memcached)
- Class JavaScriptContentHandler
- Create a ScriptContentHandler base class, do highlighting stuff there?
- Member ApiUpload::handleStashException ( $e)
- Internationalize the exceptions then get rid of this
- Member Block::getTargetAndType ()
- FIXME: This should be an integral part of the Block member variables
- 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
- Member EnhancedChangesList::makeCacheGroupingKey (RCCacheEntry $cacheEntry)
- use rc_source to group, if set; fallback to rc_type
- 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 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 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 ContentHandler::getFieldsForSearchIndex (SearchEngine $engine)
- Expose title, redirect, namespace, text, source_text, text_bytes field mappings here. (see T142670 and T143409)
- Member XMPReader::parseExtended ( $content)
- In serious need of testing
- Member MWLBFactory::getLBFactoryClass (array $config)
- instead of this, use a ServiceContainer for managing the different implementations.
- Member $wgHashedUploadDirectory
- Deprecate the setting and ultimately remove it from Core.
- Member $wgFooterIcons
- Reformat documentation.
- Member $wgExtraNamespaces
- Add a note about maintenance/namespaceDupes.php
- 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 Diff
- document
- Class DifferenceEngine
document
- Member DifferenceEngine::generateTextDiffBody ( $otext, $ntext)
- move this to TextDifferenceEngine, make DifferenceEngine abstract. At some point.
- Class DiffFormatter
document
- Class TableDiffFormatter
- document
- 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.
- 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.
- Class FormOptions
- This badly needs some examples and tests :) The usage in SpecialRecentchanges class is a good ersatz in the meantime.
- Member wfExpandUrl ( $url, $defaultProto=PROTO_CURRENT)
- this won't work with current-path-relative URLs like "subdir/foo.html", etc.
- Member Sanitizer::validateTagAttributes ( $attribs, $element)
- Check for unique id attribute :P
- 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 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 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.
- Member CoreTagHooks::gallery ( $content, $attributes, $parser)
- break Parser::renderImageGallery out here too.
- Class DateFormatter
preferences, OutputPage
- Member Parser::setTransparentTagHook ( $tag, callable $callback)
- better document or deprecate this
- 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
- Class Preprocessor_Hash
- : Consider replacing descriptor arrays with objects of a new class. Benchmark and measure resulting memory impact.
- Member Sanitizer::validateTagAttributes ( $attribs, $element)
- Check for legal values where the DTD limits things.
- Member PageArchive::listFiles ()
- Does this belong in Image for fuller encapsulation?
- Member Sanitizer::validateAttributes ( $attribs, $whitelist)
Check for legal values where the DTD limits things.
Check for unique id attribute :P
- Member Sanitizer::mergeAttributes ( $a, $b)
- implement merging for other attributes such as style
- Member Sanitizer::escapeIdReferenceList ( $referenceString, $options=[])
- remove $options completely in 1.32
- Member Sanitizer::escapeClass ( $class)
- For extra validity, input should be validated UTF-8.
- Class StripState
document, briefly.
- Member MediaWiki\Preferences\DefaultPreferencesFactory::profilePreferences (User $user, IContextSource $context, &$defaultPreferences, $canIPUseHTTPS)
- Inject user Language instead of using context.
- 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 Revision::getContentModel ()
- : drop this, with MCR, there no longer is a single model associated with a revision.
- Member Revision::getContentFormat ()
- : drop this, the format is irrelevant to the revision!
- 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 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 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 MediaWiki\Linker\LinkRenderer::normalizeTarget (LinkTarget $target)
- move the code from Linker actually here
- Class Linker
- turn this into a legacy interface for HtmlPageLinkRenderer and similar services.
- Member Linker::makeMediaLinkFile (Title $title, $file, $html='')
- Handle invalid or missing images better.
- 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
- 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 LogPage::getTitleLink ( $type, $lang, $title, &$params)
- Document
- Class BitmapMetadataHandler
Other image formats.
- Member BitmapMetadataHandler::Tiff ( $filename)
- Add XMP support, so this function actually makes sense to put here.
- 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 GIFHandler::getImageArea ( $image)
- Add unit tests
- Member IPTC::timeHelper ( $date, $time, $charset)
- Potentially this should also capture the timezone offset.
- 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.
- Member TransformationalImageHandler::getClientScalingThumbnailImage ( $image, $scalerParams)
- FIXME: No rotation support
- Member HistoryPager::historyLine ( $row, $next, $notificationtimestamp=false, $latest=false, $firstInList=false)
- document some more, and maybe clean up the code (some params redundant?)
- Class Message
- test, can we have tests?
- this documentation needs to be extended
- Member Message::isBlank ()
- FIXME: Merge with isDisabled()?
- 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 MediaWiki\OutputHandler::findUriExtension ()
- As of 2018, this actually runs after autoloader in Setup.php, so WebRequest seems like a good place for this.
- Class OutputPage
FIXME: Another class handles sending the whole page to the client.
document
- Member OutputPage::$mScripts
- We should split JS / CSS. mScripts content is inserted as is in "<head>" by Skin. This might contain either a link to a stylesheet or inline CSS.
- Member OutputPage::disallowUserJs ()
- this should be given a more accurate name
- Class Article
- Move and rewrite code to an Action class
- Member Article::$mContent
- BC cruft
- Member Article::fetchContentObject ()
- When is this null?
- Member Article::getRobotPolicy ( $action, $pOutput=null)
- actions other than 'view'
- Member Article::confirmDelete ( $reason)
- FIXME: Move to another file?
- Member ImagePage::makeMetadataTable ( $metadata)
- FIXME: Bad interface, see note on MediaHandler::formatMetadata().