You are here

function MediaSoundCloudStreamWrapper::getLocalThumbnailPath in Media: SoundCloud 7.2

Same name and namespace in other branches
  1. 7 includes/MediaSoundCloudStreamWrapper.inc \MediaSoundCloudStreamWrapper::getLocalThumbnailPath()

File

includes/MediaSoundCloudStreamWrapper.inc, line 84
Extends the MediaReadOnlyStreamWrapper class to handle SoundCloud audio.

Class

MediaSoundCloudStreamWrapper
Create an instance like this: $soundcloud = new MediaSoundCloudStreamWrapper('soundcloud://u/[user-name]/a/[audio-code]');

Code

function getLocalThumbnailPath() {
  $parts = $this
    ->get_parameters();
  $local_path = file_default_scheme() . '://media-soundcloud';

  // User.
  if (isset($parts['u'])) {
    $local_path .= '/u/' . check_plain($parts['u']) . '.jpg';
  }

  // Group.
  if (isset($parts['g'])) {
    $local_path .= '/g/' . check_plain($parts['g']) . '.jpg';
  }

  // Single song.
  if (isset($parts['u']) && isset($parts['a'])) {
    $local_path .= '/u/' . check_plain($parts['u']) . '/a/' . check_plain($parts['a']) . '.jpg';
  }

  // Audio sets.
  if (isset($parts['u']) && isset($parts['s'])) {
    $local_path .= '/u/' . check_plain($parts['u']) . '/s/' . check_plain($parts['s']) . '.jpg';
  }
  if (!file_exists($local_path)) {

    // getOriginalThumbnailPath throws an exception if there are any errors
    // when retrieving the original thumbnail from SoundCloud.
    try {
      $dirname = drupal_dirname($local_path);
      file_prepare_directory($dirname, FILE_CREATE_DIRECTORY | FILE_MODIFY_PERMISSIONS);
      $response = drupal_http_request($this
        ->getOriginalThumbnailPath());
      if (!isset($response->error)) {
        file_unmanaged_save_data($response->data, $local_path, TRUE);
      }
      else {
        @copy($this
          ->getOriginalThumbnailPath(), $local_path);
      }
    } catch (Exception $e) {

      // In the event of an endpoint error, use the mime type icon provided
      // by the Media module.
      $file = file_uri_to_object($this->uri);
      $icon_dir = variable_get('media_icon_base_directory', 'public://media-icons') . '/' . variable_get('media_icon_set', 'default');
      $local_path = file_icon_path($file, $icon_dir);
    }
  }
  return $local_path;
}