graphql_core_schema-1.0.x-dev/graphql_core_schema.module

graphql_core_schema.module
<?php

use Drupal\Core\Form\FormStateInterface;
use Drupal\graphql\Entity\Server;

/**
 * Implements hook_form_FORM_ID_alter().
 */
function graphql_core_schema_form_graphql_server_edit_form_alter(&$form, FormStateInterface $form_state, $form_id) {
  // Add custom validation to avoid AJAX errors.
  $form['#validate'][] = 'graphql_core_schema_form_graphql_server_validate';
}

/**
 * Custom server form validation.
 *
 * @param mixed $form
 *   The form.
 * @param \Drupal\Core\Form\FormStateInterface $form_state
 *   The form state.
 */
function graphql_core_schema_form_graphql_server_validate(&$form, FormStateInterface $form_state) {
  $entity = $form_state->getFormObject()->getEntity();
  $entity->set('debug_flag', FALSE);
}

/**
 * Clean up schema configuration for core_composable server configuration.
 *
 * Removes empty/unchecked checkboxes and sorts the configuration arrays.
 */
function graphql_core_schema_graphql_server_presave(Server $entity) {
  $field = $entity->get('schema_configuration');

  if ($entity->schema !== 'core_composable') {
    return;
  }

  if (empty($field['core_composable'])) {
    return;
  }

  $configuration = $field['core_composable'];

  if (!empty($configuration['entity_base_fields']['fields'])) {
    ksort($configuration['entity_base_fields']['fields']);
  }

  if (!empty($configuration['extensions'])) {
    $configuration['extensions'] = array_filter($configuration['extensions']);
    ksort($configuration['extensions']);
  }

  if (!empty($configuration['enabled_entity_types'])) {
    $configuration['enabled_entity_types'] = array_filter($configuration['enabled_entity_types']);
    ksort($configuration['enabled_entity_types']);
  }

  if (!empty($configuration['extension_views']['enabled_views'])) {
    $configuration['extension_views']['enabled_views'] = array_filter($configuration['extension_views']['enabled_views']);
    ksort($configuration['extension_views']['enabled_views']);
  }

  if (!empty($configuration['entity_base_fields']['fields'])) {
    $configuration['entity_base_fields']['fields'] = array_filter($configuration['entity_base_fields']['fields']);
    ksort($configuration['entity_base_fields']['fields']);
  }

  if (!empty($configuration['fields'])) {
    foreach (array_keys($configuration['fields']) as $key) {
      $configuration['fields'][$key] = array_filter($configuration['fields'][$key]);
      ksort($configuration['fields'][$key]);
    }
  }

  $field['core_composable'] = $configuration;
  $entity->set('schema_configuration', $field);
}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc