function _media_flickr_media_parse in Media: Flickr 7.2
Same name and namespace in other branches
- 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 '';
}