You are here

class MediaFlickrStreamWrapper in Media: Flickr 7.2

Same name and namespace in other branches
  1. 7 MediaFlickrStreamWrapper.inc \MediaFlickrStreamWrapper
  2. 7 includes/MediaFlickrStreamWrapper.inc \MediaFlickrStreamWrapper

Create an instance like this: $flickr = new MediaFlickrStreamWrapper('flickr://u/[user-code]/p/[photo-code]');

Hierarchy

Expanded class hierarchy of MediaFlickrStreamWrapper

1 string reference to 'MediaFlickrStreamWrapper'
media_flickr_stream_wrappers in ./media_flickr.module
Implements hook_stream_wrappers().

File

includes/MediaFlickrStreamWrapper.inc, line 12
Create a Flickr Stream Wrapper class for the Media/Resource module.

View source
class MediaFlickrStreamWrapper extends MediaReadOnlyStreamWrapper {
  protected $base_url = 'https://www.flickr.com/';
  protected $parameters = array(
    'u' => NULL,
    'p' => NULL,
    's' => NULL,
    'search' => NULL,
  );
  public function interpolateUrl() {
    if (isset($this->parameters['u'], $this->parameters['p'])) {
      return $this->base_url . 'photos/' . check_plain($this->parameters['u']) . '/' . check_plain($this->parameters['p']);
    }
    if (isset($this->parameters['u'], $this->parameters['s'])) {
      if ($this->parameters['s'] === 'photoset') {
        return $this->base_url . 'photos/' . check_plain($this->parameters['u']);
      }
      return $this->base_url . 'photos/' . check_plain($this->parameters['u']) . '/sets/' . check_plain($this->parameters['s']);
    }
    if (isset($this->parameters['search'])) {
      return $this->base_url . 'search/?q=' . check_plain($this->parameters['search']);
    }
    return '';
  }
  public function getTarget($f) {
    return FALSE;
  }

  /**
   * Get the url of the original image.
   *
   * @return string
   */
  public function getExternalUrl() {

    // Look for photo sets & searches.
    if (!isset($this->parameters['p'])) {
      if (isset($this->parameters['search']) || isset($this->parameters['s']) && $this->parameters['s']) {
        return media_flickr_image_url(media_flickr_photoset_photo_id($this->uri));
      }
      return '';
    }
    return media_flickr_image_url($this->parameters['p']);
  }
  public function getOriginalThumbnailPath() {
    return $this
      ->getExternalUrl();
  }
  public function getLocalThumbnailPath() {
    $parts = $this
      ->get_parameters();
    $local_path = str_replace('flickr://', 'public://media-flickr/', check_plain($this->uri)) . '.jpg';
    if (!file_exists($local_path)) {
      $dirname = drupal_dirname($local_path);
      file_prepare_directory($dirname, FILE_CREATE_DIRECTORY | FILE_MODIFY_PERMISSIONS);
      @copy($this
        ->getOriginalThumbnailPath(), $local_path);
    }
    return $local_path;
  }
  public static function getMimeType($uri, $mapping = NULL) {
    if (strpos($uri, '/s/') !== FALSE) {
      return 'video/flickr';
    }
    if (strpos($uri, '//search/') !== FALSE) {
      return 'video/flickr';
    }
    return 'image/jpeg';
  }

}

Members