/** * Setting the sitepage of the entity. * * @param Item $item * @param string $siteId * @param string $pageName * @param string[] $badgeIds * @param Summary &$summary The summary for this edit will be saved here. * * @return Status */ private function setSiteLink(Item $item, $siteId, $pageName, $badgeIds, &$summary) { $status = Status::newGood(); $site = $this->siteStore->getSite($siteId); if ($site === null) { $status->fatal('wikibase-setsitelink-invalid-site', $siteId); return $status; } $summary = new Summary('wbsetsitelink'); // when $pageName is an empty string, we want to remove the site link if ($pageName === '') { if (!$item->hasLinkToSite($siteId)) { $status->fatal('wikibase-setsitelink-remove-failed'); return $status; } } else { $pageName = $site->normalizePageName($pageName); if ($pageName === false) { $status->fatal('wikibase-error-ui-no-external-page'); return $status; } } $badges = $this->parseBadges($badgeIds, $status); if (!$status->isGood()) { return $status; } $changeOp = $this->siteLinkChangeOpFactory->newSetSiteLinkOp($siteId, $pageName, $badges); $this->applyChangeOp($changeOp, $item, $summary); return $status; }