function _field_sql_storage_write_compare_filter

Cleanup field values for later values comparison.

Parameters

array $field: Field info as returned by field_info_field_by_id().

array $array: Field values to cleanup.

Return value

array Filtered values.

1 call to _field_sql_storage_write_compare_filter()
_field_sql_storage_write_compare in modules/field/modules/field_sql_storage/field_sql_storage.module
Compare a single field value for both entities and tell us if it changed.

File

modules/field/modules/field_sql_storage/field_sql_storage.module, line 468

Code

function _field_sql_storage_write_compare_filter($field, $array) {
    foreach ($array as $language => $items) {
        if (empty($items)) {
            unset($array[$language]);
        }
        else {
            foreach ($items as $delta => $item) {
                // This should not happen but some modules provide invalid data to the
                // field API.
                if (!is_array($item)) {
                    continue;
                }
                // Let's start by pruning empty values and non storable values.
                $array[$language][$delta] = array_filter(array_intersect_key($item, $field['columns']), '_field_sql_storage_write_compare_filter_callback');
                // Ordering is important because for widget elements and loaded columns
                // from database order might differ and give false positives on field
                // value change, especially with complex fields such as image fields.
                ksort($array[$language][$delta]);
            }
        }
    }
    return $array;
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.