summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAngie Byron <webchick@24967.no-reply.drupal.org>2010-01-13 04:37:03 +0000
committerAngie Byron <webchick@24967.no-reply.drupal.org>2010-01-13 04:37:03 +0000
commit52f99dc071428a1490d0d367e95706a65f5b3d17 (patch)
tree1849fb9cf3ad6237ba6735aff09ac1665bd8dc96
parentac581679b00ec8baa4f9a94ad90af050de870efd (diff)
downloadbrdo-52f99dc071428a1490d0d367e95706a65f5b3d17.tar.gz
brdo-52f99dc071428a1490d0d367e95706a65f5b3d17.tar.bz2
#645926 by Damien Tournoud and yched: hook_field_storage_details() should be per-field, not per-instance. Allows Views/Field integration to get unblocked.
-rw-r--r--modules/field/field.api.php11
-rw-r--r--modules/field/field.info.inc10
-rw-r--r--modules/field/modules/field_sql_storage/field_sql_storage.module2
-rw-r--r--modules/field/modules/field_sql_storage/field_sql_storage.test4
-rw-r--r--modules/field/tests/field.test4
-rw-r--r--modules/field/tests/field_test.storage.inc4
6 files changed, 14 insertions, 21 deletions
diff --git a/modules/field/field.api.php b/modules/field/field.api.php
index c4e364855..89f3e6a9b 100644
--- a/modules/field/field.api.php
+++ b/modules/field/field.api.php
@@ -1134,8 +1134,6 @@ function hook_field_storage_info_alter(&$info) {
*
* @param $field
* A field structure.
- * @param $instance
- * A field instance structure.
* @return
* An array of details.
* - The first dimension is a store type (sql, solr, etc).
@@ -1143,24 +1141,19 @@ function hook_field_storage_info_alter(&$info) {
* FIELD_LOAD_CURRENT or FIELD_LOAD_REVISION.
* - Other dimensions are specific to the field storage module.
*/
-function hook_field_storage_details($field, $instance) {
+function hook_field_storage_details($field) {
}
/**
* Perform alterations on Field API storage details.
*
- * The storage details are appended to the field instance structure after this
- * hook is invoked. Read and alter the $details only.
- *
* @param $details
* An array of storage details for fields as exposed by
* hook_field_storage_details() implementations.
* @param $field
* A field structure.
- * @param $instance
- * A field instance structure.
*/
-function hook_field_storage_details_alter(&$details, $field, $instance) {
+function hook_field_storage_details_alter(&$details, $field) {
}
/**
diff --git a/modules/field/field.info.inc b/modules/field/field.info.inc
index 8c71418c9..d4837cc96 100644
--- a/modules/field/field.info.inc
+++ b/modules/field/field.info.inc
@@ -223,11 +223,6 @@ function _field_info_collate_fields($reset = FALSE) {
// are thus not in $definitions['instances'].
$info['fields'][$instance['field_name']]['bundles'][$instance['object_type']][] = $instance['bundle'];
$info['field_ids'][$instance['field_id']]['bundles'][$instance['object_type']][] = $instance['bundle'];
-
- // Add storage details.
- $details = (array) module_invoke($field['storage']['module'], 'field_storage_details', $field, $instance);
- drupal_alter('field_storage_details', $details, $field, $instance);
- $info['instances'][$instance['object_type']][$instance['bundle']][$instance['field_name']]['storage_details'] = $details;
}
}
@@ -248,6 +243,11 @@ function _field_info_prepare_field($field) {
$field['settings'] += field_info_field_settings($field['type']);
$field['storage']['settings'] += field_info_storage_settings($field['storage']['type']);
+ // Add storage details.
+ $details = (array) module_invoke($field['storage']['module'], 'field_storage_details', $field);
+ drupal_alter('field_storage_details', $details, $field, $instance);
+ $field['storage']['details'] = $details;
+
return $field;
}
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 0231e94ce..bc0d379d8 100644
--- a/modules/field/modules/field_sql_storage/field_sql_storage.module
+++ b/modules/field/modules/field_sql_storage/field_sql_storage.module
@@ -678,7 +678,7 @@ function field_sql_storage_field_storage_purge_field($field) {
/**
* Implements hook_field_storage_details().
*/
-function field_sql_storage_field_storage_details($field, $instance) {
+function field_sql_storage_field_storage_details($field) {
$details = array();
// Add field columns.
diff --git a/modules/field/modules/field_sql_storage/field_sql_storage.test b/modules/field/modules/field_sql_storage/field_sql_storage.test
index 3c0650b85..ceb5eeb64 100644
--- a/modules/field/modules/field_sql_storage/field_sql_storage.test
+++ b/modules/field/modules/field_sql_storage/field_sql_storage.test
@@ -383,10 +383,10 @@ class FieldSqlStorageTestCase extends DrupalWebTestCase {
$instance = field_info_instance($this->instance['object_type'], $this->instance['field_name'], $this->instance['bundle']);
// The storage details are indexed by a storage engine type.
- $this->assertTrue(array_key_exists('sql', $instance['storage_details']), t('The storage type is SQL.'));
+ $this->assertTrue(array_key_exists('sql', $field['storage']['details']), t('The storage type is SQL.'));
// The SQL details are indexed by table name.
- $details = $instance['storage_details']['sql'];
+ $details = $field['storage']['details']['sql'];
$this->assertTrue(array_key_exists($current, $details[FIELD_LOAD_CURRENT]), t('Table name is available in the instance array.'));
$this->assertTrue(array_key_exists($revision, $details[FIELD_LOAD_REVISION]), t('Revision table name is available in the instance array.'));
diff --git a/modules/field/tests/field.test b/modules/field/tests/field.test
index f4ba5a8cc..b207bb55e 100644
--- a/modules/field/tests/field.test
+++ b/modules/field/tests/field.test
@@ -328,9 +328,9 @@ class FieldAttachStorageTestCase extends FieldAttachTestCase {
$instance = field_info_instance($instance['object_type'], $instance['field_name'], $instance['bundle']);
// The storage details are indexed by a storage engine type.
- $this->assertTrue(array_key_exists('drupal_variables', $instance['storage_details']), t('The storage type is Drupal variables.'));
+ $this->assertTrue(array_key_exists('drupal_variables', $field['storage']['details']), t('The storage type is Drupal variables.'));
- $details = $instance['storage_details']['drupal_variables'];
+ $details = $field['storage']['details']['drupal_variables'];
// The field_test storage details are indexed by variable name. The details
// are altered, so moon and mars are correct for this test.
diff --git a/modules/field/tests/field_test.storage.inc b/modules/field/tests/field_test.storage.inc
index dd9e2eb89..e85c832cf 100644
--- a/modules/field/tests/field_test.storage.inc
+++ b/modules/field/tests/field_test.storage.inc
@@ -26,7 +26,7 @@ function field_test_field_storage_info() {
/**
* Implements hook_field_storage_details().
*/
-function field_test_field_storage_details($field, $instance) {
+function field_test_field_storage_details($field) {
$details = array();
// Add field columns.
@@ -47,7 +47,7 @@ function field_test_field_storage_details($field, $instance) {
*
* @see FieldAttachStorageTestCase::testFieldStorageDetailsAlter()
*/
-function field_test_field_storage_details_alter(&$details, $field, $instance) {
+function field_test_field_storage_details_alter(&$details, $field) {
// For testing, storage details are changed only because of the field name.
if ($field['field_name'] == 'field_test_change_my_details') {