You are here

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;
      }
    }
  }
}