You are here

function theme_youtube_video in YouTube Field 7

Theme function for videos.

1 theme call to theme_youtube_video()
youtube_field_formatter_view in ./youtube.module
Implements hook_field_formatter_view().

File

./youtube.theme.inc, line 11
Theme functions for the YouTube field module.

Code

function theme_youtube_video($variables) {
  global $base_root;
  $video_id = $variables['video_id'];

  // Get field display settings.
  $size = $variables['size'];
  $width = array_key_exists('width', $variables) ? $variables['width'] : NULL;
  $height = array_key_exists('height', $variables) ? $variables['height'] : NULL;
  $autoplay = array_key_exists('autoplay', $variables) ? $variables['autoplay'] : FALSE;
  $mute = array_key_exists('mute', $variables) ? $variables['mute'] : FALSE;
  $loop = array_key_exists('loop', $variables) ? $variables['loop'] : FALSE;
  $controls = array_key_exists('controls', $variables) ? $variables['controls'] : FALSE;
  $autohide = array_key_exists('autohide', $variables) ? $variables['autohide'] : FALSE;
  $iv_load_policy = array_key_exists('iv_load_policy', $variables) ? $variables['iv_load_policy'] : FALSE;
  $playsinline = array_key_exists('playsinline', $variables) ? $variables['playsinline'] : FALSE;
  $allow = array();
  if (array_key_exists('allow_autoplay', $variables)) {
    $allow[] = 'autoplay';
  }
  if (array_key_exists('allow_fullscreen', $variables)) {
    $allow[] = 'fullscreen';
  }

  // Get YouTube settings.
  $suggest = variable_get('youtube_suggest', TRUE);
  $modestbranding = variable_get('youtube_modestbranding', FALSE);
  $theme = variable_get('youtube_theme', FALSE);
  $color = variable_get('youtube_color', FALSE);
  $enablejsapi = variable_get('youtube_enablejsapi', FALSE);
  $player_class = variable_get('youtube_player_class', 'youtube-field-player');
  $wmode = variable_get('youtube_wmode', TRUE);
  $privacy = variable_get('youtube_privacy', FALSE);
  $dimensions = youtube_get_dimensions($size, $width, $height);

  // Query string changes based on settings.
  $query = array();
  if (!$suggest) {
    $query['rel'] = '0';
  }
  if ($modestbranding) {
    $query['modestbranding'] = '1';
  }
  if ($theme) {
    $query['theme'] = 'light';
  }
  if ($color) {
    $query['color'] = 'white';
  }
  if ($enablejsapi) {
    $query['enablejsapi'] = '1';
    $query['origin'] = $base_root;
  }
  if ($wmode) {
    $query['wmode'] = 'opaque';
  }
  if ($autoplay) {
    $query['autoplay'] = '1';
  }
  if ($mute) {
    $query['mute'] = '1';
  }
  if ($loop) {
    $query['loop'] = '1';
    $query['playlist'] = $video_id;
  }
  if ($controls) {
    $query['controls'] = '0';
  }
  if ($autohide) {
    $query['autohide'] = '1';
  }
  if ($iv_load_policy) {
    $query['iv_load_policy'] = '3';
  }
  if ($playsinline) {
    $query['playsinline'] = '1';
  }

  // If the override setting is enabled, add any additional parameters provided
  // in the initial field value to the query of the embedded video.
  if (variable_get('youtube_override')) {
    if ($url_parts = drupal_parse_url($variables['input'])) {
      foreach ($url_parts['query'] as $key => $value) {
        if ($key == 'v') {
          continue;
        }
        $query[$key] = $value;
      }
    }
  }

  // Domain changes based on settings.
  $domain = $privacy ? 'youtube-nocookie.com' : 'youtube.com';
  $path = 'https://www.' . $domain . '/embed/' . $video_id;
  $src = url($path, array(
    'query' => $query,
  ));
  $player_title = t('Embedded video');
  if (!empty($variables['entity_title'])) {
    $player_title .= ' ' . t('for @entity_title', array(
      '@entity_title' => $variables['entity_title'],
    ));
  }

  // Alternative content for browsers that don't understand iframes (WCAG).
  $alternative_content = l($player_title, $src);
  $attributes = array(
    'id' => drupal_html_id($player_class),
    'class' => $player_class,
    'width' => $dimensions['width'],
    'height' => $dimensions['height'],
    'src' => $src,
    'title' => $player_title,
    'frameborder' => "0",
    'allowfullscreen' => "",
    "allow" => implode('; ', $allow),
  );
  $output = '<iframe ' . drupal_attributes($attributes) . '>' . $alternative_content . '</iframe>';
  if ($size == 'responsive') {
    $output = '<div class="youtube-container--responsive">' . $output . '</div>';
  }
  return $output;
}