Error message

You are browsing documentation for drupal 7.x, which is not supported anymore. Read the updated version of this page for drupal 11.x (the latest version).

function entity_extract_ids

Helper function to extract id, vid, and bundle name from an entity.

Parameters

$entity_type: The entity type; e.g. 'node' or 'user'.

$entity: The entity from which to extract values.

Return value

A numerically indexed array (not a hash table) containing these elements:

  • 0: Primary ID of the entity.
  • 1: Revision ID of the entity, or NULL if $entity_type is not versioned.
  • 2: Bundle name of the entity, or NULL if $entity_type has no bundles.
43 calls to entity_extract_ids()
EntityPropertiesTestCase::testEntityKeys in modules/field/tests/field.test
Tests entity_extract_ids() with an empty entity info.
entity_form_submit_build_entity in includes/common.inc
Copies submitted values to entity properties for simple entity forms.
entity_uri in includes/common.inc
Returns the URI elements of an entity.
FieldBulkDeleteTestCase::_generateStubEntities in modules/field/tests/field.test
Convenience function for Field API tests.
field_attach_delete in modules/field/field.attach.inc
Delete field data for an existing entity. This deletes all revisions of field data for the entity.

... See full list

File

includes/common.inc, line 8118

Code

function entity_extract_ids ($entity_type, $entity) {
 $info = entity_get_info ($entity_type);
 // Objects being created might not have id/vid yet.
 if (!empty($info)) {
 $id = isset($entity->{$info['entity keys']['id']}) ? $entity->{$info['entity keys']['id']} : NULL;
 $vid = $info['entity keys']['revision'] && isset($entity->{$info['entity keys']['revision']}) ? $entity->{$info['entity keys']['revision']} : NULL;
 }
 else {
 $id = NULL;
 $vid = NULL;
 }
 if (!empty($info['entity keys']['bundle'])) {
 // Explicitly fail for malformed entities missing the bundle property.
 if (!isset($entity->{$info['entity keys']['bundle']}) || $entity->{$info['entity keys']['bundle']} === '') {
 throw new EntityMalformedException (t ('Missing bundle property on entity of type @entity_type.', array(
 '@entity_type' => $entity_type,
 )));
 }
 $bundle = $entity->{$info['entity keys']['bundle']};
 }
 else {
 // The entity type provides no bundle key: assume a single bundle, named
 // after the entity type.
 $bundle = $entity_type;
 }
 return array(
 $id,
 $vid,
 $bundle,
 );
}

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