You are here

public function MediaInternetSoundCloudHandler::parse in Media: SoundCloud 7

Same name and namespace in other branches
  1. 7.2 includes/MediaInternetSoundCloudHandler.inc \MediaInternetSoundCloudHandler::parse()
3 calls to MediaInternetSoundCloudHandler::parse()
MediaInternetSoundCloudHandler::claim in includes/MediaInternetSoundCloudHandler.inc
MediaInternetSoundCloudHandler::getFileObject in includes/MediaInternetSoundCloudHandler.inc
MediaInternetSoundCloudHandler::getOEmbed in includes/MediaInternetSoundCloudHandler.inc
Returns information about the media. See http://www.oembed.com/.

File

includes/MediaInternetSoundCloudHandler.inc, line 9

Class

MediaInternetSoundCloudHandler
Implementation of MediaInternetBaseHandler.

Code

public function parse($embedCode) {
  $patterns = array(
    '@soundcloud\\.com/([0-9A-Za-z\\@\\&\\$_-]+)/([0-9A-Za-z\\@\\&\\$_-]+)/([0-9A-Za-z\\@\\&\\$_-]+)@i',
    '@soundcloud\\.com/([0-9A-Za-z\\@\\&\\$_-]+)/([0-9A-Za-z\\@\\&\\$_-]+)@i',
    '@soundcloud\\.com/([0-9A-Za-z\\@\\&\\$_-]+)@i',
  );
  foreach ($patterns as $pattern) {
    preg_match($pattern, $embedCode, $matches);
    if (isset($matches[1]) && !isset($matches[2])) {
      return file_stream_wrapper_uri_normalize('soundcloud://u/' . $matches[1]);
    }
    if (isset($matches[2]) && !isset($matches[3])) {
      if ($matches[1] == 'groups') {
        return file_stream_wrapper_uri_normalize('soundcloud://g/' . $matches[2]);
      }
      else {
        return file_stream_wrapper_uri_normalize('soundcloud://u/' . $matches[1] . '/a/' . $matches[2]);
      }
    }
    if (isset($matches[3])) {
      if ($matches[2] == 'sets') {
        return file_stream_wrapper_uri_normalize('soundcloud://u/' . $matches[1] . '/s/' . $matches[3]);
      }
    }
  }
}