private function generateSitelinksChangeOpsWithConflict(SiteLink $fromSiteLink) { $siteId = $fromSiteLink->getSiteId(); $toSiteLink = $this->toItem->getSiteLink($siteId); $fromPageName = $fromSiteLink->getPageName(); $toPageName = $toSiteLink->getPageName(); if ($fromPageName !== $toPageName) { $site = $this->getSite($siteId); $fromPageName = $site->normalizePageName($fromPageName); $toPageName = $site->normalizePageName($toPageName); } if ($fromPageName === $toPageName) { $this->fromChangeOps->add($this->getSiteLinkChangeOpFactory()->newRemoveSiteLinkOp($siteId)); $this->toChangeOps->add($this->getSiteLinkChangeOpFactory()->newSetSiteLinkOp($siteId, $fromPageName, array_unique(array_merge($fromSiteLink->getBadges(), $toSiteLink->getBadges())))); } elseif (!in_array('sitelink', $this->ignoreConflicts)) { throw new ChangeOpException("Conflicting sitelinks for {$siteId}"); } }