Mercurial > hg > isophonics-drupal-site
diff core/modules/jsonapi/src/JsonApiResource/ResourceObjectData.php @ 18:af1871eacc83
Update to Drupal core 8.7.1
author | Chris Cannam |
---|---|
date | Thu, 09 May 2019 15:33:08 +0100 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/core/modules/jsonapi/src/JsonApiResource/ResourceObjectData.php Thu May 09 15:33:08 2019 +0100 @@ -0,0 +1,64 @@ +<?php + +namespace Drupal\jsonapi\JsonApiResource; + +use Drupal\Component\Assertion\Inspector; +use Drupal\jsonapi\Exception\EntityAccessDeniedHttpException; + +/** + * Represents the primary data for individual and collection documents. + * + * @internal JSON:API maintains no PHP API. The API is the HTTP API. This class + * may change at any time and could break any dependencies on it. + * + * @see https://www.drupal.org/project/jsonapi/issues/3032787 + * @see jsonapi.api.php + */ +class ResourceObjectData extends Data { + + /** + * ResourceObjectData constructor. + * + * @param \Drupal\jsonapi\JsonApiResource\ResourceObject[]|\Drupal\jsonapi\Exception\EntityAccessDeniedHttpException[] $data + * Resource objects that are the primary data for the response. + * @param int $cardinality + * The number of resources that this collection may contain. + * + * @see \Drupal\jsonapi\JsonApiResource\Data::__construct + */ + public function __construct($data, $cardinality = -1) { + assert(Inspector::assertAllObjects($data, ResourceObject::class, EntityAccessDeniedHttpException::class)); + parent::__construct($data, $cardinality); + } + + /** + * Gets only data to be exposed. + * + * @return static + */ + public function getAccessible() { + $accessible_data = []; + foreach ($this->data as $resource_object) { + if (!$resource_object instanceof EntityAccessDeniedHttpException) { + $accessible_data[] = $resource_object; + } + } + return new static($accessible_data, $this->cardinality); + } + + /** + * Gets only data to be omitted. + * + * @return static + */ + public function getOmissions() { + $omitted_data = []; + foreach ($this->data as $resource_object) { + if ($resource_object instanceof EntityAccessDeniedHttpException) { + $omitted_data[] = $resource_object; + } + } + return new OmittedData($omitted_data); + } + +}