/**
  * @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 #2
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 $url
  *
  * @return bool
  */
 public static function statementHasReferenceForUrlWithSameDomain(Statement $statement, $url)
 {
     $currentReferences = $statement->getReferences();
     foreach ($currentReferences as $currentReference) {
         foreach ($currentReference->getSnaks() as $currentReferenceSnak) {
             if (!$currentReferenceSnak instanceof PropertyValueSnak) {
                 continue;
                 // Ignore some and no value snaks
             }
             // Note: P854 is reference URL
             if ($currentReferenceSnak->getPropertyId()->getSerialization() == 'P854') {
                 /** @var StringValue $currentReferenceValue */
                 $currentReferenceValue = $currentReferenceSnak->getDataValue();
                 $currentReferenceUrl = $currentReferenceValue->getValue();
                 if (self::urlsDomainsAreSame($currentReferenceUrl, $url)) {
                     return true;
                 }
             }
         }
     }
     return false;
 }
Example #4
0
 /**
  * @param Statement|null $oldStatement
  * @param Statement|null $newStatement
  *
  * @return Diff
  */
 private function diffReferences(Statement $oldStatement = null, Statement $newStatement = null)
 {
     if ($oldStatement !== null && $newStatement !== null && $oldStatement->getReferences()->equals($newStatement->getReferences())) {
         return null;
     }
     $oldReferences = $oldStatement === null ? array() : iterator_to_array($oldStatement->getReferences());
     $newReferences = $newStatement === null ? array() : iterator_to_array($newStatement->getReferences());
     if ($oldReferences === $newReferences) {
         return null;
     }
     return new Diff($this->listDiffer->doDiff($oldReferences, $newReferences), false);
 }
 /**
  * @param Statement $fromStatement statement to take references from
  * @param Statement $toStatement statement to add references to
  */
 private function generateReferencesChangeOps(Statement $fromStatement, Statement $toStatement)
 {
     /** @var Reference $reference */
     foreach ($fromStatement->getReferences() as $reference) {
         if (!$toStatement->getReferences()->hasReferenceHash($reference->getHash())) {
             $this->toChangeOps->add($this->getStatementChangeOpFactory()->newSetReferenceOp($toStatement->getGuid(), $reference, ''));
         }
     }
 }
 private function hasMeaningfulReference(Statement $statement)
 {
     foreach ($statement->getReferences() as $reference) {
         foreach ($reference->getSnaks() as $snak) {
             if (!$snak->equals(new PropertyValueSnak(new PropertyId('P248'), new EntityIdValue(new ItemId('Q36578')))) && !$snak->getPropertyId()->equals(new PropertyId('P813')) && !$snak->getPropertyId()->equals(new PropertyId('P143'))) {
                 return true;
             }
         }
     }
     return false;
 }
 /**
  * @param Statement $statement
  *
  * @return string HTML
  */
 private function getReferencesHeading(Statement $statement)
 {
     $referenceCount = count($statement->getReferences());
     if (!array_key_exists($referenceCount, $this->referenceHeadings)) {
         $this->referenceHeadings[$referenceCount] = wfMessage('wikibase-ui-pendingquantitycounter-nonpending', wfMessage('wikibase-statementview-referencesheading-pendingcountersubject')->numParams($referenceCount)->text())->numParams($referenceCount)->text();
     }
     return $this->referenceHeadings[$referenceCount];
 }
 private function addReferencesToSerialization(Statement $statement, array &$serialization)
 {
     $references = $statement->getReferences();
     if ($references->count() != 0) {
         $serialization['references'] = $this->referencesSerializer->serialize($statement->getReferences());
     }
 }
 /**
  * @param array $params
  * @param Statement $statement
  *
  * @return string[]
  */
 private function getReferenceHashesFromParams(array $params, Statement $statement)
 {
     $references = $statement->getReferences();
     $hashes = array();
     foreach (array_unique($params['references']) as $referenceHash) {
         if (!$references->hasReferenceHash($referenceHash)) {
             $this->errorReporter->dieError('Invalid reference hash', 'no-such-reference');
         }
         $hashes[] = $referenceHash;
     }
     return $hashes;
 }
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');
 }
Example #11
0
 /**
  * @param Statement $statement
  * @param string $referenceHash
  */
 private function validateReferenceHash(Statement $statement, $referenceHash)
 {
     if (!$statement->getReferences()->hasReferenceHash($referenceHash)) {
         $this->errorReporter->dieError('Statement does not have a reference with the given hash', 'no-such-reference');
     }
 }