| @@ 31-51 (lines=21) @@ | ||
| 28 | * |
|
| 29 | * @return \eZ\Publish\API\Repository\Values\User\Role[] |
|
| 30 | */ |
|
| 31 | public function parse(array $data, ParsingDispatcher $parsingDispatcher) |
|
| 32 | { |
|
| 33 | if (!array_key_exists('User', $data) || !is_array($data['User'])) { |
|
| 34 | throw new Exceptions\Parser("Missing 'User' element in UserRefList."); |
|
| 35 | } |
|
| 36 | ||
| 37 | // workaround for list with 1 items parsed as non arrays |
|
| 38 | if (!isset($data['User'][0])) { |
|
| 39 | $data['User'] = array($data['User']); |
|
| 40 | } |
|
| 41 | ||
| 42 | $userRefList = array(); |
|
| 43 | foreach ($data['User'] as $userRefData) { |
|
| 44 | $hrefData = $this->requestParser->parse($userRefData['_href']); |
|
| 45 | if (!isset($hrefData['userId'])) { |
|
| 46 | throw new Exceptions\Parser("Invalid application/vnd.ez.api.User href"); |
|
| 47 | } |
|
| 48 | $userRefList[] = $hrefData['userId']; |
|
| 49 | } |
|
| 50 | return $userRefList; |
|
| 51 | } |
|
| 52 | } |
|
| 53 | ||
| @@ 188-212 (lines=25) @@ | ||
| 185 | * |
|
| 186 | * @return \eZ\Publish\API\Repository\Values\User\Limitation |
|
| 187 | */ |
|
| 188 | public function parseLimitation(array $limitation) |
|
| 189 | { |
|
| 190 | if (!array_key_exists('_identifier', $limitation)) { |
|
| 191 | throw new Exceptions\Parser("Missing '_identifier' attribute for Limitation."); |
|
| 192 | } |
|
| 193 | ||
| 194 | $limitationObject = $this->getLimitationByIdentifier($limitation['_identifier']); |
|
| 195 | ||
| 196 | if (!isset($limitation['values']['ref']) || !is_array($limitation['values']['ref'])) { |
|
| 197 | throw new Exceptions\Parser('Invalid format for limitation values in Limitation.'); |
|
| 198 | } |
|
| 199 | ||
| 200 | $limitationValues = []; |
|
| 201 | foreach ($limitation['values']['ref'] as $limitationValue) { |
|
| 202 | if (!array_key_exists('_href', $limitationValue)) { |
|
| 203 | throw new Exceptions\Parser('Invalid format for limitation values in Limitation.'); |
|
| 204 | } |
|
| 205 | ||
| 206 | $limitationValues[] = $limitationValue['_href']; |
|
| 207 | } |
|
| 208 | ||
| 209 | $limitationObject->limitationValues = $limitationValues; |
|
| 210 | ||
| 211 | return $limitationObject; |
|
| 212 | } |
|
| 213 | ||
| 214 | /** |
|
| 215 | * Instantiates Limitation object based on identifier. |
|