You are here

media_soundcloud.theme.inc in Media: SoundCloud 7

media_soundcloud/includes/themes/media_soundcloud.theme.inc

Theme and preprocess functions for Media: SoundCloud.

File

includes/themes/media_soundcloud.theme.inc
View source
<?php

/**
 * @file media_soundcloud/includes/themes/media_soundcloud.theme.inc
 *
 * Theme and preprocess functions for Media: SoundCloud.
 */

/**
 * Preprocess function for theme('media_soundcloud_audio').
 */
function media_soundcloud_preprocess_media_soundcloud_audio(&$variables) {

  //drupal_set_message("media_soundcloud_preprocess_media_soundcloud_audio");

  // Build the URL for display.
  $uri = $variables['uri'];
  $wrapper = file_stream_wrapper_get_instance_by_uri($uri);
  $parts = $wrapper
    ->get_parameters();

  //drupal_set_message(print_r($wrapper,true));
  $url = $wrapper
    ->interpolateUrl();

  //drupal_set_message(print_r($url,true));
  if (isset($parts['u'])) {
    $variables['user_name'] = check_plain($parts['u']);
    $variables['wrapper_id'] = 'media_soundcloud_' . $variables['user_name'] . '_' . $variables['id'];
  }
  if (isset($parts['a'])) {
    $variables['audio_name'] = check_plain($parts['a']);
    $variables['wrapper_id'] = 'media_soundcloud_' . $variables['audio_name'] . '_' . $variables['id'];
  }
  if (isset($parts['g'])) {
    $variables['group_name'] = check_plain($parts['g']);
    $variables['wrapper_id'] = 'media_soundcloud_' . $variables['group_name'] . '_' . $variables['id'];
  }
  if (isset($parts['s'])) {
    $variables['set_name'] = check_plain($parts['s']);
    $variables['wrapper_id'] = 'media_soundcloud_' . $variables['set_name'] . '_' . $variables['id'];
  }
  $variables['width'] = isset($variables['width']) ? $variables['width'] : media_soundcloud_variable_get('width');
  $variables['autoplay'] = isset($variables['autoplay']) ? $variables['autoplay'] : media_soundcloud_variable_get('autoplay');
  $variables['autoplay'] = $variables['autoplay'] ? 1 : 0;

  //Explode the values in extra_params
  $variables['extra_params'] = isset($variables['extra_params']) ? $variables['extra_params'] : media_soundcloud_variable_get('extra_params');
  $variables['extra_params_expanded'] = array();
  if ($variables['extra_params']) {
    foreach (explode(',', $variables['extra_params']) as $key => $value) {
      $value_pair = explode(':', $value);
      if (count($value_pair) == 2) {

        // some degree of check, though it is largely dependent on site admin to set sensible values
        $variables['extra_params_expanded'][trim($value_pair[0])] = trim($value_pair[1]);
      }
    }
  }
  $variables['widget_options'] = array_merge(array(
    'auto_play' => $variables['autoplay'] ? 'true' : 'false',
  ), $variables['extra_params_expanded']);
  $embed_data = $wrapper
    ->getOEmbed($url, $variables['widget_options']);
  $variables['output'] = str_replace('width="100%"', 'width="' . $variables['width'] . '"', $embed_data['html']);
}
function theme_media_soundcloud_field_formatter_styles($variables) {
  drupal_set_message("theme_media_soundcloud_field_formatter_styles");
  $element = $variables['element'];
  $style = $variables['style'];
  $variables['file'] = $element['#item'];
  $variables['uri'] = $variables['file']['uri'];
  $variables['style_name'] = $style['name'];
  return theme('media_soundcloud_embed', $variables);
}

/**
 * Preview for Styles UI.
 */
function theme_media_soundcloud_preview_style($variables) {

  //drupal_set_message("theme_media_soundcloud_preview_style");
  $variables['uri'] = media_soundcloud_variable_get('preview_uri');
  $variables['field_type'] = 'file';
  $variables['object'] = file_uri_to_object($variables['uri']);
  return theme('styles', $variables);
}

/**
 * NOTE: Deprecated with Styles version 2.
 */
function theme_media_soundcloud_styles($variables) {

  //drupal_set_message("theme_media_soundcloud_styles");
  $style = $variables['style'];
  $variables['file'] = $variables['object'];
  $variables['uri'] = $variables['object']->uri;
  $variables['style_name'] = $style['name'];
  return theme('media_soundcloud_embed', $variables);
}

/**
 * @todo: get this working
 *
 * This code is for embedding audios in WYSIYWG areas, not currently working.
 * NOTE: Deprecated with Styles version 2.
 */
function theme_media_soundcloud_embed($variables) {

  //drupal_set_message("theme_media_soundcloud_embed");
  $preset_name = $variables['preset_name'];
  $preset = styles_containers_available_styles('file', 'media_soundcloud', $preset_name);
  $output = '';
  if (!empty($preset)) {

    // Build the URL for display.
    $uri = $variables['uri'];
    $wrapper = file_stream_wrapper_get_instance_by_uri($uri);
    $parts = $wrapper
      ->get_parameters();
    $in_browser = $thumbnail = FALSE;
    foreach ($preset['effects'] as $effect) {
      switch ($effect['name']) {
        case 'autoplay':
          $autoplay = $effect['data']['autoplay'] ? 'true' : 'false';
          break;
        case 'resize':
          $width = $effect['data']['width'];
          break;
        case 'thumbnail':
          $thumbnail = $effect['data']['thumbnail'];
      }
    }
    if (isset($variables['object']->override)) {
      $override = $variables['object']->override;
      if (isset($override['width'])) {
        $width = $override['width'];
      }
      if (isset($override['wysiwyg'])) {
        $thumbnail = TRUE;
      }
      if (isset($override['browser']) && $override['browser']) {
        $in_browser = TRUE;
        $thumbnail = TRUE;
      }
    }
    $width = isset($width) ? $width : media_soundcloud_variable_get('width');
    $user_name = check_plain($parts['u']);
    $audio_name = check_plain($parts['a']);
    if ($thumbnail) {

      // @todo Clean this up.
      $image_variables = array(
        'path' => $wrapper
          ->getOriginalThumbnailPath(),
        'alt' => $variables['alt'],
        'title' => $variables['title'],
        'getsize' => FALSE,
      );
      if (isset($preset['image_style'])) {
        $image_variables['path'] = $wrapper
          ->getLocalThumbnailPath();
        $image_variables['style_name'] = $preset['image_style'];
        $output = theme('image_style', $image_variables);
      }
      else {

        // We need to add this style attribute here so that it doesn't get lost
        // If you resize a audio in a node, save it, edit it, but don't adjust
        // the sizing of the audio while editing, the size will revert to the
        // default.  Adding the specific size here retains the original resizing
        $WYSIWYG = isset($variables['object']->override['style']) ? $variables['object']->override['style'] : '';
        $image_variables['attributes'] = array(
          'width' => $width,
          'style' => $WYSIWYG,
        );
        $output = theme('image', $image_variables);
      }
      if ($in_browser) {

        // Add an overlay that says 'SoundCloud' to media library browser thumbnails.
        $output .= '<span />';
      }
    }
    else {
      $output = theme('media_soundcloud_audio', array(
        'uri' => $uri,
        'width' => $width,
        'autoplay' => $autoplay == 'true' ? TRUE : NULL,
      ));
    }
  }
  return $output;
}

Functions

Namesort descending Description
media_soundcloud_preprocess_media_soundcloud_audio Preprocess function for theme('media_soundcloud_audio').
theme_media_soundcloud_embed @todo: get this working
theme_media_soundcloud_field_formatter_styles
theme_media_soundcloud_preview_style Preview for Styles UI.
theme_media_soundcloud_styles NOTE: Deprecated with Styles version 2.