private function addIdLinkForLanguage($languageCode) { $links = $this->item->getSiteLinkList(); if ($links->hasLinkWithSiteId($languageCode . 'wiki')) { $this->simpleItem->ids[$languageCode . '_wikipedia'] = $links->getBySiteId($languageCode . 'wiki')->getPageName(); } }
/** * @param ItemId[] $links * * @return SiteLinkLookup */ private function getSiteLinkLookup(array $links) { $siteLinkLookup = new HashSiteLinkStore(); foreach ($links as $pageId => $itemId) { $pageName = self::PAGE_NAME_PREFIX . $pageId; $item = new Item($itemId); $item->getSiteLinkList()->addNewSiteLink('testwiki', $pageName); $item->getSiteLinkList()->addNewSiteLink('badwiki', $pageName); $item->getSiteLinkList()->addNewSiteLink('sadwiki', 'Other stuff'); $siteLinkLookup->saveLinksOfItem($item); } return $siteLinkLookup; }
private function addWikipediaHtmlUrl() { $wikiId = $this->getWikiId($this->languageCode); if ($this->item->getSiteLinkList()->hasLinkWithSiteId($wikiId)) { $this->simpleItem->wikipediaHtmlUrl = $this->urlBuilder->getSiteLinkBasedRerirectUrl($wikiId, $this->item->getId()); } }
/** * @return EntityRevisionLookup */ private function getEntityRevisionLookup() { $repo = new MockRepository(); $offsets = array('Q1' => 1100, 'Q2' => 1200); foreach ($offsets as $qid => $offset) { // entity 1, revision 1111 $entity1 = new Item(new ItemId($qid)); $entity1->setLabel('en', 'ORIGINAL'); $entity1->getSiteLinkList()->addNewSiteLink('enwiki', 'Original'); $repo->putEntity($entity1, $offset + 11); // entity 1, revision 1112 $entity1->setLabel('de', 'HINZUGEFÜGT'); $repo->putEntity($entity1, $offset + 12); // entity 1, revision 1113 $entity1->setLabel('nl', 'Addiert'); $repo->putEntity($entity1, $offset + 13); // entity 1, revision 1114 $entity1->getSiteLinkList()->addNewSiteLink('dewiki', 'Testen'); $repo->putEntity($entity1, $offset + 14); // entity 1, revision 1117 $entity1->getSiteLinkList()->setSiteLink(new SiteLink('enwiki', 'Spam', array(new ItemId('Q12345')))); $repo->putEntity($entity1, $offset + 17); // entity 1, revision 1118 $entity1->getSiteLinkList()->setSiteLink(new SiteLink('enwiki', 'Spam', array(new ItemId('Q54321')))); $repo->putEntity($entity1, $offset + 18); } return $repo; }
/** * Get a SiteLink for a specific item and site * * @param Item $item * @param string $globalId * * @return SiteLink|null */ private function getSiteLink($item, $globalId) { try { return $item->getSiteLinkList()->getBySiteId($globalId); } catch (OutOfBoundsException $e) { return null; } }
private function patchItem(Item $item, EntityDiff $patch) { $this->fingerprintPatcher->patchFingerprint($item->getFingerprint(), $patch); if ($patch instanceof ItemDiff) { $item->setSiteLinkList($this->siteLinkListPatcher->getPatchedSiteLinkList($item->getSiteLinkList(), $patch->getSiteLinkDiff())); } $item->setStatements($this->statementListPatcher->getPatchedStatementList($item->getStatements(), $patch->getClaimsDiff())); }
public function testGivenUntrimmedPageName_generateDoesNotTrim() { $item = new Item(); $item->getFingerprint()->setLabel('en', ' untrimmed label '); $item->getSiteLinkList()->addNewSiteLink('enwiki', ' untrimmed pageName '); $generator = new ItemSearchTextGenerator(); $text = $generator->generate($item); $this->assertSame(" untrimmed label \n untrimmed pageName ", $text); }
public function testGivenEmptyDiff_itemIsReturnedAsIs() { $item = new Item(); $item->getFingerprint()->setLabel('en', 'foo'); $item->getSiteLinkList()->addNewSiteLink('enwiki', 'bar'); $patchedItem = $this->getPatchedItem($item, new ItemDiff()); $this->assertInstanceOf('Wikibase\\DataModel\\Entity\\Item', $patchedItem); $this->assertTrue($item->equals($patchedItem)); }
/** * @param Item $item * * @return string */ public function generate(Item $item) { $fingerprintGenerator = new FingerprintSearchTextGenerator(); $text = $fingerprintGenerator->generate($item->getFingerprint()); foreach ($item->getSiteLinkList()->toArray() as $siteLink) { $text .= "\n" . $siteLink->getPageName(); } return trim($text, "\n"); }
/** * @depends testCreateItem * @depends testSetSitelink */ public function testLinkSitelinks() { $factory = $factory = TestEnvironment::newDefault()->getFactory(); $enwikiLondon = new SiteLink('enwiki', 'London'); $dewikiBerlin = new Sitelink('dewiki', 'Berlin'); $r = $factory->newSiteLinkLinker()->link($enwikiLondon, $dewikiBerlin); $this->assertTrue($r); self::$localItem->getSiteLinkList()->addSiteLink($dewikiBerlin); }
public function testConstructionDiffContainsAddOperations() { $item = new Item(); $item->getFingerprint()->setLabel('en', 'foo'); $item->getSiteLinkList()->addNewSiteLink('bar', 'baz'); $differ = new ItemDiffer(); $diff = $differ->getConstructionDiff($item); $this->assertEquals(new Diff(array('en' => new DiffOpAdd('foo'))), $diff->getLabelsDiff()); $this->assertEquals(new Diff(array('bar' => new Diff(array('name' => new DiffOpAdd('baz'))))), $diff->getSiteLinkDiff()); }
private function generateSitelinksChangeOps() { foreach ($this->fromItem->getSiteLinkList()->toArray() as $fromSiteLink) { $siteId = $fromSiteLink->getSiteId(); if (!$this->toItem->getSiteLinkList()->hasLinkWithSiteId($siteId)) { $this->generateSitelinksChangeOpsWithNoConflict($fromSiteLink); } else { $this->generateSitelinksChangeOpsWithConflict($fromSiteLink); } } }
private function getLinksInDiffFormat(Item $item) { $links = array(); /** * @var SiteLink $siteLink */ foreach ($item->getSiteLinkList() as $siteLink) { $links[$siteLink->getSiteId()] = array('name' => $siteLink->getPageName(), 'badges' => array_map(function (ItemId $id) { return $id->getSerialization(); }, $siteLink->getBadges())); } return $links; }
/** * @param EntityId $id * * @throws InvalidArgumentException * @return Item|Property */ protected function makeEntity(EntityId $id) { if ($id instanceof ItemId) { $entity = new Item($id); $entity->getSiteLinkList()->addNewSiteLink('test', 'Foo'); } elseif ($id instanceof PropertyId) { $entity = new Property($id, null, 'wibblywobbly'); } else { throw new InvalidArgumentException('Unsupported entity type ' . $id->getEntityType()); } $entity->setLabel('en', 'label:' . $id->getSerialization()); return $entity; }
public function testValidateEntity_conflict() { $badEntity = new Item(new ItemId('Q7')); $badEntity->getSiteLinkList()->addNewSiteLink('testwiki', 'DUPE'); $siteLinkConflictLookup = $this->getMockSiteLinkConflictLookup(); $validator = new SiteLinkUniquenessValidator($siteLinkConflictLookup); $result = $validator->validateEntity($badEntity); $this->assertFalse($result->isValid(), 'isValid'); $errors = $result->getErrors(); $this->assertEquals('sitelink-conflict', $errors[0]->getCode()); $this->assertInstanceOf('Wikibase\\Repo\\Validators\\UniquenessViolation', $errors[0]); //NOTE: ChangeOpTestMockProvider::getSiteLinkConflictsForItem() uses 'Q666' as // the conflicting item for all site links with the name 'DUPE'. $this->assertEquals('Q666', $errors[0]->getConflictingEntity()); }
private function createItems() { $store = WikibaseRepo::getDefaultInstance()->getEntityStore(); $badge = new Item(); $badge->setLabel('de', 'Guter Artikel'); $store->saveEntity($badge, "testing", $GLOBALS['wgUser'], EDIT_NEW); $item = new Item(); $item->getSiteLinkList()->addNewSiteLink('dewiki', 'Wikidata', array($badge->getId())); $store->saveEntity($item, "testing", $GLOBALS['wgUser'], EDIT_NEW); $redirect = new EntityRedirect(new ItemId('Q12345678'), $item->getId()); $store->saveRedirect($redirect, "testing", $GLOBALS['wgUser'], EDIT_NEW); self::$badgeId = $badge->getId()->getSerialization(); self::$itemId = $item->getId()->getSerialization(); self::$redirectId = $redirect->getEntityId()->getSerialization(); }
/** * @dataProvider runProvider * * @param bool $expected * @param bool $titleExists * @param string $oldTitle */ public function testRun($expected, $titleExists, $oldTitle) { $item = new Item(); $item->getSiteLinkList()->addNewSiteLink('enwiki', 'Delete me', array(new ItemId('Q42'))); $mockRepository = new MockRepository(); $user = User::newFromName('UpdateRepo'); // Needed as UpdateRepoOnDeleteJob instantiates a User object $user->addToDatabase(); $mockRepository->saveEntity($item, 'UpdateRepoOnDeleteJobTest', $user, EDIT_NEW); $params = array('siteId' => 'enwiki', 'entityId' => $item->getId()->getSerialization(), 'title' => $oldTitle, 'user' => $user->getName()); $job = new UpdateRepoOnDeleteJob(Title::newMainPage(), $params); $job->initServices($mockRepository, $mockRepository, $this->getSummaryFormatter(), $this->getSiteStore($titleExists), new EditEntityFactory($this->getEntityTitleLookup($item->getId()), $mockRepository, $mockRepository, $this->getEntityPermissionChecker(), $this->getMockEditFitlerHookRunner())); $job->run(); $item = $mockRepository->getEntity($item->getId()); $this->assertSame(!$expected, $item->getSiteLinkList()->hasLinkWithSiteId('enwiki'), 'Sitelink has been removed.'); }
public function provideApplyData() { $originalTests = $this->generateApplyData(Item::ENTITY_TYPE); $tests = array(); /** * @var Item $a * @var Item $b */ // add link ------------------------------ $a = new Item(); $a->getSiteLinkList()->addNewSiteLink('enwiki', 'Test', array(new ItemId('Q42'), new ItemId('Q3'))); $b = $a->copy(); $b->getSiteLinkList()->addNewSiteLink('dewiki', 'Test', array(new ItemId('Q42'))); $tests[] = array($a, $b); // add badges $a = new Item(); $a->getSiteLinkList()->addNewSiteLink('enwiki', 'Test', array(new ItemId('Q42'))); $b = new Item(); $b->getSiteLinkList()->addNewSiteLink('enwiki', 'Test', array(new ItemId('Q42'), new ItemId('Q3'))); $tests[] = array($a, $b); // remove badges $a = new Item(); $a->getSiteLinkList()->addNewSiteLink('enwiki', 'Test', array(new ItemId('Q42'), new ItemId('Q3'))); $b = new Item(); $b->getSiteLinkList()->addNewSiteLink('enwiki', 'Test', array(new ItemId('Q42'))); // modify badges $a = new Item(); $a->getSiteLinkList()->addNewSiteLink('enwiki', 'Test', array(new ItemId('Q41'), new ItemId('Q3'))); $b = new Item(); $b->getSiteLinkList()->addNewSiteLink('enwiki', 'Test', array(new ItemId('Q42'), new ItemId('Q3'))); $tests[] = array($a, $b); // remove link $a = new Item(); $a->getSiteLinkList()->addNewSiteLink('enwiki', 'Test', array(new ItemId('Q42'))); $a->getSiteLinkList()->addNewSiteLink('dewiki', 'Test', array(new ItemId('Q3'))); $b = $a->copy(); $b->getSiteLinkList()->removeLinkWithSiteId('enwiki'); $tests[] = array($a, $b); // change link $a = new Item(); $a->getSiteLinkList()->addNewSiteLink('enwiki', 'Test', array(new ItemId('Q42'), new ItemId('Q3'))); $b = new Item(); $b->getSiteLinkList()->addNewSiteLink('enwiki', 'Test!!!', array(new ItemId('Q42'), new ItemId('Q3'))); $tests[] = array($a, $b); return array_merge($originalTests, $tests); }
public function testAttemptSave() { $mockApiBase = $this->getMockApiBase(); $mockApiBase->expects($this->once())->method('isWriteMode')->will($this->returnValue(true)); $mockApiBase->expects($this->atLeastOnce())->method('getContext')->will($this->returnValue($this->newContext())); $mockApiBase->expects($this->atLeastOnce())->method('extractRequestParams')->will($this->returnValue(array())); $helper = new EntitySavingHelper($mockApiBase, $this->getMockErrorReporter(), $this->getMockSummaryFormatter(), $this->getMockEditEntityFactory(1)); $entity = new Item(); $entity->setId(new ItemId('Q444')); $entity->getFingerprint()->setLabel('en', 'Foo'); $entity->getSiteLinkList()->addNewSiteLink('enwiki', 'APage'); $entity->getStatements()->addNewStatement(new PropertyNoValueSnak(new PropertyId('P8'))); $summary = 'A String Summary'; $flags = 0; $status = $helper->attemptSaveEntity($entity, $summary, $flags); $this->assertTrue($status->isGood()); }
/** * @dataProvider runProvider * @param string $expected * @param string $normalizedPageName * @param string $oldTitle */ public function testRun($expected, $normalizedPageName, $oldTitle) { $user = User::newFromName('UpdateRepo'); // Needed as UpdateRepoOnMoveJob instantiates a User object $user->addToDatabase(); $item = new Item(); $item->getSiteLinkList()->addNewSiteLink('enwiki', 'Old page name', array(new ItemId('Q42'))); $mockRepository = new MockRepository(); $mockRepository->saveEntity($item, 'UpdateRepoOnDeleteJobTest', $user, EDIT_NEW); $params = array('siteId' => 'enwiki', 'entityId' => $item->getId()->getSerialization(), 'oldTitle' => $oldTitle, 'newTitle' => 'New page name', 'user' => $user->getName()); $job = new UpdateRepoOnMoveJob(Title::newMainPage(), $params); $job->initServices($mockRepository, $mockRepository, $this->getSummaryFormatter(), $this->getSiteStore($normalizedPageName), new EditEntityFactory($this->getEntityTitleLookup($item->getId()), $mockRepository, $mockRepository, $this->getEntityPermissionChecker(), $this->getMockEditFitlerHookRunner())); $job->run(); /** @var Item $item */ $item = $mockRepository->getEntity($item->getId()); $this->assertSame($expected, $item->getSiteLinkList()->getBySiteId('enwiki')->getPageName(), 'Title linked on enwiki after the job ran'); $this->assertEquals($item->getSiteLinkList()->getBySiteId('enwiki')->getBadges(), array(new ItemId('Q42'))); }
private function getItems() { $items = array(); $item = new Item(new ItemId('Q1')); $item->setLabel('en', 'Foo'); $links = $item->getSiteLinkList(); $links->addNewSiteLink('dewiki', 'Foo de'); $links->addNewSiteLink('enwiki', 'Foo en', array(new ItemId('Q17'))); $links->addNewSiteLink('srwiki', 'Foo sr'); $links->addNewSiteLink('dewiktionary', 'Foo de word'); $links->addNewSiteLink('enwiktionary', 'Foo en word'); $items[] = $item; $item = new Item(new ItemId('Q2')); $item->setLabel('en', 'Talk:Foo'); $links = $item->getSiteLinkList(); $links->addNewSiteLink('dewiki', 'Talk:Foo de'); $links->addNewSiteLink('enwiki', 'Talk:Foo en'); $links->addNewSiteLink('srwiki', 'Talk:Foo sr'); $items[] = $item; return $items; }
public function execute() { global $wgUser; $user = $wgUser; $store = WikibaseRepo::getDefaultInstance()->getEntityStore(); if (!defined('WB_VERSION')) { $this->output("You need to have Wikibase enabled in order to use this maintenance script!\n\n"); exit; } $report = function ($message) { echo $message . "\n"; }; $items = array('Q1' => 'Universe', 'Q2' => 'Earth', 'Q3' => 'Life', 'Q4' => 'Death', 'Q5' => 'Human', 'Q8' => 'Happiness', 'Q13' => 'Triskaidekaphobia', 'Q23' => 'George Washington', 'Q24' => 'Jack Bauer', 'Q42' => 'Douglas Adams', 'Q80' => 'Tim Berners-Lee', 'Q666' => 'Number of the Beast', 'Q1337' => 'Leet', 'Q1868' => 'Paul Otlet', 'Q1971' => 'Imagine (song)', 'Q2001' => 'Stanley Kubrick', 'Q2012' => 'Maya calendar', 'Q2013' => 'Wikidata'); $report('Starting import...'); foreach ($items as $id => $name) { $report(" Importing {$name} as item {$id}..."); $item = new Item(new ItemId($id)); $item->getFingerprint()->setLabel('en', $name); $item->getSiteLinkList()->addNewSiteLink('enwiki', $name); $store->saveEntity($item, 'Import', $user, EDIT_NEW); } $report('Import completed.'); }
/** * @see SiteLinkConflictLookup::getConflictsForItem * * @param Item $item * @param DatabaseBase|null $db * * @return array[] */ public function getConflictsForItem(Item $item, DatabaseBase $db = null) { $siteLinks = $item->getSiteLinkList(); if ($siteLinks->isEmpty()) { return array(); } if ($db) { $dbr = $db; } else { $dbr = $this->getConnection(DB_SLAVE); } $anyOfTheLinks = ''; /** @var SiteLink $siteLink */ foreach ($siteLinks as $siteLink) { if ($anyOfTheLinks !== '') { $anyOfTheLinks .= "\nOR "; } $anyOfTheLinks .= '('; $anyOfTheLinks .= 'ips_site_id=' . $dbr->addQuotes($siteLink->getSiteId()); $anyOfTheLinks .= ' AND '; $anyOfTheLinks .= 'ips_site_page=' . $dbr->addQuotes($siteLink->getPageName()); $anyOfTheLinks .= ')'; } // TODO: $anyOfTheLinks might get very large and hit some size limit imposed // by the database. We could chop it up of we know that size limit. // For MySQL, it's select @@max_allowed_packet. $conflictingLinks = $dbr->select('wb_items_per_site', array('ips_site_id', 'ips_site_page', 'ips_item_id'), "({$anyOfTheLinks}) AND ips_item_id != " . (int) $item->getId()->getNumericId(), __METHOD__); $conflicts = array(); foreach ($conflictingLinks as $link) { $conflicts[] = array('siteId' => $link->ips_site_id, 'itemId' => (int) $link->ips_item_id, 'sitePage' => $link->ips_site_page); } if (!$db) { $this->releaseConnection($dbr); } return $conflicts; }
/** * Adds the site links of the given item to the RDF graph. * * @param Item $item */ public function addSiteLinks(Item $item) { $entityLName = $this->vocabulary->getEntityLName($item->getId()); /** @var SiteLink $siteLink */ foreach ($item->getSiteLinkList() as $siteLink) { if (!$this->isSiteIncluded($siteLink->getSiteId())) { continue; } // FIXME: we should check the site exists using hasGlobalId here before asuming it does $site = $this->siteLookup->getSite($siteLink->getSiteId()); // XXX: ideally, we'd use https if the target site supports it. $baseUrl = str_replace('$1', rawurlencode($siteLink->getPageName()), $site->getLinkPath()); // $site->getPageUrl( $siteLink->getPageName() ); if (!parse_url($baseUrl, PHP_URL_SCHEME)) { $url = "http:" . $baseUrl; } else { $url = $baseUrl; } $this->writer->about($url)->a(RdfVocabulary::NS_SCHEMA_ORG, 'Article')->say(RdfVocabulary::NS_SCHEMA_ORG, 'about')->is(RdfVocabulary::NS_ENTITY, $entityLName)->say(RdfVocabulary::NS_SCHEMA_ORG, 'inLanguage')->text($this->vocabulary->getCanonicalLanguageCode($site->getLanguageCode())); foreach ($siteLink->getBadges() as $badge) { $this->writer->say(RdfVocabulary::NS_ONTOLOGY, 'badge')->is(RdfVocabulary::NS_ENTITY, $this->vocabulary->getEntityLName($badge)); } } }
/** * @see https://phabricator.wikimedia.org/T68181 */ public function testAddEntityRevisionInIndexedModeWithSiteLinksFilter() { $item = new Item(new ItemId('Q123100')); $item->getSiteLinkList()->addNewSiteLink('enwiki', 'Berlin'); $item->getSiteLinkList()->addNewSiteLink('dewiki', 'Berlin'); $entityRevision = new EntityRevision($item); $props = array('sitelinks'); $siteIds = array('enwiki'); $result = $this->getDefaultResult(); $resultBuilder = $this->getResultBuilder($result, true); $resultBuilder->addEntityRevision(null, $entityRevision, $props, $siteIds); $expected = array('entities' => array('Q123100' => array('id' => 'Q123100', 'type' => 'item', 'sitelinks' => array('enwiki' => array('site' => 'enwiki', 'title' => 'Berlin', 'badges' => array('_element' => 'badge')), '_element' => 'sitelink', '_type' => 'kvp', '_kvpkeyname' => 'site', '_kvpmerge' => true)), '_element' => 'entity', '_type' => 'kvp', '_kvpkeyname' => 'id', '_kvpmerge' => true), '_type' => 'assoc'); $data = $result->getResultData(); $this->assertEquals($expected, $data); }
private function addSiteLinksToSerialization(Item $item, array &$serialization) { $serialization['sitelinks'] = array(); foreach ($item->getSiteLinkList()->toArray() as $siteLink) { $serialization['sitelinks'][$siteLink->getSiteId()] = $this->siteLinkSerializer->serialize($siteLink); } if ($this->useObjectsForMaps) { $serialization['sitelinks'] = (object) $serialization['sitelinks']; } }
/** * @depends testSaveLinksOfItem * @dataProvider itemProvider */ public function testGetItemIdForLink(Item $item) { foreach ($item->getSiteLinkList()->toArray() as $siteLink) { $this->assertEquals($item->getId(), $this->siteLinkTable->getItemIdForLink($siteLink->getSiteId(), $siteLink->getPageName())); } }
public function testFullEntityGetEntityResponse() { $item = new Item(new ItemId('Q123098')); //Basic $item->setLabel('de', 'foo-de'); $item->setLabel('qu', 'foo-qu'); $item->setAliases('en', array('bar', 'baz')); $item->setAliases('de-formal', array('bar', 'baz')); $item->setDescription('en', 'en-desc'); $item->setDescription('pt', 'ptDesc'); $item->getSiteLinkList()->addNewSiteLink('enwiki', 'Berlin', array(new ItemId('Q333'))); $item->getSiteLinkList()->addNewSiteLink('zh_classicalwiki', 'User:Addshore', array()); $snak = new PropertyValueSnak(65, new StringValue('snakStringValue')); $qualifiers = new SnakList(); $qualifiers->addSnak(new PropertyValueSnak(65, new StringValue('string!'))); $qualifiers->addSnak(new PropertySomeValueSnak(65)); $references = new ReferenceList(); $references->addNewReference(array(new PropertySomeValueSnak(65), new PropertySomeValueSnak(68))); $guid = 'imaguid'; $item->getStatements()->addNewStatement($snak, $qualifiers, $references, $guid); $entityLookup = new MockRepository(); $entityLookup->putEntity($item); $entityAccessor = $this->getEntityAccessor($entityLookup, null, 'qug'); $expected = array('id' => 'Q123098', 'type' => 'item', 'labels' => array('de' => array('language' => 'de', 'value' => 'foo-de')), 'descriptions' => array('en' => array('language' => 'en', 'value' => 'en-desc')), 'aliases' => array('en' => array(1 => array('language' => 'en', 'value' => 'bar'), 2 => array('language' => 'en', 'value' => 'baz'))), 'claims' => array('P65' => array(1 => array('id' => 'imaguid', 'type' => 'statement', 'mainsnak' => array('snaktype' => 'value', 'property' => 'P65', 'datatype' => 'structured-cat', 'datavalue' => array('value' => 'snakStringValue', 'type' => 'string')), 'qualifiers' => array('P65' => array(1 => array('hash' => 'e95e866e7fa1c18bd06dae9b712cb99545107eb8', 'snaktype' => 'value', 'property' => 'P65', 'datavalue' => array('value' => 'string!', 'type' => 'string'), 'datatype' => 'structured-cat'), 2 => array('hash' => '210b00274bf03247a89de918f15b12142ebf9e56', 'snaktype' => 'somevalue', 'property' => 'P65', 'datatype' => 'structured-cat'))), 'rank' => 'normal', 'qualifiers-order' => array(1 => 'P65'), 'references' => array(1 => array('hash' => 'bdc5f7185904d6d3219e13b7443571dda8c4bee8', 'snaks' => array('P65' => array(1 => array('snaktype' => 'somevalue', 'property' => 'P65', 'datatype' => 'structured-cat')), 'P68' => array(1 => array('snaktype' => 'somevalue', 'property' => 'P68', 'datatype' => 'structured-cat'))), 'snaks-order' => array(1 => 'P65', 2 => 'P68')))))), 'sitelinks' => array('enwiki' => array('site' => 'enwiki', 'title' => 'Berlin', 'badges' => array(1 => 'Q333')), 'zh_classicalwiki' => array('site' => 'zh_classicalwiki', 'title' => 'User:Addshore', 'badges' => array())), 'schemaVersion' => 2); $this->assertEquals($expected, $entityAccessor->getEntity('Q123098')); }
private function getContent() { $item = new Item(); $item->getFingerprint()->setLabel('en', 'Kitten'); $item->getSiteLinkList()->addNewSiteLink('enwiki', 'Kitten'); $item->getStatements()->addNewStatement(new PropertyNoValueSnak(new PropertyId('P1'))); $entityContentFactory = WikibaseRepo::getDefaultInstance()->getEntityContentFactory(); return $entityContentFactory->newFromEntity($item); }
/** * @param Item $item */ private function processItem(Item $item) { if (empty($this->siteLinkDataUpdaters)) { return; } foreach ($item->getSiteLinkList() as $siteLink) { foreach ($this->siteLinkDataUpdaters as $updater) { $updater->processSiteLink($siteLink); } } }