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