/** * Adds a site link to the list of site links. * If there already is a site link with the site id of the provided site link, * then that one will be overridden by the provided one. * * @deprecated since 0.8, use getSiteLinkList()->addSiteLink() instead. * @since 0.6 * * @param SiteLink $siteLink */ public function addSiteLink(SiteLink $siteLink) { if ($this->siteLinks->hasLinkWithSiteId($siteLink->getSiteId())) { $this->siteLinks->removeLinkWithSiteId($siteLink->getSiteId()); } $this->siteLinks->addSiteLink($siteLink); }
private function replaceBadgeItemsInSiteLink(SiteLink $siteLink) { $newBadges = array(); foreach ($siteLink->getBadges() as $badge) { $localId = $this->entityMappingStore->getLocalId($badge->getSerialization()); $newBadges[] = new ItemId($localId); } return new SiteLink($siteLink->getSiteId(), $siteLink->getPageName(), $newBadges); }
private function makeSiteLinkKey(SiteLink $siteLink) { return $siteLink->getSiteId() . ':' . $siteLink->getPageName(); }
/** * @param EntityId|SiteLink $target * * @throws UnexpectedValueException * @return array * * @todo Fix duplicated code */ private function getTargetParamsFromTarget($target) { if ($target instanceof EntityId) { return array('id' => $target->getSerialization()); } elseif ($target instanceof SiteLink) { return array('site' => $target->getSiteId(), 'title' => $target->getPageName()); } else { throw new UnexpectedValueException('$target needs to be an EntityId or SiteLink'); } }
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}"); } }
/** * @param SiteLink $link * * @return string The formatted link (as a wikitext link). */ private function formatSiteLink(SiteLink $link) { $siteId = $link->getSiteId(); $page = $link->getPageName(); $site = $this->sites->getSite($link->getSiteId()); $url = $site->getPageUrl($link->getPageName()); return "[{$url} {$siteId}:{$page}]"; }
/** * @param string $prefixedEntityId * * @since 0.5 * @return string|null Null if no site link found. */ public function getSiteLinkPageName($prefixedEntityId) { try { $itemId = new ItemId($prefixedEntityId); } catch (InvalidArgumentException $e) { return null; } // @fixme the SiteLinks do not contain badges! but all we want here is page name. $siteLinkRows = $this->siteLinkLookup->getLinks(array($itemId->getNumericId()), array($this->siteId)); foreach ($siteLinkRows as $siteLinkRow) { $siteLink = new SiteLink($siteLinkRow[0], $siteLinkRow[1]); $this->usageAccumulator->addTitleUsage($itemId); return $siteLink->getPageName(); } return null; }
/** * @since 2.5 * * @param SiteLink $link */ public function setSiteLink(SiteLink $link) { $this->siteLinks[$link->getSiteId()] = $link; }
/** * @since 0.2 * @param SiteLink $toSiteLink * @param SiteLink $fromSiteLink * @param EditInfo|null $editInfo * * @returns bool */ public function link(SiteLink $toSiteLink, SiteLink $fromSiteLink, EditInfo $editInfo = null) { $params = array('tosite' => $toSiteLink->getSiteId(), 'totitle' => $toSiteLink->getPageName(), 'fromsite' => $fromSiteLink->getSiteId(), 'fromtitle' => $fromSiteLink->getPageName()); $this->api->postRequest('wblinktitles', $params, $editInfo); return true; }
/** * @see SiteLinkLookup::getItemIdForSiteLink * * @param SiteLink $siteLink * * @return ItemId|null */ public function getItemIdForSiteLink(SiteLink $siteLink) { $siteId = $siteLink->getSiteId(); $pageName = $siteLink->getPageName(); return $this->getItemIdForLink($siteId, $pageName); }
/** * @param SiteLink $siteLink * @param Site $site * * @return string[] Array of attributes describing a sidebar link. */ private function buildSidebarLink(SiteLink $siteLink, Site $site) { // Messages in the WikimediaMessages extension (as of 2015-03-31): // wikibase-otherprojects-commons // wikibase-otherprojects-testwikidata // wikibase-otherprojects-wikidata // wikibase-otherprojects-wikinews // wikibase-otherprojects-wikipedia // wikibase-otherprojects-wikiquote // wikibase-otherprojects-wikisource // wikibase-otherprojects-wikivoyage $attributes = array('msg' => 'wikibase-otherprojects-' . $site->getGroup(), 'class' => 'wb-otherproject-link wb-otherproject-' . $site->getGroup(), 'href' => $site->getPageUrl($siteLink->getPageName())); $siteLanguageCode = $site->getLanguageCode(); if ($siteLanguageCode !== null) { $attributes['hreflang'] = $siteLanguageCode; } return $attributes; }
private function getSerialized(SiteLink $siteLink) { return array('site' => $siteLink->getSiteId(), 'title' => $siteLink->getPageName(), 'badges' => $this->serializeBadges($siteLink->getBadges())); }
public function testCanConstructWithItemIdSet() { $badgesArray = array(new ItemId('Q36'), new ItemId('Q149')); $badges = new ItemIdSet($badgesArray); $siteLink = new SiteLink('foo', 'bar', $badges); $this->assertEquals($badgesArray, $siteLink->getBadges()); }
/** * @param SiteLink $siteLink */ public function processSiteLink(SiteLink $siteLink) { foreach ($siteLink->getBadges() as $badge) { $this->entityIds[$badge->getSerialization()] = $badge; } }
private function getHtmlForBadges(SiteLink $siteLink) { $html = ''; foreach ($siteLink->getBadges() as $badge) { $serialization = $badge->getSerialization(); $classes = Sanitizer::escapeClass($serialization); if (!empty($this->badgeItems[$serialization])) { $classes .= ' ' . Sanitizer::escapeClass($this->badgeItems[$serialization]); } $html .= $this->templateFactory->render('wb-badge', $classes, $this->entityIdFormatter->formatEntityId($badge), $badge); } return $this->templateFactory->render('wikibase-badgeselector', $html); }
/** * @see SiteLinkLookup::getItemIdForSiteLink * * @param SiteLink $siteLink * * @return ItemId|null */ public function getItemIdForSiteLink(SiteLink $siteLink) { return $this->getItemIdForLink($siteLink->getSiteId(), $siteLink->getPageName()); }
/** * @since 0.1 * @param SiteLink $siteLink * @returns Revision */ public function getFromSiteLink(SiteLink $siteLink) { $result = $this->api->getRequest(new SimpleRequest('wbgetentities', array('sites' => $siteLink->getSiteId(), 'titles' => $siteLink->getPageName()))); return $this->newRevisionFromResult(array_shift($result['entities'])); }