You are here

function image_field_caption_form_submit_handler in Image Field Caption 7

A #submit callback for node forms with image fields.

1 string reference to 'image_field_caption_form_submit_handler'
image_field_caption_form_alter in ./image_field_caption.module
Implements hook_form_alter().

File

./image_field_caption.module, line 188
Provides a caption textarea for image fields.

Code

function image_field_caption_form_submit_handler($form, &$form_state) {

  // For each image field, iterate over each delta in the form state values
  // for the image field. We only care about deltas that have a file id. If
  // we have a caption, save the results in the database, otherwise delete
  // any old records.
  $image_fields = image_field_caption_get_image_fields('node', $form['type']['#value']);
  if ($image_fields) {
    foreach ($image_fields as $field_name => $field) {
      $delta = 0;
      while (isset($form_state['values'][$field_name]['und'][$delta]['fid'])) {
        $fid = $form_state['values'][$field_name]['und'][$delta]['fid'];
        if ($fid != 0 && isset($form_state['values'][$field_name]['und'][$delta]['caption'])) {
          $caption = $form_state['values'][$field_name]['und'][$delta]['caption'];
          if ($caption != '') {
            $result = db_select('image_field_caption', 'ifc')
              ->fields('ifc', array(
              'fid',
            ))
              ->condition('fid', $fid)
              ->execute()
              ->fetch();
            if (isset($result->fid)) {
              $result = db_update('image_field_caption')
                ->fields(array(
                'caption' => $caption,
              ))
                ->condition('fid', $fid)
                ->execute();
            }
            else {
              $result = db_insert('image_field_caption')
                ->fields(array(
                'fid' => $fid,
                'caption' => $caption,
              ))
                ->execute();
            }
          }
          else {
            if ($form_state['values']['nid']) {
              db_delete('image_field_caption')
                ->condition('fid', $fid)
                ->execute();
            }
          }
        }
        $delta++;
      }
    }
  }
}