summaryrefslogtreecommitdiff
path: root/modules/field/field.crud.inc
diff options
context:
space:
mode:
Diffstat (limited to 'modules/field/field.crud.inc')
-rw-r--r--modules/field/field.crud.inc32
1 files changed, 20 insertions, 12 deletions
diff --git a/modules/field/field.crud.inc b/modules/field/field.crud.inc
index b69baff28..1cc95217e 100644
--- a/modules/field/field.crud.inc
+++ b/modules/field/field.crud.inc
@@ -823,6 +823,9 @@ function field_read_instance($obj_type, $field_name, $bundle, $include_additiona
* An array of instances matching the arguments.
*/
function field_read_instances($params = array(), $include_additional = array()) {
+ $include_inactive = isset($include_additional['include_inactive']) && $include_additional['include_inactive'];
+ $include_deleted = isset($include_additional['include_deleted']) && $include_additional['include_deleted'];
+
$query = db_select('field_config_instance', 'fci', array('fetch' => PDO::FETCH_ASSOC));
$query->join('field_config', 'fc', 'fc.id = fci.field_id');
$query->fields('fci');
@@ -831,12 +834,12 @@ function field_read_instances($params = array(), $include_additional = array())
foreach ($params as $key => $value) {
$query->condition('fci.' . $key, $value);
}
- if (!isset($include_additional['include_inactive']) || !$include_additional['include_inactive']) {
+ if (!$include_inactive) {
$query
->condition('fc.active', 1)
->condition('fc.storage_active', 1);
}
- if (!isset($include_additional['include_deleted']) || !$include_additional['include_deleted']) {
+ if (!$include_deleted) {
$query->condition('fc.deleted', 0);
$query->condition('fci.deleted', 0);
}
@@ -845,16 +848,21 @@ function field_read_instances($params = array(), $include_additional = array())
$results = $query->execute();
foreach ($results as $record) {
- $instance = unserialize($record['data']);
- $instance['id'] = $record['id'];
- $instance['field_id'] = $record['field_id'];
- $instance['field_name'] = $record['field_name'];
- $instance['object_type'] = $record['object_type'];
- $instance['bundle'] = $record['bundle'];
- $instance['deleted'] = $record['deleted'];
-
- module_invoke_all('field_read_instance', $instance);
- $instances[] = $instance;
+ // Filter out instances on unknown object types (for instance because the
+ // module exposing them was disabled).
+ $entity_info = entity_get_info($record['object_type']);
+ if ($include_inactive || $entity_info) {
+ $instance = unserialize($record['data']);
+ $instance['id'] = $record['id'];
+ $instance['field_id'] = $record['field_id'];
+ $instance['field_name'] = $record['field_name'];
+ $instance['object_type'] = $record['object_type'];
+ $instance['bundle'] = $record['bundle'];
+ $instance['deleted'] = $record['deleted'];
+
+ module_invoke_all('field_read_instance', $instance);
+ $instances[] = $instance;
+ }
}
return $instances;
}