eZ\Publish\Core\Limitation\SubtreeLimitationType::getCriterion PHP Method

getCriterion() public method

Returns Criterion for use in find() query.
public getCriterion ( eZ\Publish\API\Repository\Values\User\Limitation $value, eZ\Publish\API\Repository\Values\User\UserReference $currentUser ) : eZ\Publish\API\Repository\Values\Content\Query\CriterionInterface
$value eZ\Publish\API\Repository\Values\User\Limitation
$currentUser eZ\Publish\API\Repository\Values\User\UserReference
return eZ\Publish\API\Repository\Values\Content\Query\CriterionInterface
    public function getCriterion(APILimitationValue $value, APIUserReference $currentUser)
    {
        if (empty($value->limitationValues)) {
            // no limitation values
            throw new \RuntimeException('$value->limitationValues is empty, it should not have been stored in the first place');
        }
        if (!isset($value->limitationValues[1])) {
            // 1 limitation value: EQ operation
            return new PermissionSubtree($value->limitationValues[0]);
        }
        // several limitation values: IN operation
        return new PermissionSubtree($value->limitationValues);
    }

Usage Example

 /**
  * @depends testConstruct
  *
  * @param \eZ\Publish\Core\Limitation\SubtreeLimitationType $limitationType
  */
 public function testGetCriterionMultipleValues(SubtreeLimitationType $limitationType)
 {
     $criterion = $limitationType->getCriterion(new SubtreeLimitation(array('limitationValues' => array('/1/9/', '/1/55/'))), $this->getUserMock());
     // Assert that $criterion is instance of API type (for Solr/ES), and internal type(optimization for SQL engines)
     self::assertInstanceOf('eZ\\Publish\\API\\Repository\\Values\\Content\\Query\\Criterion\\Subtree', $criterion);
     self::assertInstanceOf('eZ\\Publish\\Core\\Repository\\Values\\Content\\Query\\Criterion\\PermissionSubtree', $criterion);
     self::assertInternalType('array', $criterion->value);
     self::assertInternalType('string', $criterion->operator);
     self::assertEquals(Operator::IN, $criterion->operator);
     self::assertEquals(array('/1/9/', '/1/55/'), $criterion->value);
 }
All Usage Examples Of eZ\Publish\Core\Limitation\SubtreeLimitationType::getCriterion