function entity_get_info

Get the entity info array of an entity type.

Parameters

$entity_type: The entity type, e.g. node, for which the info shall be returned, or NULL to return an array with info about all types.

See also

hook_entity_info()

hook_entity_info_alter()

37 calls to entity_get_info()
DrupalDefaultEntityController::cleanIds in includes/entity.inc
Ensures integer entity IDs are valid.
DrupalDefaultEntityController::__construct in includes/entity.inc
Constructor: sets basic variables.
EnableDisableTestCase::testEntityInfoChanges in modules/system/system.test
Ensures entity info cache is updated after changes.
EntityFieldQuery::propertyQuery in includes/entity.inc
Queries entity tables in SQL for property conditions and sorts.
entity_cache_test_watchdog in modules/simpletest/tests/entity_cache_test.module
Implements hook_watchdog().

... See full list

1 string reference to 'entity_get_info'
entity_info_cache_clear in includes/common.inc
Resets the cached information about entity types.

File

includes/common.inc, line 7986

Code

function entity_get_info($entity_type = NULL) {
    global $language;
    // Use the advanced drupal_static() pattern, since this is called very often.
    static $drupal_static_fast;
    if (!isset($drupal_static_fast)) {
        $drupal_static_fast['entity_info'] =& drupal_static(__FUNCTION__);
    }
    $entity_info =& $drupal_static_fast['entity_info'];
    // hook_entity_info() includes translated strings, so each language is cached
    // separately.
    $langcode = $language->language;
    if (empty($entity_info)) {
        if ($cache = cache_get("entity_info:{$langcode}")) {
            $entity_info = $cache->data;
        }
        else {
            $entity_info = module_invoke_all('entity_info');
            // Merge in default values.
            foreach ($entity_info as $name => $data) {
                $entity_info[$name] += array(
                    'fieldable' => FALSE,
                    'controller class' => 'DrupalDefaultEntityController',
                    'static cache' => TRUE,
                    'field cache' => TRUE,
                    'load hook' => $name . '_load',
                    'bundles' => array(),
                    'view modes' => array(),
                    'entity keys' => array(),
                    'translation' => array(),
                );
                $entity_info[$name]['entity keys'] += array(
                    'revision' => '',
                    'bundle' => '',
                );
                foreach ($entity_info[$name]['view modes'] as $view_mode => $view_mode_info) {
                    $entity_info[$name]['view modes'][$view_mode] += array(
                        'custom settings' => FALSE,
                    );
                }
                // If no bundle key is provided, assume a single bundle, named after
                // the entity type.
                if (empty($entity_info[$name]['entity keys']['bundle']) && empty($entity_info[$name]['bundles'])) {
                    $entity_info[$name]['bundles'] = array(
                        $name => array(
                            'label' => $entity_info[$name]['label'],
                        ),
                    );
                }
                // Prepare entity schema fields SQL info for
                // DrupalEntityControllerInterface::buildQuery().
                if (isset($entity_info[$name]['base table'])) {
                    $entity_info[$name]['base table field types'] = drupal_schema_field_types($entity_info[$name]['base table']);
                    $entity_info[$name]['schema_fields_sql']['base table'] = drupal_schema_fields_sql($entity_info[$name]['base table']);
                    if (isset($entity_info[$name]['revision table'])) {
                        $entity_info[$name]['schema_fields_sql']['revision table'] = drupal_schema_fields_sql($entity_info[$name]['revision table']);
                    }
                }
            }
            // Let other modules alter the entity info.
            drupal_alter('entity_info', $entity_info);
            cache_set("entity_info:{$langcode}", $entity_info);
        }
    }
    if (empty($entity_type)) {
        return $entity_info;
    }
    elseif (isset($entity_info[$entity_type])) {
        return $entity_info[$entity_type];
    }
}

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