The machine name of the provider. This must be the same as * the base name of this filename, before the .inc extension. * 'name' => The translated name of the provider. * 'url' => The url to the main page for the provider. * 'settings_description' => A description of the provider that will be * posted in the admin settings form. * 'supported_features' => An array of rows describing the state of certain * supported features by the provider. These will be rendered in a table, * with the columns being 'Feature', 'Supported', 'Notes'. In general, * the 'Feature' column will give the name of the feature, 'Supported' * will be Yes or No, and 'Notes' will give an optional description or * caveats to the feature. */ function emvideo_example_info() { $features = array( array(t('Autoplay'), t('Yes'), ''), array(t('RSS Attachment'), t('Yes'), ''), array(t('Thumbnails'), t('Yes'), t('')), array(t('Full screen mode'), t('Yes'), t('You may customize the player to enable or disable full screen playback. Full screen mode is enabled by default.')), ); return array( 'provider' => 'example', 'name' => t('Example'), 'url' => EMVIDEO_EXAMPLE_MAIN_URL, 'settings_description' => t('These settings specifically affect videos displayed from !example. You can also read more about its !api.', array('!example' => l(t('Example.com'), EMVIDEO_EXAMPLE_MAIN_URL), '!api' => l(t("developer's API"), EMVIDEO_EXAMPLE_API_URL))), 'supported_features' => $features, ); } /** * hook emvideo_PROVIDER_settings * This should return a subform to be added to the emvideo_settings() admin * settings page. * * Note that a form field set will already be provided at $form['example'], * so if you want specific provider settings within that field set, you should * add the elements to that form array element. */ function emvideo_example_settings() { // We'll add a field set of player options here. You may add other options // to this element, or remove the field set entirely if there are no // user-configurable options allowed by the example provider. $form['example']['player_options'] = array( '#type' => 'fieldset', '#title' => t('Embedded video player options'), '#collapsible' => TRUE, '#collapsed' => TRUE, ); // This is an option to set the video to full screen. You should remove this // option if it is not provided by the example provider. $form['example']['player_options']['emvideo_example_full_screen'] = array( '#type' => 'checkbox', '#title' => t('Allow fullscreen'), '#default_value' => variable_get('emvideo_example_full_screen', 1), '#description' => t('Allow users to view video using the entire computer screen.'), ); return $form; } /** * hook emvideo_PROVIDER_extract * * This is called to extract the video code from a pasted URL or embed code. * * We'll be passed a URL or the embed code from a video when an editor pastes * that in the field's textfield. We'll need to either pass back an array of * regex expressions to match, or do the matching ourselves and return the * resulting video code. * * @param $parse * An optional string with the pasted URL or embed code. * @return * Either an array of regex expressions to be tested, or a string with the * video code to be used. If the hook tests the code itself, it should * return either the string of the video code (if matched), or an empty * array. Otherwise, the calling function will handle testing the embed code * against each regex string in the returned array. */ function emvideo_example_extract($parse = '') { // Here we assume that a URL will be passed in the form of // http://www.example.com/video/text-video-title // or embed code in the form of '; $output .= ''; $output .= ''; $output .= ''; $output .= ''; $output .= ''; $output .= ''; $output .= ''; $output .= ''; } return $output; } /** * hook emvideo_PROVIDER_thumbnail * Returns the external url for a thumbnail of a specific video. * @param $field * The field of the requesting node. * @param $item * The actual content of the field from the requesting node. * @return * A URL pointing to the thumbnail. */ function emvideo_example_thumbnail($field, $item, $formatter, $node, $width, $height) { // In this demonstration, we previously retrieved a thumbnail using oEmbed // during the data hook. return $data['thumbnail']; } /** * hook emvideo_PROVIDER_video * This actually displays the full/normal-sized video we want, usually on the * default page view. * @param $embed * The video code for the video to embed. * @param $width * The width to display the video. * @param $height * The height to display the video. * @param $field * The field info from the requesting node. * @param $item * The actual content from the field. * @return * The html of the embedded video. */ function emvideo_example_video($embed, $width, $height, $field, $item, $node, $autoplay) { $output = theme('emvideo_example_flash', $item, $width, $height, $autoplay); return $output; } /** * hook emvideo_PROVIDER_video * * This actually displays the preview-sized video we want, commonly for the * teaser. * @param $embed * The video code for the video to embed. * @param $width * The width to display the video. * @param $height * The height to display the video. * @param $field * The field info from the requesting node. * @param $item * The actual content from the field. * @return * The html of the embedded video. */ function emvideo_example_preview($embed, $width, $height, $field, $item, $node, $autoplay) { $output = theme('emvideo_example_flash', $item, $width, $height, $autoplay); return $output; } /** * Implementation of hook_emfield_subtheme. * This returns any theme functions defined by this provider. */ function emvideo_example_emfield_subtheme() { $themes = array( 'emvideo_example_flash' => array( 'arguments' => array('item' => NULL, 'width' => NULL, 'height' => NULL, 'autoplay' => NULL), 'file' => 'providers/example.inc', // If you don't provide a 'path' value, then it will default to // the emvideo.module path. Obviously, replace 'emexample' with // the actual name of your custom module. 'path' => drupal_get_path('module', 'emexample'), ) ); return $themes; }