Jump to content

User:Addshore/Diagrams/Sequence/Wikidata existing item edit via wbeditentity

From Wikitech
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Compatible with:

title Wikidata.org existing item edit via wbeditentity

participant API Client
participant MediaWiki
participant Wikibase [wbeditentity module]
participant Wikibase [EntitySavingHelper]
participant Wikibase [entity storage]
participant EditFilters [AbuseFilter]
participant Wikibase [EventDispatcher]

API Client->MediaWiki:Request with\nnew entity
activate MediaWiki
note over MediaWiki:Action API
MediaWiki->Wikibase [wbeditentity module]:Request with\nnew entity
activate Wikibase [wbeditentity module]
Wikibase [wbeditentity module]->Wikibase [entity storage]:Does this entity exist?
Wikibase [entity storage]->MediaWiki:Get details of this page? (ish)
note over Wikibase [entity storage]:Complexity hidden here
MediaWiki-->Wikibase [entity storage]:Page details
Wikibase [entity storage]-->Wikibase [wbeditentity module]:Entity if it exists\nRevision ID if it exists
Wikibase [wbeditentity module]->MediaWiki:Does the user have\nthe right permissions?
note over MediaWiki:Various things checked:\n - Can the user create this?\n - Can the user edit this?\n - Is the user blocked?
MediaWiki-->Wikibase [wbeditentity module]:Yes/No?
note over Wikibase [wbeditentity module]:Conditional early end
note over Wikibase [wbeditentity module]:- API module makes changes\nto the Entity loaded in memory\n- Summary generated based\non changes
Wikibase [wbeditentity module]->Wikibase [EntitySavingHelper]:EntitySavingHelper::attemptSaveEntity
note over Wikibase [EntitySavingHelper]:EntitySavingHelper is an API helper\n\n- Formating of summary\n- Setting of bot edit flag\n- Using baserevid from API\n...
Wikibase [EntitySavingHelper]->Wikibase [entity storage]:EditEntityHandler::attemptSave
note over Wikibase [entity storage]:- Check readonly DB\n- Check readonly entity type
Wikibase [entity storage]->MediaWiki:Check:\n - Edit permissions\n - Rate limits
MediaWiki-->Wikibase [entity storage]:Edit can proceed?
Wikibase [entity storage]->MediaWiki:Get latest page rev
MediaWiki-->Wikibase [entity storage]:Latest page rev
note over Wikibase [entity storage]:Edit conflict resolution
Wikibase [entity storage]->EditFilters [AbuseFilter]:Edit filters (AF)
EditFilters [AbuseFilter]-->Wikibase [entity storage]:Filters passed?
Wikibase [entity storage]->MediaWiki:Update watchlist if needed?
MediaWiki-->Wikibase [entity storage]:
note over Wikibase [entity storage]:Go from Entity to EntityContent
Wikibase [entity storage]->MediaWiki:Get page for EntityContent
MediaWiki-->Wikibase [entity storage]:Page
note over Wikibase [entity storage]:Edit conflict check
Wikibase [entity storage]->MediaWiki:Set page content\nSet patrol Status\nPersist Revision
MediaWiki-->Wikibase [entity storage]:New Revision
Wikibase [entity storage]->Wikibase [EventDispatcher]:entityUpdated (with revision)
Wikibase [EventDispatcher]-->Wikibase [entity storage]:
Wikibase [entity storage]-->Wikibase [wbeditentity module]:Save attempt success
Wikibase [wbeditentity module]-->MediaWiki:Request done\nresponse
deactivate Wikibase [wbeditentity module]
MediaWiki->API Client:Request done\nresponse
deactivate MediaWiki