You are here

function video_field_widget_value in Video 7.2

The #value_callback for the video field element.

This function loads additional information related to the video to be used in video_field_widget_process().

1 string reference to 'video_field_widget_value'
video_field_widget_form in ./video.field.inc
Implements hook_field_widget_form().

File

./video.field.inc, line 676
Implement a video field, based on the file module's file field.

Code

function video_field_widget_value($element, $input = FALSE, $form_state) {

  // file_field_widget_value() also takes care of adding $input to $value.
  $value = file_field_widget_value($element, $input, $form_state);

  // Extra default values.
  $value += array(
    'bypass_autoconversion' => variable_get('video_bypass_conversion', FALSE),
    'convert_video_on_save' => variable_get('video_convert_on_save', FALSE),
    'use_default_video_thumb' => variable_get('video_use_default_thumb', FALSE),
    'conversionstatus' => NULL,
    'fid' => 0,
    'thumbnail' => 0,
  );
  if ($value['fid'] > 0) {
    $transcoder = new Transcoder();
    if ($transcoder
      ->hasTranscoder()) {
      $video = video_jobs::load($value['fid']);
      if ($video) {

        // The dimensions may have been set from input, so check first to not
        // overwrite a change by the user.
        if (empty($value['dimensions'])) {
          $value['dimensions'] = $video->dimensions;
        }
        $value['conversionstatus'] = $video->video_status;

        // When there is a job, unselect "Bypass auto conversion" because it
        // would remove the converted files.
        $value['bypass_autoconversion'] = 0;
      }
      else {

        // No job (yet), find the video dimensions to use as default.
        if (empty($value['dimensions'])) {
          $video_ratio = _video_aspect_ratio($value);
          if (!empty($video_ratio['width']) && !empty($video_ratio['height'])) {
            $filedimensions = $video_ratio['width'] . 'x' . $video_ratio['height'];
            $alldimensions = video_utility::getDimensions();
            if (in_array($filedimensions, $alldimensions)) {
              $value['dimensions'] = $filedimensions;
            }
          }
        }

        // If there is no job, it might be because the user selected
        // "bypass autoconversion" previously. When the file is permanent,
        // this probably was the case.
        if (isset($value['status']) && $value['status'] == FILE_STATUS_PERMANENT) {
          $value['bypass_autoconversion'] = 1;
        }
      }
    }
  }

  // Find the values for thumbnail and use_default_video_thumb.
  if (!empty($value['thumbnailfile']) && !empty($value['thumbnailfile']->fid)) {
    $value['thumbnail'] = $value['thumbnailfile']->fid;
    $field = field_widget_field($element, $form_state);
    if (!empty($field['settings']['default_video_thumbnail']['fid'])) {
      if ($field['settings']['default_video_thumbnail']['fid'] == $value['thumbnail']) {
        $value['use_default_video_thumb'] = 1;
      }
    }
  }

  // Load the default dimensions when there is no file or input.
  if (empty($value['dimensions'])) {
    $alldimensions = video_utility::getDimensions();
    $instance = field_widget_instance($element, $form_state);
    if (in_array($instance['settings']['default_dimensions'], $alldimensions)) {
      $value['dimensions'] = $instance['settings']['default_dimensions'];
    }
    else {
      $value['dimensions'] = key($alldimensions);
    }
  }
  return $value;
}