/** * @param array $serialization * * @return ReferenceList */ private function getDeserialized(array $serialization) { $referenceList = new ReferenceList(); foreach ($serialization as $referenceSerialization) { $referenceList->addReference($this->referenceDeserializer->deserialize($referenceSerialization)); } return $referenceList; }
private function copyReferences(ReferenceList $references) { $newReferences = new ReferenceList(); foreach ($references as $reference) { $newReferenceSnaks = array(); foreach ($reference->getSnaks() as $referenceSnak) { $newReferenceSnaks[] = $this->copySnak($referenceSnak); } $newReferences->addReference(new Reference($newReferenceSnaks)); } return $newReferences; }
/** * @since 0.4 * * @param ReferenceList $references * @param Summary|null $summary * * @throws ChangeOpException */ protected function setReference(ReferenceList $references, Summary $summary = null) { if (!$references->hasReferenceHash($this->referenceHash)) { throw new ChangeOpException("Reference with hash {$this->referenceHash} does not exist"); } $currentIndex = $references->indexOf($this->reference); if ($this->index === null && $currentIndex !== false) { // Set index to current index to not have the reference removed and appended but // retain its position within the list of references. $this->index = $currentIndex; } if ($references->hasReference($this->reference) && $this->index === $currentIndex) { throw new ChangeOpException('The statement has already a reference with hash ' . $this->reference->getHash() . ' and index (' . $currentIndex . ') is not changed'); } $references->removeReferenceHash($this->referenceHash); $references->addReference($this->reference, $this->index); $this->updateSummary($summary, 'set'); }
/** * @dataProvider provideTestAddEntityRevision */ public function testAddEntityRevision($addMetaData, array $expected) { $result = $this->getDefaultResult(); $item = new Item(new ItemId('Q123098')); //Basic $item->setLabel('de', 'foo'); $item->setLabel('zh_classical', 'Longer Label'); $item->setAliases('en', array('bar', 'baz')); $item->setAliases('zh', array('????????')); $item->setDescription('pt', 'ptDesc'); $item->setDescription('pl', 'Longer Description For An Item'); $item->getSiteLinkList()->addNewSiteLink('enwiki', 'Berlin', array(new ItemId('Q333'))); $item->getSiteLinkList()->addNewSiteLink('zh_classicalwiki', 'User:Addshore', array()); $snak = new PropertyValueSnak(new PropertyId('P65'), new StringValue('snakStringValue')); $qualifiers = new SnakList(); $qualifiers->addSnak(new PropertyValueSnak(new PropertyId('P65'), new StringValue('string!'))); $qualifiers->addSnak(new PropertySomeValueSnak(new PropertyId('P65'))); $references = new ReferenceList(); $referenceSnaks = new SnakList(); $referenceSnaks->addSnak(new PropertySomeValueSnak(new PropertyId('P65'))); $referenceSnaks->addSnak(new PropertySomeValueSnak(new PropertyId('P68'))); $references->addReference(new Reference($referenceSnaks)); $guid = 'imaguid'; $item->getStatements()->addNewStatement($snak, $qualifiers, $references, $guid); $entityRevision = new EntityRevision($item, 33, '20131126202923'); $resultBuilder = $this->getResultBuilder($result, $addMetaData); $resultBuilder->addEntityRevision('Q1230000', $entityRevision); $data = $result->getResultData(); $this->assertEquals($expected, $data); }
public function testSerializeRoundtrip() { $references = new ReferenceList(); $references->addReference(new Reference()); $references->addReference(new Reference(array(new PropertyNoValueSnak(2), new PropertyNoValueSnak(3)))); $serialized = serialize($references); $this->assertTrue($references->equals(unserialize($serialized))); }