summaryrefslogtreecommitdiff
path: root/sites/all/modules/entity/README.txt
diff options
context:
space:
mode:
Diffstat (limited to 'sites/all/modules/entity/README.txt')
-rw-r--r--sites/all/modules/entity/README.txt164
1 files changed, 164 insertions, 0 deletions
diff --git a/sites/all/modules/entity/README.txt b/sites/all/modules/entity/README.txt
new file mode 100644
index 000000000..745dd7fe8
--- /dev/null
+++ b/sites/all/modules/entity/README.txt
@@ -0,0 +1,164 @@
+
+Entity API module
+-----------------
+by Wolfgang Ziegler, nuppla@zites.net
+
+This module extends the entity API of Drupal core in order to provide a unified
+way to deal with entities and their properties. Additionally, it provides an
+entity CRUD controller, which helps simplifying the creation of new entity types.
+
+
+This is an API module. You only need to enable it if a module depends on it or
+you are interested in using it for development.
+
+Advanced usage:
+---------------
+You can optimize cache clearing performance by setting the variable
+'entity_rebuild_on_flush' to FALSE. This skips rebuilding of feature
+components and exported entities during cache flushing. Instead, it is triggered
+by the features module only; e.g., when features are reverted.
+
+
+The README below is for interested developers. If you are not interested in
+developing, you may stop reading now.
+
+--------------------------------------------------------------------------------
+ Entity API
+--------------------------------------------------------------------------------
+
+ * The module provides API functions allowing modules to create, save, delete
+ or to determine access for entities based on any entity type, for which the
+ necessary metadata is available. The module comes with integration for all
+ core entity types, as well as for entities provided via the Entity CRUD API
+ (see below). However, for any other entity type implemented by a contrib
+ module, the module integration has to be provided by the contrib module
+ itself.
+
+ * Thus the module provides API functions like entity_save(), entity_create(),
+ entity_delete(), entity_revision_delete(), entity_view() and entity_access()
+ among others.
+ entity_load(), entity_label() and entity_uri() are already provided by
+ Drupal core.
+
+ * For more information about how to provide this metadata, have a look at the
+ API documentation, i.e. entity_metadata_hook_entity_info().
+
+--------------------------------------------------------------------------------
+ Entity CRUD API - Providing new entity types
+--------------------------------------------------------------------------------
+
+ * This API helps you when defining a new entity type. It provides an entity
+ controller, which implements full CRUD functionality for your entities.
+
+ * To make use of the CRUD functionality you may just use the API functions
+ entity_create(), entity_delete() and entity_save().
+
+ Alternatively you may specify a class to use for your entities, for which the
+ "Entity" class is provided. In particular, it is useful to extend this class
+ in order to easily customize the entity type, e.g. saving.
+
+ * The controller supports fieldable entities and revisions. There is also a
+ controller which supports implementing exportable entities.
+
+ * The Entity CRUD API helps with providing additional module integration too,
+ e.g. exportable entities are automatically integrated with the Features
+ module. These module integrations are implemented in separate controller
+ classes, which may be overridden and deactivated on their own.
+
+ * There is also an optional ui controller class, which assists with providing
+ an administrative UI for managing entities of a certain type.
+
+ * For more details check out the documentation in the drupal.org handbook
+ http://drupal.org/node/878804 as well as the API documentation, i.e.
+ entity_crud_hook_entity_info().
+
+
+ Basic steps to add a new entity type:
+---------------------------------------
+
+ * You might want to study the code of the "entity_test.module".
+
+ * Describe your entities db table as usual in hook_schema().
+
+ * Just use the "Entity" directly or extend it with your own class.
+ To see how to provide a separate class have a look at the "EntityClass" from
+ the "entity_test.module".
+
+ * Implement hook_entity_info() for your entity. At least specifiy the
+ controller class (EntityAPIController, EntityAPIControllerExportable or your
+ own), your db table and your entity's keys.
+ Again just look at "entity_test.module"'s hook_entity_info() for guidance.
+
+ * If you want your entity to be fieldable just set 'fieldable' in
+ hook_entity_info() to TRUE. The field API attachers are then called
+ automatically in the entity CRUD functions.
+
+ * The entity API is able to deal with bundle objects too (e.g. the node type
+ object). For that just specify another entity type for the bundle objects
+ and set the 'bundle of' property for it.
+ Again just look at "entity_test.module"'s hook_entity_info() for guidance.
+
+ * Schema fields marked as 'serialized' are automatically unserialized upon
+ loading as well as serialized on saving. If the 'merge' attribute is also
+ set to TRUE the unserialized data is automatically "merged" into the entity.
+
+ * Further details can be found at http://drupal.org/node/878804.
+
+
+
+--------------------------------------------------------------------------------
+ Entity Properties & Entity metadata wrappers
+--------------------------------------------------------------------------------
+
+ * This module introduces a unique place for metadata about entity properties:
+ hook_entity_property_info(), whereas hook_entity_property_info() may be
+ placed in your module's {YOUR_MODULE}.info.inc include file. For details
+ have a look at the API documentation, i.e. hook_entity_property_info() and
+ at http://drupal.org/node/878876.
+
+ * The information about entity properties contains the data type and callbacks
+ for how to get and set the data of the property. That way the data of an
+ entity can be easily re-used, e.g. to export it into other data formats like
+ XML.
+
+ * For making use of this information (metadata) the module provides some
+ wrapper classes which ease getting and setting values. The wrapper supports
+ chained usage for retrieving wrappers of entity properties, e.g. to get a
+ node author's mail address one could use:
+
+ $wrapper = entity_metadata_wrapper('node', $node);
+ $wrapper->author->mail->value();
+
+ To update the user's mail address one could use
+
+ $wrapper->author->mail->set('sepp@example.com');
+
+ or
+
+ $wrapper->author->mail = 'sepp@example.com';
+
+ The wrappers always return the data as described in the property
+ information, which may be retrieved directly via entity_get_property_info()
+ or from the wrapper:
+
+ $mail_info = $wrapper->author->mail->info();
+
+ In order to force getting a textual value sanitized for output one can use,
+ e.g.
+
+ $wrapper->title->value(array('sanitize' => TRUE));
+
+ to get the sanitized node title. When a property is already returned
+ sanitized by default, like the node body, one possibly wants to get the
+ not-sanitized data as it would appear in a browser for other use-cases.
+ To do so one can enable the 'decode' option, which ensures for any sanitized
+ data the tags are stripped and HTML entities are decoded before the property
+ is returned:
+
+ $wrapper->body->value->value(array('decode' => TRUE));
+
+ That way one always gets the data as shown to the user. However if you
+ really want to get the raw, unprocessed value, even for sanitized textual
+ data, you can do so via:
+
+ $wrapper->body->value->raw();