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