The Title object that is loaded from master gets reloaded from the replicas
and mutates the original object. When pages are moved, the Title no longer
exists on master, but still exists on the replicas. Cloning the object allows
the item to be loaded from the replicas, without mutating the original Title.
Bug: T210739
Change-Id: I9ad973e9a609124749909605f37bc1e1fc549585
// will get the action where the restriction is the same. This may result
// in actions being blocked that shouldn't be.
if ( Action::exists( $action ) ) {
// will get the action where the restriction is the same. This may result
// in actions being blocked that shouldn't be.
if ( Action::exists( $action ) ) {
+ // Clone the title to prevent mutations to this object which is done
+ // by Title::loadFromRow() in WikiPage::loadFromRow().
+ $page = WikiPage::factory( clone $this );
+ // Creating an action will perform several database queries to ensure that
+ // the action has not been overridden by the content type.
// @todo FIXME: Pass the relevant context into this function.
// @todo FIXME: Pass the relevant context into this function.
- $action = Action::factory( $action, WikiPage::factory( $this ), RequestContext::getMain() );
+ $action = Action::factory( $action, $page, RequestContext::getMain() );
} else {
$action = null;
}
} else {
$action = null;
}