summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
authorwebchick <webchick@24967.no-reply.drupal.org>2012-03-11 22:48:23 -0700
committerwebchick <webchick@24967.no-reply.drupal.org>2012-03-11 22:48:23 -0700
commitf145e08cfd0c67f05ec83eb14c584acfd171d9f7 (patch)
treecb76f130208edbe60655c6530e97b24a38e14cc2 /modules
parent473dc563f570eef27ed1d67c8b55b3e2e2766a00 (diff)
downloadbrdo-f145e08cfd0c67f05ec83eb14c584acfd171d9f7.tar.gz
brdo-f145e08cfd0c67f05ec83eb14c584acfd171d9f7.tar.bz2
Issue #1245332 by Dave Reid, rfay, willvincent: Fixed Warning when all bundles removed from an entity.
Diffstat (limited to 'modules')
-rw-r--r--modules/field/field.info.inc14
-rw-r--r--modules/field/tests/field.test26
2 files changed, 31 insertions, 9 deletions
diff --git a/modules/field/field.info.inc b/modules/field/field.info.inc
index 3b36c0355..e7eaaf0c6 100644
--- a/modules/field/field.info.inc
+++ b/modules/field/field.info.inc
@@ -680,16 +680,16 @@ function field_info_field_by_ids() {
*/
function field_info_instances($entity_type = NULL, $bundle_name = NULL) {
$info = _field_info_collate_fields();
- if (!isset($entity_type)) {
- return $info['instances'];
+
+ if (isset($entity_type) && isset($bundle_name)) {
+ return isset($info['instances'][$entity_type][$bundle_name]) ? $info['instances'][$entity_type][$bundle_name] : array();
}
- if (!isset($bundle_name)) {
- return $info['instances'][$entity_type];
+ elseif (isset($entity_type)) {
+ return isset($info['instances'][$entity_type]) ? $info['instances'][$entity_type] : array();
}
- if (isset($info['instances'][$entity_type][$bundle_name])) {
- return $info['instances'][$entity_type][$bundle_name];
+ else {
+ return $info['instances'];
}
- return array();
}
/**
diff --git a/modules/field/tests/field.test b/modules/field/tests/field.test
index 70dc1a62a..df58ecbd9 100644
--- a/modules/field/tests/field.test
+++ b/modules/field/tests/field.test
@@ -1079,11 +1079,14 @@ class FieldInfoTestCase extends FieldTestCase {
}
// Verify that no unexpected instances exist.
- $core_fields = field_info_fields();
+ $instances = field_info_instances('test_entity');
+ $expected = array('test_bundle' => array());
+ $this->assertIdentical($instances, $expected, "field_info_instances('test_entity') returns " . var_export($expected, TRUE) . '.');
$instances = field_info_instances('test_entity', 'test_bundle');
- $this->assertTrue(empty($instances), t('With no instances, info bundles is empty.'));
+ $this->assertIdentical($instances, array(), "field_info_instances('test_entity', 'test_bundle') returns an empty array.");
// Create a field, verify it shows up.
+ $core_fields = field_info_fields();
$field = array(
'field_name' => drupal_strtolower($this->randomName()),
'type' => 'test_field',
@@ -1119,6 +1122,25 @@ class FieldInfoTestCase extends FieldTestCase {
$instances = field_info_instances('test_entity', $instance['bundle']);
$this->assertEqual(count($instances), 1, t('One instance shows up in info when attached to a bundle.'));
$this->assertTrue($instance < $instances[$instance['field_name']], t('Instance appears in info correctly'));
+
+ // Test a valid entity type but an invalid bundle.
+ $instances = field_info_instances('test_entity', 'invalid_bundle');
+ $this->assertIdentical($instances, array(), "field_info_instances('test_entity', 'invalid_bundle') returns an empty array.");
+
+ // Test invalid entity type and bundle.
+ $instances = field_info_instances('invalid_entity', $instance['bundle']);
+ $this->assertIdentical($instances, array(), "field_info_instances('invalid_entity', 'test_bundle') returns an empty array.");
+
+ // Test invalid entity type, no bundle provided.
+ $instances = field_info_instances('invalid_entity');
+ $this->assertIdentical($instances, array(), "field_info_instances('invalid_entity') returns an empty array.");
+
+ // Test with an entity type that has no bundles.
+ $instances = field_info_instances('user');
+ $expected = array('user' => array());
+ $this->assertIdentical($instances, $expected, "field_info_instances('user') returns " . var_export($expected, TRUE) . '.');
+ $instances = field_info_instances('user', 'user');
+ $this->assertIdentical($instances, array(), "field_info_instances('user', 'user') returns an empty array.");
}
/**