You are here

function _assets_in_editor_form_remove_non_overridable_fields in Asset 7

Remove unsupported for override field types.

Parameters

$form:

1 call to _assets_in_editor_form_remove_non_overridable_fields()
assets_override_form in includes/asset.admin.inc
Page callback for asset override form in wysiwyg.

File

includes/asset.admin.inc, line 468
Asset admin page callbacks.

Code

function _assets_in_editor_form_remove_non_overridable_fields(&$form) {
  $types = _assets_get_overridable_field_types();
  foreach (element_children($form) as $key) {

    // Skip broken form elements.
    if (empty($form[$key])) {
      continue;
    }
    $info = field_info_field($key);

    // If info is missed or unsupported, remove field.
    if (empty($info) || !isset($types[$info['type']])) {
      unset($form[$key]);
      continue;
    }
    $columns = $types[$info['type']];

    // For now we are using first col name to check if field required.
    // Later, we need to finda flexible way.
    $column = reset($columns);
    $lang_key = $form[$key]['#language'];
    $elements = $form[$key][$lang_key];
    foreach (element_children($elements) as $delta_key) {
      if (!empty($elements[$delta_key])) {

        // @TODO: Why we override only non-required?
        if (empty($form[$key][$lang_key][$delta_key][$column]['#required'])) {
          continue;
        }
        unset($form[$key]);
      }
    }
  }
}