summaryrefslogtreecommitdiff
path: root/modules/system/system.api.php
diff options
context:
space:
mode:
Diffstat (limited to 'modules/system/system.api.php')
-rw-r--r--modules/system/system.api.php106
1 files changed, 106 insertions, 0 deletions
diff --git a/modules/system/system.api.php b/modules/system/system.api.php
index 8d1bda405..82f7240c7 100644
--- a/modules/system/system.api.php
+++ b/modules/system/system.api.php
@@ -12,6 +12,112 @@
*/
/**
+ * Inform the base system and the Field API about one or more entity types.
+ *
+ * Inform the system about one or more entity types (i.e., object types that
+ * can be loaded via entity_load() and, optionally, to which fields can be
+ * attached).
+ *
+ * @see entity_load()
+ * @see hook_entity_info_alter()
+ *
+ * @return
+ * An array whose keys are entity type names and whose values identify
+ * properties of those types that the system needs to know about:
+ *
+ * name: The human-readable name of the type.
+ * controller class: The name of the class that is used to load the objects.
+ * The class has to implement the DrupalEntityController interface. Leave
+ * blank to use the DefaultDrupalEntityController implementation.
+ * base table: (used by DefaultDrupalEntityController) The name of the entity
+ * type's base table.
+ * static cache: (used by DefaultDrupalEntityController) FALSE to disable
+ * static caching of entities during a page request. Defaults to TRUE.
+ * load hook: The name of the hook which should be invoked by
+ * DrupalDefaultEntityController:attachLoad(), for example 'node_load'.
+ * fieldable: Set to TRUE if you want your entity type to be fieldable.
+ * - object keys: An array describing how the Field API can extract the
+ * information it needs from the objects of the type.
+ * - id: The name of the property that contains the primary id of the
+ * object. Every object passed to the Field API must have this property
+ * and its value must be numeric.
+ * - revision: The name of the property that contains the revision id of
+ * the object. The Field API assumes that all revision ids are unique
+ * across all objects of a type.
+ * This element can be omitted if the objects of this type are not
+ * versionable.
+ * - bundle: The name of the property that contains the bundle name for the
+ * object. The bundle name defines which set of fields are attached to
+ * the object (e.g. what nodes call "content type").
+ * This element can be omitted if this type has no bundles (all objects
+ * have the same fields).
+ * - bundle keys: An array describing how the Field API can extract the
+ * information it needs from the bundle objects for this type (e.g
+ * $vocabulary objects for terms; not applicable for nodes).
+ * This element can be omitted if this type's bundles do not exist as
+ * standalone objects.
+ * - bundle: The name of the property that contains the name of the bundle
+ * object.
+ * - cacheable: A boolean indicating whether Field API should cache
+ * loaded fields for each object, reducing the cost of
+ * field_attach_load().
+ * - bundles: An array describing all bundles for this object type.
+ * Keys are bundles machine names, as found in the objects' 'bundle'
+ * property (defined in the 'object keys' entry above).
+ * - label: The human-readable name of the bundle.
+ * - admin: An array of information that allow Field UI pages (currently
+ * implemented in a contributed module) to attach themselves to the
+ * existing administration pages for the bundle.
+ * - path: the path of the bundle's main administration page, as defined
+ * in hook_menu(). If the path includes a placeholder for the bundle,
+ * the 'bundle argument', 'bundle helper' and 'real path' keys below
+ * are required.
+ * - bundle argument: The position of the placeholder in 'path', if any.
+ * - real path: The actual path (no placeholder) of the bundle's main
+ * administration page. This will be used to generate links.
+ * - access callback: As in hook_menu(). 'user_access' will be assumed if
+ * no value is provided.
+ * - access arguments: As in hook_menu().
+ */
+function hook_entity_info() {
+ $return = array(
+ 'node' => array(
+ 'name' => t('Node'),
+ 'controller class' => 'NodeController',
+ 'base table' => 'node',
+ 'id key' => 'nid',
+ 'revision key' => 'vid',
+ 'fieldable' => TRUE,
+ 'bundle key' => 'type',
+ // Node.module handles its own caching.
+ // 'cacheable' => FALSE,
+ // Bundles must provide human readable name so
+ // we can create help and error messages about them.
+ 'bundles' => node_type_get_names(),
+ ),
+ );
+ return $return;
+}
+
+/**
+ * Alter the entity info.
+ *
+ * Modules may implement this hook to alter the information that defines an
+ * entity. All properties that are available in hook_entity_info() can be
+ * altered here.
+ *
+ * @see hook_entity_info()
+ *
+ * @param $entity_info
+ * The entity info array, keyed by entity name.
+ */
+function hook_entity_info_alter(&$entity_info) {
+ // Set the controller class for nodes to an alternate implementation of the
+ // DrupalEntityController interface.
+ $entity_info['node']['controller class'] = 'MyCustomNodeController';
+}
+
+/**
* Perform periodic actions.
*
* Modules that require to schedule some commands to be executed at regular