/**
  * 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;
 }