annotate core/modules/jsonapi/src/JsonApiResource/ResourceObjectData.php @ 19:fa3358dc1485 tip

Add ndrum files
author Chris Cannam
date Wed, 28 Aug 2019 13:14:47 +0100
parents af1871eacc83
children
rev   line source
Chris@18 1 <?php
Chris@18 2
Chris@18 3 namespace Drupal\jsonapi\JsonApiResource;
Chris@18 4
Chris@18 5 use Drupal\Component\Assertion\Inspector;
Chris@18 6 use Drupal\jsonapi\Exception\EntityAccessDeniedHttpException;
Chris@18 7
Chris@18 8 /**
Chris@18 9 * Represents the primary data for individual and collection documents.
Chris@18 10 *
Chris@18 11 * @internal JSON:API maintains no PHP API. The API is the HTTP API. This class
Chris@18 12 * may change at any time and could break any dependencies on it.
Chris@18 13 *
Chris@18 14 * @see https://www.drupal.org/project/jsonapi/issues/3032787
Chris@18 15 * @see jsonapi.api.php
Chris@18 16 */
Chris@18 17 class ResourceObjectData extends Data {
Chris@18 18
Chris@18 19 /**
Chris@18 20 * ResourceObjectData constructor.
Chris@18 21 *
Chris@18 22 * @param \Drupal\jsonapi\JsonApiResource\ResourceObject[]|\Drupal\jsonapi\Exception\EntityAccessDeniedHttpException[] $data
Chris@18 23 * Resource objects that are the primary data for the response.
Chris@18 24 * @param int $cardinality
Chris@18 25 * The number of resources that this collection may contain.
Chris@18 26 *
Chris@18 27 * @see \Drupal\jsonapi\JsonApiResource\Data::__construct
Chris@18 28 */
Chris@18 29 public function __construct($data, $cardinality = -1) {
Chris@18 30 assert(Inspector::assertAllObjects($data, ResourceObject::class, EntityAccessDeniedHttpException::class));
Chris@18 31 parent::__construct($data, $cardinality);
Chris@18 32 }
Chris@18 33
Chris@18 34 /**
Chris@18 35 * Gets only data to be exposed.
Chris@18 36 *
Chris@18 37 * @return static
Chris@18 38 */
Chris@18 39 public function getAccessible() {
Chris@18 40 $accessible_data = [];
Chris@18 41 foreach ($this->data as $resource_object) {
Chris@18 42 if (!$resource_object instanceof EntityAccessDeniedHttpException) {
Chris@18 43 $accessible_data[] = $resource_object;
Chris@18 44 }
Chris@18 45 }
Chris@18 46 return new static($accessible_data, $this->cardinality);
Chris@18 47 }
Chris@18 48
Chris@18 49 /**
Chris@18 50 * Gets only data to be omitted.
Chris@18 51 *
Chris@18 52 * @return static
Chris@18 53 */
Chris@18 54 public function getOmissions() {
Chris@18 55 $omitted_data = [];
Chris@18 56 foreach ($this->data as $resource_object) {
Chris@18 57 if ($resource_object instanceof EntityAccessDeniedHttpException) {
Chris@18 58 $omitted_data[] = $resource_object;
Chris@18 59 }
Chris@18 60 }
Chris@18 61 return new OmittedData($omitted_data);
Chris@18 62 }
Chris@18 63
Chris@18 64 }