You are here

function _media_flickr_media_parse in Media: Flickr 7

Same name and namespace in other branches
  1. 7.2 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.

array $options:

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 225
Utility functions for Media: Flickr.

Code

function _media_flickr_media_parse($url, $options = array()) {

  // 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]+)/?$@i',
    '@flickr\\.com/photos/([0-9A-Za-z\\@\\&\\$_-]+)/([0-9]+)/in/pool-([0-9A-Za-z\\@\\&\\$_-]+)@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],
      ));
    }
  }
}