From 38e5e907acadd70736fbb5bff2435ae4624b639f Mon Sep 17 00:00:00 2001 From: Dries Buytaert <dries@buytaert.net> Date: Fri, 13 Mar 2009 21:25:40 +0000 Subject: [PATCH] - Patch #369785 by bjaspan, venkatd, linolium: define constants for field storage. --- modules/field/field.api.php | 8 ++++---- modules/field/field.attach.inc | 18 ++++++++++++++++-- .../field_sql_storage/field_sql_storage.module | 4 ++-- 3 files changed, 22 insertions(+), 8 deletions(-) diff --git a/modules/field/field.api.php b/modules/field/field.api.php index 018f4bf96657..27871e736b20 100644 --- a/modules/field/field.api.php +++ b/modules/field/field.api.php @@ -556,11 +556,11 @@ function hook_field_storage_load($obj_type, $queried_objs, $age) { * The entity type of object, such as 'node' or 'user'. * @param $object * The object on which to operate. - * @param $update - * TRUE if this is an update to an existing object, FALSE if it is - * an insert of a new object. + * @param $op + * FIELD_STORAGE_UPDATE when updating an existing object, + * FIELD_STORAGE_INSERT when inserting a new object. */ -function hook_field_storage_write($obj_type, $object, $update = TRUE) { +function hook_field_storage_write($obj_type, $object, $op) { } /** diff --git a/modules/field/field.attach.inc b/modules/field/field.attach.inc index 511b7bcbed4e..4ce7d8e69420 100644 --- a/modules/field/field.attach.inc +++ b/modules/field/field.attach.inc @@ -29,6 +29,20 @@ * The Drupal system variable field_storage_module identifies the * field storage module to use. */ + +/** + * Argument for an insert operation. + * This is used in hook_field_storage_write when updating an + * existing object. + */ +define('FIELD_STORAGE_UPDATE', 'update'); + +/** + * Argument for an update operation. + * This is used in hook_field_storage_write when inserting a new object. + */ +define('FIELD_STORAGE_INSERT', 'insert'); + /** * @} End of "defgroup field_storage" */ @@ -386,7 +400,7 @@ function _field_attach_insert($obj_type, &$object) { } _field_invoke('insert', $obj_type, $object); - module_invoke(variable_get('field_storage_module', 'field_sql_storage'), 'field_storage_write', $obj_type, $object); + module_invoke(variable_get('field_storage_module', 'field_sql_storage'), 'field_storage_write', $obj_type, $object, FIELD_STORAGE_INSERT); list($id, $vid, $bundle, $cacheable) = field_attach_extract_ids($obj_type, $object); if ($cacheable) { @@ -411,7 +425,7 @@ function _field_attach_update($obj_type, &$object) { } _field_invoke('update', $obj_type, $object); - module_invoke(variable_get('field_storage_module', 'field_sql_storage'), 'field_storage_write', $obj_type, $object, TRUE); + module_invoke(variable_get('field_storage_module', 'field_sql_storage'), 'field_storage_write', $obj_type, $object, FIELD_STORAGE_UPDATE); list($id, $vid, $bundle, $cacheable) = field_attach_extract_ids($obj_type, $object); if ($cacheable) { diff --git a/modules/field/modules/field_sql_storage/field_sql_storage.module b/modules/field/modules/field_sql_storage/field_sql_storage.module index ee17c62a7b39..774d275bde16 100644 --- a/modules/field/modules/field_sql_storage/field_sql_storage.module +++ b/modules/field/modules/field_sql_storage/field_sql_storage.module @@ -229,7 +229,7 @@ function field_sql_storage_field_storage_load($obj_type, $objects, $age) { return $additions; } -function field_sql_storage_field_storage_write($obj_type, $object, $update = FALSE) { +function field_sql_storage_field_storage_write($obj_type, $object, $op) { list($id, $vid, $bundle) = field_attach_extract_ids($obj_type, $object); $etid = _field_sql_storage_etid($obj_type); @@ -247,7 +247,7 @@ function field_sql_storage_field_storage_write($obj_type, $object, $update = FAL // where it's an empty array with the faster isset(). if (isset($object->$field_name) || property_exists($object, $field_name)) { // Delete and insert, rather than update, in case a value was added. - if ($update) { + if ($op == FIELD_STORAGE_UPDATE) { db_delete($table_name)->condition('etid', $etid)->condition('entity_id', $id)->execute(); if (isset($vid)) { db_delete($revision_name)->condition('etid', $etid)->condition('entity_id', $id)->condition('revision_id', $vid)->execute(); -- GitLab