public function ConfigEntityBase::toArray

public ConfigEntityBase::toArray()

Gets an array of all property values.

Return value

mixed[] An array of property values, keyed by property name.

Overrides Entity::toArray

File

core/lib/Drupal/Core/Config/Entity/ConfigEntityBase.php, line 265

Class

ConfigEntityBase
Defines a base configuration entity class.

Namespace

Drupal\Core\Config\Entity

Code

public function toArray() {
  $properties = array();
  /** @var \Drupal\Core\Config\Entity\ConfigEntityTypeInterface $entity_type */
  $entity_type = $this->getEntityType();

  $properties_to_export = $entity_type->getPropertiesToExport();
  if (empty($properties_to_export)) {
    $config_name = $entity_type->getConfigPrefix() . '.' . $this->id();
    $definition = $this->getTypedConfig()->getDefinition($config_name);
    if (!isset($definition['mapping'])) {
      throw new SchemaIncompleteException("Incomplete or missing schema for $config_name");
    }
    $properties_to_export = array_combine(array_keys($definition['mapping']), array_keys($definition['mapping']));
  }

  $id_key = $entity_type->getKey('id');
  foreach ($properties_to_export as $property_name => $export_name) {
    // Special handling for IDs so that computed compound IDs work.
    // @see \Drupal\Core\Entity\EntityDisplayBase::id()
    if ($property_name == $id_key) {
      $properties[$export_name] = $this->id();
    }
    else {
      $properties[$export_name] = $this->get($property_name);
    }
  }

  if (empty($this->third_party_settings)) {
    unset($properties['third_party_settings']);
  }
  if (empty($this->_core)) {
    unset($properties['_core']);
  }
  return $properties;
}

© 2001–2016 by the original authors
Licensed under the GNU General Public License, version 2 and later.
Drupal is a registered trademark of Dries Buytaert.
https://api.drupal.org/api/drupal/core!lib!Drupal!Core!Config!Entity!ConfigEntityBase.php/function/ConfigEntityBase::toArray/8.1.x