You are here

function _media_flickr_media_parse in Media: Flickr 7.2

Same name and namespace in other branches
  1. 7 includes/media_flickr.utilities.inc \_media_flickr_media_parse()

Flickr media parse helper function. Search the original url for valid data.

Parameters

$url: The original URL or embed code to parse.

Return value

string The unique URI for the file, based on its stream wrapper, or NULL.

1 call to _media_flickr_media_parse()
media_flickr_media_parse in ./media_flickr.module
Implements hook_media_parse().

File

includes/media_flickr.utilities.inc, line 295
Utility functions for Media: Flickr.

Code

function _media_flickr_media_parse($url) {

  // Flickr short form URL.
  $patterns = array(
    '@flic\\.kr/(p|s)/([0-9A-Za-z]+)@i',
  );
  foreach ($patterns as $pattern) {
    preg_match($pattern, $url, $matches);
    if (isset($matches[1])) {
      $long_id = _media_flickr_shorturl($matches[2]);
      if ($long_id) {
        if ($matches[1] === 'p') {
          return _media_flickr_build_uri(array(
            'p' => $long_id,
          ));
        }
        return _media_flickr_build_uri(array(
          's' => $long_id,
        ));
      }
    }
  }

  // The following are single images.
  $patterns = array(
    '@flickr\\.com/photos/([0-9A-Za-z\\@\\&\\$_-]+)/([0-9]+)/in/photostream@i',
    '@flickr\\.com/photos/([0-9A-Za-z\\@\\&\\$_-]+)/([0-9]+)/in/set-([0-9]+)@i',
    '@flickr\\.com/photos/([0-9A-Za-z\\@\\&\\$_-]+)/([0-9]+)/in/faves-([0-9]+)@i',
    '@flickr\\.com/photos/([0-9A-Za-z\\@\\&\\$_-]+)/([0-9]+)/?$@i',
    '@flickr\\.com/photos/([0-9A-Za-z\\@\\&\\$_-]+)/([0-9]+)/in/pool-([0-9A-Za-z\\@\\&\\$_-]+)@i',
    '@flickr\\.com/photos/([0-9A-Za-z\\@\\&\\$_-]+)/([0-9]+)/in/explore-([0-9]+)@i',
    '@flickr\\.com/photos/([0-9A-Za-z\\@\\&\\$_-]+)/([0-9]+)/in/album-([0-9]+)@i',
  );
  foreach ($patterns as $pattern) {
    preg_match($pattern, $url, $matches);
    if (isset($matches[1]) && isset($matches[2])) {
      return _media_flickr_build_uri(array(
        'u' => $matches[1],
        'p' => $matches[2],
      ));
    }
  }

  // Next we look for photosets/albums.
  $patterns = array(
    '@flickr\\.com/photos/([0-9A-Za-z\\@\\&\\$_-]+)/sets/([0-9]+)@i',
    '@flickr\\.com/photos/([0-9A-Za-z\\@\\&\\$_-]+)/albums/([0-9]+)@i',
  );
  foreach ($patterns as $pattern) {
    preg_match($pattern, $url, $matches);
    if (isset($matches[1]) && isset($matches[2])) {
      return _media_flickr_build_uri(array(
        'u' => $matches[1],
        's' => $matches[2],
      ));
    }
  }

  // Then we look for photostreams of the entire user.
  $patterns = array(
    '@flickr\\.com/photos/([0-9A-Za-z\\@\\&\\$_-]+)/?$@i',
    '@flickr\\.com/photos/([0-9A-Za-z\\@\\&\\$_-]+)/show/?$@i',
  );
  foreach ($patterns as $pattern) {
    preg_match($pattern, $url, $matches);
    if (isset($matches[1])) {
      return _media_flickr_build_uri(array(
        'u' => $matches[1],
        's' => 'photostream',
      ));
    }
  }

  // Finally we look for searches.
  $patterns = array(
    '@flickr\\.com/search/?\\?q=([^& ]+)@i',
    '@flickr\\.com/search/show/?\\?q=([^& ]+)@i',
  );
  foreach ($patterns as $pattern) {
    preg_match($pattern, $url, $matches);
    if (isset($matches[1])) {
      return _media_flickr_build_uri(array(
        'search' => $matches[1],
      ));
    }
  }
  return '';
}