admin_ui-8.x-1.x-dev/modules/jsonapi_tables/src/EntityTypeTableSchemaTrait.php

modules/jsonapi_tables/src/EntityTypeTableSchemaTrait.php
<?php

namespace Drupal\jsonapi_tables;

use Drupal\Core\Entity\EntityTypeInterface;

trait EntityTypeTableSchemaTrait {
  /**
   * Gets the schema fields for the table of entity type.
   *
   * @param \Drupal\Core\Entity\EntityTypeInterface $entity_type
   *   The entity type.
   *
   * @return array
   *   The array of schema fields.
   */
  protected static function getEntityTypeSchemaFields(EntityTypeInterface $entity_type) {
    $schema = self::getEntityTypeSchema($entity_type);
    return $schema['fields'];
  }

  /**
   * @param \Drupal\Core\Entity\EntityTypeInterface $entity_type
   *   The entity type.
   *
   * @return array
   *   The schema.
   */
  protected static function getEntityTypeSchema(EntityTypeInterface $entity_type) {
    return drupal_get_module_schema($entity_type->get('table_provider'), $entity_type->getBaseTable());
  }

  /**
   * Gets the primary key for the table of entity type.
   *
   * @param \Drupal\Core\Entity\EntityTypeInterface $entity_type
   *   The entity type.
   *
   * @return string
   *   The primary key field.
   */
  protected static function getEntityTypeSchemaPrimaryIndexField(EntityTypeInterface $entity_type) {
    $schema = static::getEntityTypeSchema($entity_type);
    if (isset($schema['primary key']) && count($schema['primary key']) === 1) {
      return $schema['primary key'][0];
    }
  }

  /**
   * Determines if a field is serialized.
   *
   * @param \Drupal\Core\Entity\EntityTypeInterface $entity_type
   *   The entity type.
   * @param string $field_name
   *   The field name.
   *
   * @return bool
   *   TRUE if it is a serialzied field.
   */
  protected static function isSerializedField(EntityTypeInterface $entity_type, $field_name) {
    $fields = static::getEntityTypeSchemaFields($entity_type);
    if (!isset($fields[$field_name])) {
      return FALSE;
    }
    $field = $fields[$field_name];
    if (isset($field['serialize'])) {
      return $field['serialize'];
    }
    // If field is a 'blob' and 'serialize' is NOT set assume it is serialized.
    // @todo Is this assumption correct? user_schema() follows this.
    // @see https://www.drupal.org/project/drupal/issues/2232427
    if ($field['type'] === 'blob') {
      return TRUE;
    }
    return FALSE;
  }
}

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

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