<?php
// $Id: trilulilu.inc,v 1.0 2007/09/26 22:18:25 petrica Exp $

define('VIDEO_CCK_TRILULILU_MAIN_URL', 'http://www.trilulilu.ro/');

/**
 * hook video_cck_PROVIDER_info
 * this returns information relevant to a specific 3rd party video provider
 * @return
 *   an array of strings requested by various admin and other forms
 *   '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'.
 */
function video_cck_trilulilu_info() {
  $name = t('Trilulilu');
  $features = array(
    array(t('Autoplay'), t('Yes'), ''),
    array(t('RSS Attachment'), t('No'), ''),
    array(t('Thumbnails'), t('No'), t('May not currently resize thumbnails. Must have an API key for thumbnails at the moment, although research is underway to determine an alternative to this. Set your API key above.')),
  );
  return array(
    'provider' => 'trilulilu',
    'name' => $name,
    'url' => VIDEO_CCK_TRILULILU_MAIN_URL,
    'settings_description' => t('These settings specifically affect videos displayed from !trilulilu.'),
    'supported_features' => $features,
  );
}

/**
 * hook video_cck_PROVIDER_settings
 * this should return a subform to be added to the video_cck_settings() admin settings page.
 * note that a form field will already be provided, at $form['PROVIDER'] (such as $form['youtube'])
 * so if you want specific provider settings within that field, you can add the elements to that form field.
 */
function video_cck_trilulilu_settings() {
  $form = array();
  return $form;
}


/**
 * hook video_cck_PROVIDER_extract
 * this is called to extract the video code from a pasted URL or embed code.
 * @param $embed
 *   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 video_cck_trilulilu_extract($embed) {
  // http://www.trilulilu.ro/MrNeo/bf127742856533
  //<script type="text/javascript" language="javascript" src="http://www.trilulilu.ro/embed-video/VisUrat/e7b003d4b30aa0"></script><script type="text/javascript" language="javascript">show_e7b003d4b30aa0(448, 386);</script>
  if ($embed && preg_match('@trilulilu\.ro/([^/&"]*)/([^/&"]*)/([^/&"]*)@i', $embed, $matches)) {
    return $matches[2] . '/' . $matches[3];
  }
  elseif ($embed && preg_match('@trilulilu\.ro/([^/&"]*)/([^/&"]*)@i', $embed, $matches)) {
  	return $matches[1] . '/' . $matches[2];
  }

  return false;
}

/**
 * hook video_cck_PROVIDER_embedded_link($video_code)
 * returns a link to view the video at the provider's site
 *  @param $video_code
 *    the string containing the video to watch
 *  @return
 *    a string containing the URL to view the video at the original provider's site
 */
function video_cck_trilulilu_video_link($video_code) {
  return 'http://www.trilulilu.ro/' . $video_code . '/';
}

/**
 * the embedded flash displaying the youtube video
 */
function theme_video_cck_trilulilu_flash($embed, $width, $height) {
  if ($embed) {
    $embed = explode("/", $embed);
    $output .= '<script type="text/javascript" language="javascript" src="http://www.trilulilu.ro/embed-video/'.$embed[0].'/'.$embed[1].'"></script><script type="text/javascript" language="javascript">show_'.$embed[1].'('.$width.', '.$height.');</script>';
  }
  return $output;
}

/**
 * hook video_cck_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 video_cck_trilulilu_video($embed, $width, $height) {
  $output = theme('video_cck_trilulilu_flash', $embed, $width, $height);
  return $output;
}

/**
 * hook video_cck_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 video_cck_trilulilu_preview($embed, $width, $height) {
  $output = theme('video_cck_trilulilu_flash', $embed, $width, $height);
  return $output;
}
