Esempio n. 1
1
 /**
  * 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();
 }
Esempio n. 4
0
 /**
  * @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');
     }
 }
Esempio n. 5
0
 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;
 }
Esempio n. 8
0
 /**
  * @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;
 }
Esempio n. 12
0
 private function getSerialized(SiteLink $siteLink)
 {
     return array('site' => $siteLink->getSiteId(), 'title' => $siteLink->getPageName(), 'badges' => $this->serializeBadges($siteLink->getBadges()));
 }
Esempio n. 13
0
 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());
 }
Esempio n. 17
0
 /**
  * @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']));
 }