class ResourceTypeBuildEventSubscriber

Same name in other branches
  1. 9 core/modules/jsonapi/tests/modules/jsonapi_test_resource_type_building/src/EventSubscriber/ResourceTypeBuildEventSubscriber.php \Drupal\jsonapi_test_resource_type_building\EventSubscriber\ResourceTypeBuildEventSubscriber
  2. 8.9.x core/modules/jsonapi/tests/modules/jsonapi_test_resource_type_building/src/EventSubscriber/ResourceTypeBuildEventSubscriber.php \Drupal\jsonapi_test_resource_type_building\EventSubscriber\ResourceTypeBuildEventSubscriber
  3. 11.x core/modules/jsonapi/tests/modules/jsonapi_test_resource_type_building/src/EventSubscriber/ResourceTypeBuildEventSubscriber.php \Drupal\jsonapi_test_resource_type_building\EventSubscriber\ResourceTypeBuildEventSubscriber

Event subscriber which tests disabling resource types.

@internal

Hierarchy

  • class \Drupal\jsonapi_test_resource_type_building\EventSubscriber\ResourceTypeBuildEventSubscriber implements \Symfony\Component\EventDispatcher\EventSubscriberInterface

Expanded class hierarchy of ResourceTypeBuildEventSubscriber

1 string reference to 'ResourceTypeBuildEventSubscriber'
jsonapi_test_resource_type_building.services.yml in core/modules/jsonapi/tests/modules/jsonapi_test_resource_type_building/jsonapi_test_resource_type_building.services.yml
core/modules/jsonapi/tests/modules/jsonapi_test_resource_type_building/jsonapi_test_resource_type_building.services.yml
1 service uses ResourceTypeBuildEventSubscriber
jsonapi_test_resource_type_building.build_subscriber in core/modules/jsonapi/tests/modules/jsonapi_test_resource_type_building/jsonapi_test_resource_type_building.services.yml
Drupal\jsonapi_test_resource_type_building\EventSubscriber\ResourceTypeBuildEventSubscriber

File

core/modules/jsonapi/tests/modules/jsonapi_test_resource_type_building/src/EventSubscriber/ResourceTypeBuildEventSubscriber.php, line 14

Namespace

Drupal\jsonapi_test_resource_type_building\EventSubscriber
View source
class ResourceTypeBuildEventSubscriber implements EventSubscriberInterface {
    
    /**
     * {@inheritdoc}
     */
    public static function getSubscribedEvents() : array {
        return [
            ResourceTypeBuildEvents::BUILD => [
                [
                    'disableResourceType',
                ],
                [
                    'aliasResourceTypeFields',
                ],
                [
                    'disableResourceTypeFields',
                ],
                [
                    'renameResourceType',
                ],
            ],
        ];
    }
    
    /**
     * Disables any resource types that have been disabled by a test.
     *
     * @param \Drupal\jsonapi\ResourceType\ResourceTypeBuildEvent $event
     *   The build event.
     */
    public function disableResourceType(ResourceTypeBuildEvent $event) {
        $disabled_resource_types = \Drupal::state()->get('jsonapi_test_resource_type_builder.disabled_resource_types', []);
        if (in_array($event->getResourceTypeName(), $disabled_resource_types, TRUE)) {
            $event->disableResourceType();
        }
    }
    
    /**
     * Aliases any resource type fields that have been aliased by a test.
     *
     * @param \Drupal\jsonapi\ResourceType\ResourceTypeBuildEvent $event
     *   The build event.
     */
    public function aliasResourceTypeFields(ResourceTypeBuildEvent $event) {
        $aliases = \Drupal::state()->get('jsonapi_test_resource_type_builder.resource_type_field_aliases', []);
        $resource_type_name = $event->getResourceTypeName();
        if (in_array($resource_type_name, array_keys($aliases), TRUE)) {
            foreach ($event->getFields() as $field) {
                if (isset($aliases[$resource_type_name][$field->getInternalName()])) {
                    $event->setPublicFieldName($field, $aliases[$resource_type_name][$field->getInternalName()]);
                }
            }
        }
    }
    
    /**
     * Disables any resource type fields that have been aliased by a test.
     *
     * @param \Drupal\jsonapi\ResourceType\ResourceTypeBuildEvent $event
     *   The build event.
     */
    public function disableResourceTypeFields(ResourceTypeBuildEvent $event) {
        $aliases = \Drupal::state()->get('jsonapi_test_resource_type_builder.disabled_resource_type_fields', []);
        $resource_type_name = $event->getResourceTypeName();
        if (in_array($resource_type_name, array_keys($aliases), TRUE)) {
            foreach ($event->getFields() as $field) {
                if (isset($aliases[$resource_type_name][$field->getInternalName()]) && $aliases[$resource_type_name][$field->getInternalName()] === TRUE) {
                    $event->disableField($field);
                }
            }
        }
    }
    
    /**
     * Renames any resource types that have been renamed by a test.
     *
     * @param \Drupal\jsonapi\ResourceType\ResourceTypeBuildEvent $event
     *   The build event.
     */
    public function renameResourceType(ResourceTypeBuildEvent $event) {
        $names = \Drupal::state()->get('jsonapi_test_resource_type_builder.renamed_resource_types', []);
        $resource_type_name = $event->getResourceTypeName();
        if (isset($names[$resource_type_name])) {
            $event->setResourceTypeName($names[$resource_type_name]);
        }
    }

}

Members

Title Sort descending Modifiers Object type Summary
ResourceTypeBuildEventSubscriber::aliasResourceTypeFields public function Aliases any resource type fields that have been aliased by a test.
ResourceTypeBuildEventSubscriber::disableResourceType public function Disables any resource types that have been disabled by a test.
ResourceTypeBuildEventSubscriber::disableResourceTypeFields public function Disables any resource type fields that have been aliased by a test.
ResourceTypeBuildEventSubscriber::getSubscribedEvents public static function
ResourceTypeBuildEventSubscriber::renameResourceType public function Renames any resource types that have been renamed by a test.

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.