summaryrefslogtreecommitdiff
path: root/modules/field/field.module
diff options
context:
space:
mode:
Diffstat (limited to 'modules/field/field.module')
-rw-r--r--modules/field/field.module186
1 files changed, 185 insertions, 1 deletions
diff --git a/modules/field/field.module b/modules/field/field.module
index e96bdb0ce..08ee9d594 100644
--- a/modules/field/field.module
+++ b/modules/field/field.module
@@ -38,7 +38,191 @@ require_once DRUPAL_ROOT . '/modules/field/field.form.inc';
* fields via a web browser as well as a wide and flexible variety of
* data type, form element, and display format capabilities.
*
- * - @link field_structs Data structures: Field, Instance, Bundle @endlink.
+ * The Field API defines two primary data structures, Field and
+ * Instance, and the concept of a Bundle. A Field defines a
+ * particular type of data that can be attached to entities. A Field
+ * Instance is a Field attached to a single Bundle. A Bundle is a set
+ * of fields that are treated as a group by the Field Attach API and
+ * is related to a single fieldable entity type.
+ *
+ * For example, suppose a site administrator wants Article nodes to
+ * have a subtitle and photo. Using the Field API or Field UI module,
+ * the administrator creates a field named 'subtitle' of type 'text'
+ * and a field named 'photo' of type 'image'. The administrator
+ * (again, via a UI) creates two Field Instances, one attaching the
+ * field 'subtitle' to the 'node' bundle 'article' and one attaching
+ * the field 'photo' to the 'node' bundle 'article'. When the node
+ * system uses the Field Attach API to load all fields for an Article
+ * node, it passes the node's entity type (which is 'node') and
+ * content type (which is 'article') as the node's bundle.
+ * field_attach_load() then loads the 'subtitle' and 'photo' fields
+ * because they are both attached to the 'node' bundle 'article'.
+ *
+ * Field definitions are represented as an array of key/value pairs.
+ *
+ * array $field:
+ * - id (integer, read-only)
+ * The primary identifier of the field. It is assigned automatically
+ * by field_create_field().
+ * - field_name (string)
+ * The name of the field. Each field name is unique within Field API.
+ * When a field is attached to an entity, the field's data is stored
+ * in $entity->$field_name. Maximum length is 32 characters.
+ * - type (string)
+ * The type of the field, such as 'text' or 'image'. Field types
+ * are defined by modules that implement hook_field_info().
+ * - entity_types (array)
+ * The array of entity types that can hold instances of this field. If
+ * empty or not specified, the field can have instances in any entity type.
+ * - cardinality (integer)
+ * The number of values the field can hold. Legal values are any
+ * positive integer or FIELD_CARDINALITY_UNLIMITED.
+ * - translatable (integer)
+ * Whether the field is translatable.
+ * - locked (integer)
+ * Whether or not the field is available for editing. If TRUE, users can't
+ * change field settings or create new instances of the field in the UI.
+ * Defaults to FALSE.
+ * - module (string, read-only)
+ * The name of the module that implements the field type.
+ * - active (integer, read-only)
+ * TRUE if the module that implements the field type is currently
+ * enabled, FALSE otherwise.
+ * - deleted (integer, read-only)
+ * TRUE if this field has been deleted, FALSE otherwise. Deleted
+ * fields are ignored by the Field Attach API. This property exists
+ * because fields can be marked for deletion but only actually
+ * destroyed by a separate garbage-collection process.
+ * - columns (array, read-only).
+ * An array of the Field API columns used to store each value of
+ * this field. The column list may depend on field settings; it is
+ * not constant per field type. Field API column specifications are
+ * exactly like Schema API column specifications but, depending on
+ * the field storage module in use, the name of the column may not
+ * represent an actual column in an SQL database.
+ * - indexes (array).
+ * An array of indexes on data columns, using the same definition format
+ * as Schema API index specifications. Only columns that appear in the
+ * 'columns' setting are allowed. Note that field types can specify
+ * default indexes, which can be modified or added to when
+ * creating a field.
+ * - foreign keys: (optional) An associative array of relations, using the same
+ * structure as the 'foreign keys' definition of hook_schema(). Note, however,
+ * that the field data is not necessarily stored in SQL. Also, the possible
+ * usage is limited, as you cannot specify another field as related, only
+ * existing SQL tables, such as filter formats.
+ * - settings (array)
+ * A sub-array of key/value pairs of field-type-specific settings. Each
+ * field type module defines and documents its own field settings.
+ * - storage (array)
+ * A sub-array of key/value pairs identifying the storage backend to use for
+ * the for the field.
+ * - type (string)
+ * The storage backend used by the field. Storage backends are defined
+ * by modules that implement hook_field_storage_info().
+ * - module (string, read-only)
+ * The name of the module that implements the storage backend.
+ * - active (integer, read-only)
+ * TRUE if the module that implements the storage backend is currently
+ * enabled, FALSE otherwise.
+ * - settings (array)
+ * A sub-array of key/value pairs of settings. Each storage backend
+ * defines and documents its own settings.
+ *
+ * Field instance definitions are represented as an array of key/value pairs.
+ *
+ * array $instance:
+ * - id (integer, read-only)
+ * The primary identifier of this field instance. It is assigned
+ * automatically by field_create_instance().
+ * - field_id (integer, read-only)
+ * The foreign key of the field attached to the bundle by this instance.
+ * It is populated automatically by field_create_instance().
+ * - field_name (string)
+ * The name of the field attached to the bundle by this instance.
+ * - entity_type (string)
+ * The name of the entity type the instance is attached to.
+ * - bundle (string)
+ * The name of the bundle that the field is attached to.
+ * - label (string)
+ * A human-readable label for the field when used with this
+ * bundle. For example, the label will be the title of Form API
+ * elements for this instance.
+ * - description (string)
+ * A human-readable description for the field when used with this
+ * bundle. For example, the description will be the help text of
+ * Form API elements for this instance.
+ * - required (integer)
+ * TRUE if a value for this field is required when used with this
+ * bundle, FALSE otherwise. Currently, required-ness is only enforced
+ * during Form API operations, not by field_attach_load(),
+ * field_attach_insert(), or field_attach_update().
+ * - default_value_function (string)
+ * The name of the function, if any, that will provide a default value.
+ * - default_value (array)
+ * If default_value_function is not set, then fixed values can be provided.
+ * - deleted (integer, read-only)
+ * TRUE if this instance has been deleted, FALSE otherwise.
+ * Deleted instances are ignored by the Field Attach API.
+ * This property exists because instances can be marked for deletion but
+ * only actually destroyed by a separate garbage-collection process.
+ * - settings (array)
+ * A sub-array of key/value pairs of field-type-specific instance
+ * settings. Each field type module defines and documents its own
+ * instance settings.
+ * - widget (array)
+ * A sub-array of key/value pairs identifying the Form API input widget
+ * for the field when used by this bundle.
+ * - type (string)
+ * The type of the widget, such as text_textfield. Widget types
+ * are defined by modules that implement hook_field_widget_info().
+ * - settings (array)
+ * A sub-array of key/value pairs of widget-type-specific settings.
+ * Each field widget type module defines and documents its own
+ * widget settings.
+ * - weight (float)
+ * The weight of the widget relative to the other elements in entity
+ * edit forms.
+ * - module (string, read-only)
+ * The name of the module that implements the widget type.
+ * - display (array)
+ * A sub-array of key/value pairs identifying the way field values should
+ * be displayed in each of the entity type's view modes, plus the 'default'
+ * mode. For each view mode, Field UI lets site administrators define
+ * whether they want to use a dedicated set of display options or the
+ * 'default' options to reduce the number of displays to maintain as they
+ * add new fields. For nodes, on a fresh install, only the 'teaser' view
+ * mode is configured to use custom display options, all other view modes
+ * defined use the 'default' options by default. When programmatically
+ * adding field instances on nodes, it is therefore recommended to at least
+ * specify display options for 'default' and 'teaser'.
+ * - default (array)
+ * A sub-array of key/value pairs describing the display options to be
+ * used when the field is being displayed in view modes that are not
+ * configured to use dedicated display options.
+ * - label (string)
+ * Position of the label. 'inline', 'above' and 'hidden' are the
+ * values recognized by the default 'field' theme implementation.
+ * - type (string)
+ * The type of the display formatter, or 'hidden' for no display.
+ * - settings (array)
+ * A sub-array of key/value pairs of display options specific to
+ * the formatter.
+ * - weight (float)
+ * The weight of the field relative to the other entity components
+ * displayed in this view mode.
+ * - module (string, read-only)
+ * The name of the module which implements the display formatter.
+ * - some_mode
+ * A sub-array of key/value pairs describing the display options to be
+ * used when the field is being displayed in the 'some_mode' view mode.
+ * Those options will only be actually applied at run time if the view
+ * mode is not configured to use default settings for this bundle.
+ * - ...
+ * - other_mode
+ * - ...
+ *
+ * Bundles are represented by two strings, an entity type and a bundle name.
*
* - @link field_types Field Types API @endlink. Defines field types,
* widget types, and display formatters. Field modules use this API