MediaWiki Wikibase extension
Todo List
Class Wikibase\Client\Api\ApiClientInfo
may want to include namespaces and other settings here too.
Member Wikibase\Client\Changes\ChangeHandler::handleChange (EntityChange $change, array $rootJobParams=[])
process multiple changes at once!
Member Wikibase\Client\DataAccess\Scribunto\WikibaseLuaEntityBindings::getGlobalSiteId ()
Make this part of in the Scribunto extension.
Member Wikibase\Client\DataAccess\Scribunto\WikibaseLuaEntityBindings::getLanguageCode ()
Once T114640 has been implemented, this should probably be generally exposed in Scribunto as parser target language.
Class Wikibase\Client\Hooks\LangLinkHandler
split this up and find a better home for stuff that adds parser output properties and extension data.
Class Wikibase\Client\RecentChanges\RevisionData
Merge this into ExternalChange
Member Wikibase\Client\Serializer\ClientEntitySerializer::addEntitySerializationFallbackInfo (array $serialization)
FIXME duplicated code in Repo ResultBuilder
Member Wikibase\Client\Serializer\ClientEntitySerializer::filterEntitySerializationUsingLangCodes (array $serialization)
FIXME duplicated / similar code in Repo ResultBuilder
Member Wikibase\Client\Serializer\ClientEntitySerializer::getTermsSerializationWithFallbackInfo (array $serialization)
FIXME duplicated / similar code in Repo ResultBuilder
Member Wikibase\Client\Serializer\ClientSerializer::injectSerializationWithDataTypes (array $serialization, $pathPrefix)
FIXME duplicated / similar code in Repo ResultBuilder
Class Wikibase\DataAccess\AliasTermBuffer
This or something similar should perhaps move to data-model-services
Class Wikibase\DataAccess\PrefetchingTermLookup
PrefetchingTermLookup probably wants an implementation that allows composing a service from multiple different parts. This would for example allow MediaInfo to use a default null AliasTermBuffer (as aliases do not exist in that context), while using a LabelLookup etc that looks up from the correct place.
Class Wikibase\Lib\Formatters\CommonsLinkFormatter
Use MediaWiki renderer
Class Wikibase\Lib\Formatters\CommonsThumbnailFormatter
Most feature requests require this to be a SnakFormatter instead of a ValueFormatter
Class Wikibase\Lib\Formatters\DispatchingValueFormatter
Plain format() shouldn't be supported, formatValue() should require the dataType ID.
Class Wikibase\Lib\Formatters\MwTimeIsoFormatter
move me to DataValues-time
Member Wikibase\Lib\Formatters\OutputFormatValueFormatterFactory::applyLanguageDefaults (FormatterOptions $options)

: Sort out how the desired language is specified. We have two language options, each accepting different ways of specifying the language. That's not good.

this shouldn't be public at all. Perhaps factor it out into a helper class.

Member Wikibase\Lib\Formatters\QuantityDetailsFormatter::format ( $value)

Display URIs to entities in the local repository as clickable labels.

Display URIs that start with http:// or https:// as clickable links.

Mark "unitless" units somehow, e.g. via CSS or with an appended message.

Member Wikibase\Lib\Formatters\TypedValueFormatter::formatValue (DataValue $value, $dataTypeId=null)
make $dataTypeId mandatory.
Member Wikibase\Lib\Store\EntityIdLookup::getEntityIdForTitle (Title $title)
Switch this to using TitleValue once we can easily get the content model and handler based on a TitleValue.
Member Wikibase\Lib\Store\EntityStore::isWatching (User $user, EntityId $id)
move this to a separate service
Member Wikibase\Lib\Store\EntityStore::updateWatchlist (User $user, EntityId $id, $watch)
move this to a separate service
Member Wikibase\Lib\Store\EntityTitleLookup::getTitleForId (EntityId $id)
change this to return a TitleValue
Class Wikibase\Lib\Store\HashSiteLinkStore
Should be moved to the tests folder and namespace.
Member Wikibase\Lib\Store\Sql\SiteLinkTable::getItemIdForLink (string $globalSiteId, string $pageTitle)
may want to deprecate this or change it to always return entity id object only
Class Wikibase\Lib\Store\Sql\Terms\CleanTermsIfUnusedJob
Execute the cleanup of each table in its own transaction to further reduce lock contention
Class Wikibase\Lib\Store\Sql\WikiPageEntityMetaDataAccessor
This whole interface may no longer be needed with the introduction of RevisionRecord which can represent a revision on any wiki. MetaData accessing can probably be killed and instead RevisionRecord just be returned.
Member Wikibase\Lib\StringNormalizer::removeBadCharFirst ( $string)
this was stolen from the Language class. Make that code reusable.
Member Wikibase\Lib\StringNormalizer::removeBadCharLast ( $string)
this was stolen from the Language class. Make that code reusable.
Class Wikibase\Lib\WikibaseSettings
Move this to a separate component.
Member Wikibase\Repo\Api\ResultBuilder::addSiteLinkList (SiteLinkList $siteLinkList, $path, $addUrl=false)
use a SiteLinkListSerializer when created in DataModelSerialization here
Member Wikibase\Repo\Api\SetClaim::getSummary (array $params, Statement $statement, StatementList $statementList)
this summary builder is ugly and summary stuff needs to be refactored
Member Wikibase\Repo\ChangeOp\ChangeOpsMerge::__construct (Item $fromItem, Item $toItem, array $ignoreConflicts, EntityConstraintProvider $constraintProvider, ChangeOpFactoryProvider $changeOpFactoryProvider, SiteLookup $siteLookup, StatementsMerger $statementsMerger)
Injecting ChangeOpFactoryProvider is an Abomination Unto Nuggan, we'll need a MergeChangeOpsSequenceBuilder or some such. This will allow us to merge different kinds of entities nicely, too.
Member Wikibase\Repo\Content\EntityHandler::__construct ( $modelId, $unused, EntityContentDataCodec $contentCodec, EntityConstraintProvider $constraintProvider, ValidatorErrorLocalizer $errorLocalizer, EntityIdParser $entityIdParser, FieldDefinitions $fieldDefinitions, $legacyExportFormatDetector=null)
Get rid of me
Member Wikibase\Repo\EditEntity\EditEntity::attemptSave (EntityDocument $newEntity, string $summary, $flags, $token, $watch=null, array $tags=[])

$flags here should ideally not refer to EDIT_ constants from mediawiki core.

This shouldn't throw MWExceptions

Member Wikibase\Repo\EditEntity\MediawikiEditEntity::updateWatchlist ( $watch)
move to separate service
Class Wikibase\Repo\GenericEventDispatcher
should go into MediaWiki core.
Member Wikibase\Repo\Hooks\ShowSearchHitHandler::onShowSearchHitTitle (&$title, &$titleSnippet, $result, $terms, $specialSearch, &$query, &$attributes)
Add highlighting when Q##-id matches and not label text.
Member Wikibase\Repo\LinkedData\EntityDataRequestHandler::MINIMUM_MAX_AGE
Hard maximum could be configurable somehow.
Member Wikibase\Repo\Merge\MergeFactory::newMergeOps (Item $fromItem, Item $toItem, array $ignoreConflicts=[])
Injecting ChangeOpFactoryProvider is an Abomination Unto Nuggan, we'll need a ItemMergeChangeOpsSequenceBuilder or some such.
Class Wikibase\Repo\ParserOutput\EntityParserOutputDataUpdaterCollection
have ItemParserOutputDataUpdater, etc.
Class Wikibase\Repo\Parsers\MwTimeIsoParser
move me to DataValues-time
Member Wikibase\Repo\Rdf\RdfBuilder::addEntityMetaData (EntityId $entityId)
extract into MetaDataRdfBuilder
Member Wikibase\Repo\Rdf\RdfBuilder::addEntityRevisionInfo (EntityId $entityId, int $revision, string $timestamp)
extract into MetaDataRdfBuilder
Member Wikibase\Repo\Rdf\TruthyStatementRdfBuilder::addMainSnak (EntityId $entityId, Statement $statement)
share more of this code with FullStatementRdfBuilder
Member Wikibase\Repo\RepoHooks::onSkinTemplateNavigationUniversal (SkinTemplate $skinTemplate, array &$links)
T282549 Consider moving some of this logic into a place where it can be more adequately tested
Class Wikibase\Repo\StatementRankSerializer
this could be moved to DataModelSerialization (in some form)
Member Wikibase\Repo\Store\Sql\WikiPageEntityStore::isWatching (User $user, EntityId $id)
move this to a separate service
Member Wikibase\Repo\Store\Sql\WikiPageEntityStore::saveEntityContent (EntityContent $entityContent, User $user, $summary='', $flags=0, $baseRevId=false, array $tags=[])

Might be able to further optimize handling of prepared edit in WikiPage.

now we use PageUpdater do we still need the 2 clear calls below?

Class Wikibase\Repo\Store\Store
provide getXXX() methods for getting local pseudo-singletons (shared service objects).
Member Wikibase\Repo\Validators\UrlSchemeValidators::getValidator ( $scheme)

'bitcoin', 'geo', 'magnet', 'news', 'sip', 'sips', 'sms', 'tel', 'urn', 'xmpp'.

protocol relative '//'.