eZ\Publish\Core\REST\Common\Input\ParserTools::parseLimitation PHP Method

parseLimitation() public method

Parses the input structure to Limitation object.
public parseLimitation ( array $limitation ) : eZ\Publish\API\Repository\Values\User\Limitation
$limitation array
return eZ\Publish\API\Repository\Values\User\Limitation
    public function parseLimitation(array $limitation)
    {
        if (!array_key_exists('_identifier', $limitation)) {
            throw new Exceptions\Parser("Missing '_identifier' attribute for Limitation.");
        }
        $limitationObject = $this->getLimitationByIdentifier($limitation['_identifier']);
        if (!isset($limitation['values']['ref']) || !is_array($limitation['values']['ref'])) {
            throw new Exceptions\Parser('Invalid format for limitation values in Limitation.');
        }
        $limitationValues = array();
        foreach ($limitation['values']['ref'] as $limitationValue) {
            if (!array_key_exists('_href', $limitationValue)) {
                throw new Exceptions\Parser('Invalid format for limitation values in Limitation.');
            }
            $limitationValues[] = $limitationValue['_href'];
        }
        $limitationObject->limitationValues = $limitationValues;
        return $limitationObject;
    }

Usage Example

Beispiel #1
0
 /**
  * Parse input structure
  *
  * @param array $data
  * @param \eZ\Publish\Core\REST\Common\Input\ParsingDispatcher $parsingDispatcher
  *
  * @return \eZ\Publish\API\Repository\Values\User\PolicyUpdateStruct
  */
 public function parse(array $data, ParsingDispatcher $parsingDispatcher)
 {
     $policyUpdate = $this->roleService->newPolicyUpdateStruct();
     // @todo XSD says that limitations field is mandatory, but
     // it needs to be possible to remove limitations from policy
     if (array_key_exists('limitations', $data)) {
         if (!is_array($data['limitations'])) {
             throw new Exceptions\Parser("Invalid format for 'limitations' in PolicyUpdate.");
         }
         if (!isset($data['limitations']['limitation']) || !is_array($data['limitations']['limitation'])) {
             throw new Exceptions\Parser("Invalid format for 'limitations' in PolicyUpdate.");
         }
         foreach ($data['limitations']['limitation'] as $limitationData) {
             $policyUpdate->addLimitation($this->parserTools->parseLimitation($limitationData));
         }
     }
     return $policyUpdate;
 }
All Usage Examples Of eZ\Publish\Core\REST\Common\Input\ParserTools::parseLimitation