diff --git a/includes/media_flickr.utilities.inc b/includes/media_flickr.utilities.inc index 9096d18fb754d90cc90aca3d34930fb4bc32e22e..924f2a91301826defc08636b7b21f99387db1c56 100644 --- a/includes/media_flickr.utilities.inc +++ b/includes/media_flickr.utilities.inc @@ -202,23 +202,33 @@ function _media_flickr_photoset_exists($photoset_id) { /** * Find user ID based on Flickr user name. * - * @param $user_name + * @param array $parts * - * @return mixed + * @return string user NSID + * Return Flickr NSID. If nothing found, returns FALSE. */ -function _media_flickr_get_user_id($user_name) { - $info = _media_flickr_sets_request('flickr.people.getInfo', array('user_id' => $user_name)); +function _media_flickr_get_user_id($parts) { + $user_id = ''; - if ($info && ($info['@attributes']['stat'] != 'fail')) { - return $user_name; + if (isset($parts['p'])) { + $media_id = $parts['p']; + $media_info = _media_flickr_sets_request('flickr.photos.getInfo', + ['photo_id' => $media_id]); + if ($media_info['@attributes']['stat'] != 'fail') { + $user_id = $media_info['photo']['owner']['@attributes']['nsid']; + } } - elseif ($info['err']['@attributes']['code'] == 1) { - // See if we were passed a username instead. - $info = _media_flickr_sets_request('flickr.people.findByUsername', array('username' => $user_name)); - if ($info && $info['@attributes']['stat'] != 'fail') { - return $info['user']['@attributes']['id']; + + if (isset($parts['s'])) { + $media_id = $parts['s']; + $media_info = _media_flickr_sets_request('flickr.photosets.getInfo', + ['photoset_id' => $media_id]); + if ($media_info['@attributes']['stat'] != 'fail') { + $user_id = $media_info['photoset']['@attributes']['owner']; } } + + return $user_id; } /** @@ -227,13 +237,16 @@ function _media_flickr_get_user_id($user_name) { * @return string */ function _media_flickr_build_uri($parts) { + $user_name = ''; if (isset($parts['u'])) { $user_name = $parts['u']; - $user_id = _media_flickr_get_user_id($user_name); - $parts['u'] = isset($user_id) ? $user_id : $parts['u']; + $user_id = _media_flickr_get_user_id($parts); + if ($user_id) { + $parts['u'] = isset($user_id) ? $user_id : $parts['u']; + } } - if (isset($parts['u'])) { + if ($user_name) { if (isset($parts['p'])) { $uri = file_stream_wrapper_uri_normalize('flickr://u/' . $parts['u'] . "/p/" . $parts['p']); if (_media_flickr_photo_exists($parts['p'])) {