Example #1
0
 /**
  * @param Statement|null $oldStatement
  * @param Statement|null $newStatement
  *
  * @return Diff
  */
 private function diffQualifiers(Statement $oldStatement = null, Statement $newStatement = null)
 {
     if ($oldStatement !== null && $newStatement !== null && $oldStatement->getQualifiers()->equals($newStatement->getQualifiers())) {
         return null;
     }
     $oldQualifiers = $oldStatement === null ? array() : iterator_to_array($oldStatement->getQualifiers());
     $newQualifiers = $newStatement === null ? array() : iterator_to_array($newStatement->getQualifiers());
     if ($oldQualifiers === $newQualifiers) {
         return null;
     }
     return new Diff($this->listDiffer->doDiff($oldQualifiers, $newQualifiers), false);
 }
 /**
  * @param Statement $statement
  *
  * @return Statement
  */
 public function copy(Statement $statement)
 {
     $mainSnak = $this->copySnak($statement->getMainSnak());
     $qualifiers = $this->copyQualifiers($statement->getQualifiers());
     $references = $this->copyReferences($statement->getReferences());
     $newStatement = new Statement($mainSnak, $qualifiers, $references);
     $newStatement->setRank($statement->getRank());
     return $newStatement;
 }
Example #3
0
 /**
  * Applies validation to the given Claim.
  * This is done by validating all snaks contained in the claim, notably:
  * the main snak, the qualifiers, and all snaks of all references,
  * in case the claim is a Statement.
  *
  * @param Statement $statement The value to validate
  *
  * @return Result
  */
 public function validateClaimSnaks(Statement $statement)
 {
     $snak = $statement->getMainSnak();
     $result = $this->validate($snak);
     if (!$result->isValid()) {
         return $result;
     }
     foreach ($statement->getQualifiers() as $snak) {
         $result = $this->validate($snak);
         if (!$result->isValid()) {
             return $result;
         }
     }
     $result = $this->validateReferences($statement->getReferences());
     if (!$result->isValid()) {
         return $result;
     }
     return Result::newSuccess();
 }
 /**
  * @param Statement $statement
  * @param string $qualifierHash
  */
 private function validateQualifierHash(Statement $statement, $qualifierHash)
 {
     if (!$statement->getQualifiers()->hasSnakHash($qualifierHash)) {
         $this->errorReporter->dieError('Claim does not have a qualifier with the given hash', 'no-such-qualifier');
     }
 }
 /**
  * @param Statement $statement
  *
  * @return string combined hash of the Mainsnak and Qualifiers
  */
 private function getStatementHash(Statement $statement)
 {
     return $statement->getMainSnak()->getHash() . $statement->getQualifiers()->getHash();
 }
 private function findSubStatement(StatementList $statementList, Statement $statement)
 {
     foreach ($statementList as $statementToMatch) {
         if ($this->isSnakMorePrecise($statement->getMainSnak(), $statementToMatch->getMainSnak()) && $this->isSubSnakList($statement->getQualifiers(), $statementToMatch->getQualifiers())) {
             return $statementToMatch;
         }
     }
     throw new OutOfBoundsException();
 }
 /**
  * @param array $params
  * @param Statement $statement
  *
  * @return string[]
  */
 private function getQualifierHashesFromParams(array $params, Statement $statement)
 {
     $qualifiers = $statement->getQualifiers();
     $hashes = array();
     foreach (array_unique($params['qualifiers']) as $qualifierHash) {
         if (!$qualifiers->hasSnakHash($qualifierHash)) {
             $this->errorReporter->dieError('Invalid snak hash', 'no-such-qualifier');
         }
         $hashes[] = $qualifierHash;
     }
     return $hashes;
 }
 /**
  * @param Statement $statement
  * @param ItemId $itemId
  * @param int $expectedCount
  * @param string $requestLabel A label to identify requests that are made in errors.
  */
 private function assertStatementWasSet(Statement $statement, ItemId $itemId, $expectedCount, $requestLabel)
 {
     $this->assertNotNull($statement->getGuid(), 'Cannot search for statements with no GUID');
     /** @var Item $item */
     $item = WikibaseRepo::getDefaultInstance()->getEntityLookup()->getEntity($itemId);
     $statements = $item->getStatements();
     $savedStatement = $statements->getFirstStatementWithGuid($statement->getGuid());
     $this->assertNotNull($savedStatement, "Statement list does not have statement after {$requestLabel}");
     if (count($statement->getQualifiers())) {
         $this->assertTrue($statement->getQualifiers()->equals($savedStatement->getQualifiers()));
     }
     $this->assertSame($expectedCount, $statements->count(), "Statements count is wrong after {$requestLabel}");
 }
 private function addQualifiersToSerialization(Statement $statement, &$serialization)
 {
     $qualifiers = $statement->getQualifiers();
     if ($qualifiers->count() !== 0) {
         $serialization['qualifiers'] = $this->qualifierSnaksSerializer->serialize($qualifiers);
         $serialization['qualifiers-order'] = $this->buildQualifiersOrderList($qualifiers);
     }
 }
Example #10
0
 /**
  * @dataProvider instanceProvider
  */
 public function testGetAllSnaks(Statement $statement)
 {
     $snaks = $statement->getAllSnaks();
     $c = count($statement->getQualifiers()) + 1;
     /* @var Reference $reference */
     foreach ($statement->getReferences() as $reference) {
         $c += count($reference->getSnaks());
     }
     $this->assertGreaterThanOrEqual($c, count($snaks), 'At least one snak per Qualifier and Reference');
 }