eZ\Publish\Core\Limitation\SiteAccessLimitationType::evaluate PHP Méthode

evaluate() public méthode

SiteAccess limitation takes a SiteAccess as ValueObject, and is hence like in legacy only suitable for user/login and similar policies.
public evaluate ( eZ\Publish\API\Repository\Values\User\Limitation $value, eZ\Publish\API\Repository\Values\User\UserReference $currentUser, eZ\Publish\API\Repository\Values\ValueObject $object, array $targets = null ) : boolean
$value eZ\Publish\API\Repository\Values\User\Limitation
$currentUser eZ\Publish\API\Repository\Values\User\UserReference
$object eZ\Publish\API\Repository\Values\ValueObject
$targets array The context of the $object, like Location of Content, if null none where provided by caller
Résultat boolean
    public function evaluate(APILimitationValue $value, APIUserReference $currentUser, ValueObject $object, array $targets = null)
    {
        if (!$value instanceof APISiteAccessLimitation) {
            throw new InvalidArgumentException('$value', 'Must be of type: APISiteAccessLimitation');
        }
        if (!$object instanceof SiteAccess) {
            throw new InvalidArgumentException('$object', 'Must be of type: SiteAccess');
        }
        if (empty($value->limitationValues)) {
            return false;
        }
        if (empty($object->name)) {
            return false;
        }
        $currentSiteAccessHash = $this->generateSiteAccessValue($object->name);
        return in_array($currentSiteAccessHash, $value->limitationValues);
    }

Usage Example

 /**
  * @depends testConstruct
  * @dataProvider providerForTestEvaluateInvalidArgument
  * @expectedException \eZ\Publish\API\Repository\Exceptions\InvalidArgumentException
  */
 public function testEvaluateInvalidArgument(Limitation $limitation, ValueObject $object, SiteAccessLimitationType $limitationType)
 {
     $userMock = $this->getUserMock();
     $userMock->expects($this->never())->method($this->anything());
     $limitationType->evaluate($limitation, $userMock, $object);
 }