media_soundcloud.module in Media: SoundCloud 7
Same filename and directory in other branches
media_soundcloud/media_soundcloud.module
Media: SoundCloud provides a stream wrapper and formatters for audio provided by SoundCloud, available at http://soundcloud.com/.
@TODO: Tie in SoundCloud API. Allow editors to search for audio to display on the browser. Allow editors to put in a soundcloud username to display on the browser. Allow editors to log in w/ their credentials. Allow editors to upload audio to SoundCloud.
File
media_soundcloud.moduleView source
<?php
/**
* @file media_soundcloud/media_soundcloud.module
*
* Media: SoundCloud provides a stream wrapper and formatters for audio provided
* by SoundCloud, available at http://soundcloud.com/.
*
* @TODO:
* Tie in SoundCloud API.
* Allow editors to search for audio to display on the browser.
* Allow editors to put in a soundcloud username to display on the browser.
* Allow editors to log in w/ their credentials.
* Allow editors to upload audio to SoundCloud.
*/
// A registry of variable_get defaults.
include_once 'includes/media_soundcloud.variables.inc';
// Hooks and callbacks for integrating with Styles module for display.
// @todo Can save a little overhead for people without Styles module by wrapping
// this inside a module_exists('styles'). However, is that safe to do in
// global context? If not, is there any down side to doing it in hook_init()?
include_once 'includes/media_soundcloud.styles.inc';
// Hooks and callbacks for integrating with File Entity module for display.
include_once 'includes/media_soundcloud.formatters.inc';
/**
* Implements hook_media_internet_providers().
*/
function media_soundcloud_media_internet_providers() {
$path = drupal_get_path('module', 'media_soundcloud');
return array(
'MediaInternetSoundCloudHandler' => array(
'title' => 'soundcloud',
'image' => $path . '/images/stream-soundcloud.png',
),
);
}
/**
* Implements hook_stream_wrappers().
*/
function media_soundcloud_stream_wrappers() {
return array(
'soundcloud' => array(
'name' => t('SoundCloud audio'),
'class' => 'MediaSoundCloudStreamWrapper',
'description' => t('Audio provided by SoundCloud.'),
'type' => STREAM_WRAPPERS_READ_VISIBLE,
),
);
}
/**
* Implements hook_theme().
*/
function media_soundcloud_theme($existing, $type, $theme, $path) {
return array(
'media_soundcloud_preview_style' => array(
'variables' => array(
'style_name' => NULL,
),
'file' => 'media_soundcloud.theme.inc',
'path' => $path . '/includes/themes',
),
'media_soundcloud_field_formatter_styles' => array(
'variables' => array(
'element' => NULL,
'style' => NULL,
),
'file' => 'media_soundcloud.theme.inc',
'path' => $path . '/includes/themes',
),
'media_soundcloud_audio' => array(
'variables' => array(
'uri' => NULL,
'width' => NULL,
'autoplay' => NULL,
'extra_params' => NULL,
),
'file' => 'media_soundcloud.theme.inc',
'path' => $path . '/includes/themes',
'template' => 'media-soundcloud-audio',
),
'media_soundcloud_embed' => array(
'variables' => array(
'style_name' => NULL,
'uri' => NULL,
'alt' => NULL,
'title' => NULL,
),
'file' => 'media_soundcloud.theme.inc',
'path' => $path . '/includes/themes',
),
'media_soundcloud_styles' => array(
'variables' => array(
'element' => NULL,
'style' => NULL,
),
'file' => 'media_soundcloud.theme.inc',
'path' => $path . '/includes/themes',
),
);
}
/**
* Implements hook_media_parse().
*
* @todo This hook should be deprecated. Refactor Media module to not call it
* any more, since media_internet should be able to automatically route to the
* appropriate handler.
*/
function media_soundcloud_media_parse($embed_code) {
$handler = new MediaInternetSoundCloudHandler($embed_code);
return $handler
->parse($embed_code);
}
/**
* Implements hook_media_format_form_prepare_alter().
*/
function media_soundcloud_media_format_form_prepare_alter(&$form, &$form_state, $media) {
$settings = array(
'autosubmit' => $media->type == "audio",
);
drupal_add_js(array(
'media_format_form' => $settings,
), 'setting');
}
/**
* Implements hook_ctools_plugin_api().
*/
function media_soundcloud_ctools_plugin_api($owner, $api) {
static $api_versions = array(
'file_entity' => array(
'file_default_displays' => 1,
),
);
if (isset($api_versions[$owner][$api])) {
return array(
'version' => $api_versions[$owner][$api],
);
}
}
/**
* Implements hook_file_mimetype_mapping_alter().
*
* Create a fake mimetype so it will be compatible with File Entity's dev changes
* which now requires each file type to select supported mime types
*/
function media_soundcloud_file_mimetype_mapping_alter(&$mapping) {
$mapping['mimetypes'][] = 'audio/soundcloud';
}
/*
* Implements hook_file_default_types_alter().
*
* Adds the audio/soundcloud fake mimetype to audio files.
*/
function media_soundcloud_file_default_types_alter(&$types) {
$types['audio']->mimetypes[] = 'audio/soundcloud';
}
Functions
Name![]() |
Description |
---|---|
media_soundcloud_ctools_plugin_api | Implements hook_ctools_plugin_api(). |
media_soundcloud_file_default_types_alter | |
media_soundcloud_file_mimetype_mapping_alter | Implements hook_file_mimetype_mapping_alter(). |
media_soundcloud_media_format_form_prepare_alter | Implements hook_media_format_form_prepare_alter(). |
media_soundcloud_media_internet_providers | Implements hook_media_internet_providers(). |
media_soundcloud_media_parse | Implements hook_media_parse(). |
media_soundcloud_stream_wrappers | Implements hook_stream_wrappers(). |
media_soundcloud_theme | Implements hook_theme(). |