/** * @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; }
/** * 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); } }
/** * @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'); }