/**
  * @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);
 }
Esempio n. 5
0
 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)));
 }