function _assets_set_field_value in Asset 7
Helper function to override the optional asset field values.
2 calls to _assets_set_field_value()
- assets_override_form in includes/
asset.admin.inc - Page callback for asset override form in wysiwyg.
- assets_render_by_tag in includes/
asset.filters.inc - Renders asset with overridden optional fields.
File
- includes/
asset.filters.inc, line 102 - Assets Input filters logic.
Code
function _assets_set_field_value(&$asset, $values) {
$types = _assets_get_overridable_field_types();
foreach ($values as $field_name => $value) {
$field_info = field_info_field($field_name);
if (!isset($types[$field_info['type']])) {
continue;
}
// Re-fill fields with overridden values to remove extra deltas.
$asset->{$field_name} = [];
$columns = $types[$field_info['type']];
$langcode = field_language('asset', $asset, $field_name);
if (!$langcode) {
$langcode = LANGUAGE_NONE;
}
foreach ($value as $delta => $item_value) {
if (count($columns) > 1) {
if (is_array($item_value)) {
foreach ($columns as $column) {
$asset->{$field_name}[$langcode][$delta][$column] = $item_value[$column];
}
}
else {
$column = reset($columns);
$asset->{$field_name}[$langcode][$delta][$column] = $item_value;
$asset->{$field_name}[$langcode][$delta]['format'] = NULL;
}
}
else {
$column = reset($columns);
$asset->{$field_name}[$langcode][$delta][$column] = $item_value;
}
}
}
}