You are here

public function video_helper::video_object in Video 6.5

Same name and namespace in other branches
  1. 6.4 includes/video_helper.inc \video_helper::video_object()
  2. 7 includes/video_helper.inc \video_helper::video_object()

File

includes/video_helper.inc, line 7

Class

video_helper

Code

public function video_object($element) {
  $field = content_fields($element['#field_name'], $element['#type_name']);

  // Setup our width x height
  $dimensions = explode("x", $element['#item']['data']['dimensions']);
  $player_dimensions = explode("x", $element['#item']['data']['player_dimensions']);
  if (!isset($dimensions[0]) || !isset($dimensions[1])) {
    $dimensions = explode("x", $field['widget']['default_dimensions']);
    if (!isset($dimensions[0]) || !isset($dimensions[1])) {
      drupal_set_message(t('Something is wrong with your dimensions.  Make sure you enter dimensions in the form of WxH.'), 'error');
    }
  }
  if (!isset($player_dimensions[0]) || !isset($player_dimensions[1])) {
    $player_dimensions = explode("x", $field['widget']['default_player_dimensions']);
    if (!isset($player_dimensions[0]) || !isset($player_dimensions[1])) {
      drupal_set_message(t('Something is wrong with your player dimensions.  Make sure you enter the player dimensions in the form of WxH.'), 'error');
    }
  }
  $extension = drupal_strtolower(pathinfo($element['#item']['filename'], PATHINFO_EXTENSION));
  if (empty($extension)) {
    drupal_set_message(t('Could not determine the extension of filename @filename for node @node-title, element @element-title, item @item', array(
      '@filename' => $element['#item']['filename'],
      '@node-title' => $element['#node']->node_title,
      '@element-title' => $field['widget']['label'],
      '@item' => $element['#item']['#delta'],
    )), 'error');
    return NULL;
  }

  // Build our video object for all types.
  $video = new stdClass();
  $video->fid = $element['#item']['fid'];
  $video->original = $element['#item'];
  $video->files = new stdClass();
  $video->files->{$extension} = new stdClass();
  $video->files->{$extension}->filename = pathinfo($element['#item']['filepath'], PATHINFO_FILENAME) . '.' . $extension;
  $video->files->{$extension}->filepath = $element['#item']['filepath'];
  $video->files->{$extension}->url = file_create_url($element['#item']['filepath']);
  $video->files->{$extension}->filemime = $element['#item']['filemime'];
  $video->files->{$extension}->extension = $extension;
  $video->player = $extension;
  $video->width = trim($dimensions[0]);
  $video->height = trim($dimensions[1]);
  $video->player_width = trim($player_dimensions[0]);
  $video->player_height = trim($player_dimensions[1]);
  $video->thumbnail = $this
    ->thumbnail_object($element);
  $video->formatter = $element['#formatter'];
  $video->autoplay = variable_get('video_autoplay', TRUE);
  $video->autobuffering = variable_get('video_autobuffering', TRUE);
  $video->theora_player = variable_get('video_ogg_player', 'http://theora.org/cortado.jar');

  // lets find out if we have transcoded this file and update our paths.
  if (isset($field['widget']['autoconversion']) && $field['widget']['autoconversion'] && !$element['#item']['data']['bypass_autoconversion']) {

    // discard all existing file data
    $video->files = new stdClass();
    $transcoder = video_get_transcoder();
    $transcoder
      ->load_completed_job($video);
  }
  $filesystem = video_get_filesystem();
  $filesystem
    ->load_file($video);

  // Moved to last to recheck incase we changed our extension above.
  $video->flash_player = variable_get('video_extension_' . $video->player . '_flash_player', '');
  $video->html5_player = variable_get('video_extension_' . $video->player . '_html5_player', '');

  // Return our object
  return $video;
}