@@ 461-491 (lines=31) @@ | ||
458 | * |
|
459 | * @return CheckResult[] |
|
460 | */ |
|
461 | private function checkConstraintsForQualifiers( |
|
462 | EntityDocument $entity, |
|
463 | Statement $statement, |
|
464 | array $constraintIds = null, |
|
465 | callable $defaultResultsPerContext = null |
|
466 | ) { |
|
467 | $result = []; |
|
468 | ||
469 | if ( in_array( |
|
470 | $statement->getPropertyId()->getSerialization(), |
|
471 | $this->propertiesWithViolatingQualifiers |
|
472 | ) ) { |
|
473 | return $result; |
|
474 | } |
|
475 | ||
476 | foreach ( $statement->getQualifiers() as $qualifier ) { |
|
477 | $qualifierContext = new QualifierContext( $entity, $statement, $qualifier ); |
|
478 | if ( $defaultResultsPerContext !== null ) { |
|
479 | $result = array_merge( $result, $defaultResultsPerContext( $qualifierContext ) ); |
|
480 | } |
|
481 | $qualifierConstraints = $this->getConstraintsToUse( |
|
482 | $qualifierContext->getSnak()->getPropertyId(), |
|
483 | $constraintIds |
|
484 | ); |
|
485 | foreach ( $qualifierConstraints as $qualifierConstraint ) { |
|
486 | $result[] = $this->getCheckResultFor( $qualifierContext, $qualifierConstraint ); |
|
487 | } |
|
488 | } |
|
489 | ||
490 | return $result; |
|
491 | } |
|
492 | ||
493 | /** |
|
494 | * @param EntityDocument $entity |
|
@@ 501-532 (lines=32) @@ | ||
498 | * |
|
499 | * @return CheckResult[] |
|
500 | */ |
|
501 | private function checkConstraintsForReferences( |
|
502 | EntityDocument $entity, |
|
503 | Statement $statement, |
|
504 | array $constraintIds = null, |
|
505 | callable $defaultResultsPerContext = null |
|
506 | ) { |
|
507 | $result = []; |
|
508 | ||
509 | /** @var Reference $reference */ |
|
510 | foreach ( $statement->getReferences() as $reference ) { |
|
511 | foreach ( $reference->getSnaks() as $snak ) { |
|
512 | $referenceContext = new ReferenceContext( |
|
513 | $entity, $statement, $reference, $snak |
|
514 | ); |
|
515 | if ( $defaultResultsPerContext !== null ) { |
|
516 | $result = array_merge( $result, $defaultResultsPerContext( $referenceContext ) ); |
|
517 | } |
|
518 | $referenceConstraints = $this->getConstraintsToUse( |
|
519 | $referenceContext->getSnak()->getPropertyId(), |
|
520 | $constraintIds |
|
521 | ); |
|
522 | foreach ( $referenceConstraints as $referenceConstraint ) { |
|
523 | $result[] = $this->getCheckResultFor( |
|
524 | $referenceContext, |
|
525 | $referenceConstraint |
|
526 | ); |
|
527 | } |
|
528 | } |
|
529 | } |
|
530 | ||
531 | return $result; |
|
532 | } |
|
533 | ||
534 | /** |
|
535 | * @param Context $context |