You are here

function date_entity_metadata_field_setter in Date 7.2

Same name and namespace in other branches
  1. 7.3 date.module \date_entity_metadata_field_setter()

Callback for setting field property values.

Based on entity_metadata_field_property_set(), the original property setter, adapted to transform non-timestamp date values to timestamps.

1 string reference to 'date_entity_metadata_field_setter'
date_entity_metadata_property_info_alter in ./date.module
Callback to alter the property info of date fields.

File

./date.module, line 706

Code

function date_entity_metadata_field_setter(&$entity, $name, $value, $langcode, $entity_type, $info) {
  $field = field_info_field($name);
  if (!isset($langcode)) {

    // Try to figure out the default language used by the entity.
    // @todo Update once http://drupal.org/node/1260640 has been fixed.
    $langcode = isset($entity->language) ? $entity->language : LANGUAGE_NONE;
  }
  $values = $field['cardinality'] == 1 ? array(
    $value,
  ) : (array) $value;
  $items = array();
  foreach ($values as $delta => $value) {

    // Make use of the struct setter to convert the date back to a timestamp.
    $info['field_name'] = $name;
    date_entity_metadata_struct_setter($items[$delta], 'value', $value, $langcode, 'struct', $info);
  }
  $entity->{$name}[$langcode] = $items;

  // Empty the static field language cache, so the field system picks up any
  // possible new languages.
  drupal_static_reset('field_language');
}