You are here

function video_embed_field_field_formatter_prepare_view in Video Embed Field 7

Implementation of hook_field_formatter_prepare_view Prepare the view of the video embed - if the embed code doesn't exist, create it using the url

File

./video_embed_field.module, line 186

Code

function video_embed_field_field_formatter_prepare_view($entity_type, $entities, $field, $instances, $langcode, &$items, $displays) {
  $handlers = video_embed_get_handlers();
  foreach ($items as $delta => $item_wrapper) {
    foreach ($item_wrapper as $key => $item) {
      if (!stristr($item['video_url'], 'http://') && !stristr($item['video_url'], 'https://')) {
        $item['video_url'] = 'http://' . $item['video_url'];
      }
      $parts = parse_url($item['video_url']);

      //make sure bad data won't mess everything up
      if (!isset($parts['host'])) {
        $items[$delta][$key]['embed_code'] = l($item['video_url'], $item['video_url']);
        return;
      }
      $host = $parts['host'];
      if (stripos($host, 'www.') > -1) {
        $host = substr($host, 4);
      }

      //make our host all lowercase so that it'll properly match the index
      $host = strtolower($host);
      if (isset($handlers[$host]['function']) && function_exists($handlers[$host]['function'])) {

        //get what type of display it is
        $display = $displays[$delta]['type'];
        if (isset($instances[$delta]['settings']['playback_settings'])) {
          $settings = $instances[$delta]['settings']['playback_settings'][$handlers[$host]['title']];
          $settings = array_merge($handlers[$host]['defaults'], $settings);
        }
        else {
          $settings = $handlers[$host]['defaults'];
        }
        if ($display == 'video_embed_field_formatter_teaser') {
          $items[$delta][$key]['embed_code'] = call_user_func($handlers[$host]['function'], $item['video_url'], $settings, 'teaser');
        }
        else {
          if ($display == 'video_embed_field_formatter_image_small') {
            $items[$delta][$key]['embed_code'] = call_user_func($handlers[$host]['function'], $item['video_url'], $settings, 'image', 'small');
          }
          else {
            if ($display == 'video_embed_field_formatter_image_medium') {
              $items[$delta][$key]['embed_code'] = call_user_func($handlers[$host]['function'], $item['video_url'], $settings, 'image', 'medium');
            }
            else {
              if ($display == 'video_embed_field_formatter_image_large') {
                $items[$delta][$key]['embed_code'] = call_user_func($handlers[$host]['function'], $item['video_url'], $settings, 'image', 'large');
              }
              else {
                $items[$delta][$key]['embed_code'] = call_user_func($handlers[$host]['function'], $item['video_url'], $settings);
              }
            }
          }
        }
      }
      else {
        $items[$delta][$key]['embed_code'] = l($item['video_url'], $item['video_url']);
      }
    }
  }
}