X-Git-Url: http://git.pippins.net/embedvideo/.git/static/git-logo.png?a=blobdiff_plain;f=ItemAddEmbedVideo.inc;h=7b79cc28c737b462202c1aa0db93e46de9a9e355;hb=cb157a9d59eba1eca436730afe1b17b0703d1e38;hp=418bbcbdb048ca8cc56adcc5e8aaf627335026d5;hpb=3bed8fb51b37cb1ed554dc38fb5653667be18cbd;p=embedvideo%2F.git diff --git a/ItemAddEmbedVideo.inc b/ItemAddEmbedVideo.inc index 418bbcb..7b79cc2 100644 --- a/ItemAddEmbedVideo.inc +++ b/ItemAddEmbedVideo.inc @@ -38,7 +38,11 @@ class ItemAddEmbedVideo extends ItemAddPlugin { if (isset($form['action']['addEmbedVideoPage'])) { $platform =& $gallery->getPlatform(); - + + if (empty($extraHeaders)) { + $extraHeaders = array('Referer' => str_replace('&', '&', $url)); + } + if(isset($form['webPage']['URL'])) { /* Load any stored/set Parameters */ @@ -54,22 +58,27 @@ class ItemAddEmbedVideo extends ItemAddPlugin { foreach ($variablesArray as $variable) { list ($name, $value) = explode('=', $variable); $ItemAddEmbedVideo[$type][$name] = $value; + /* print "type: $type name: $name value: $value
"; */ } } } /* Store any Parameters into some simpler, shorter, local variables */ - $debugOutput = $ItemAddEmbedVideo['default']['debugOutput']; - $useInternalFlvPlayer = $ItemAddEmbedVideo['default']['useInternalFlvPlayer']; - $youtubeDevId = $ItemAddEmbedVideo['default']['youtubeDevId']; - $width=$ItemAddEmbedVideo['default']['width']; - $height=$ItemAddEmbedVideo['default']['height']; - $externalFlvPlayer = $ItemAddEmbedVideo['default']['externalFlvPlayer']; - $externalFlvPlayerVars = $ItemAddEmbedVideo['default']['externalFlvPlayerVars']; - $flvThumbnail = $ItemAddEmbedVideo['default']['flvThumbnail']; + global $debugOutput, $useInternalFlvPlayer, $youtubeDevId; + global $width, $height, $externalFlvPlayer, $externalFlvPlayerVars; + global $flvThumbnail; + + $debugOutput = $this->getParameter($ItemAddEmbedVideo, 'debugOutput'); + $useInternalFlvPlayer = $this->getParameter($ItemAddEmbedVideo, 'useInternalFlvPlayer'); + $youtubeDevId = $this->getParameter($ItemAddEmbedVideo, 'youtubeDevId'); + $width = $this->getParameter($ItemAddEmbedVideo, 'width'); + $height = $this->getParameter($ItemAddEmbedVideo, 'height'); + $externalFlvPlayer = $this->getParameter($ItemAddEmbedVideo, 'externalFlvPlayer'); + $externalFlvPlayerVars = $this->getParameter($ItemAddEmbedVideo, 'externalFlvPlayerVars'); + $flvThumbnail = $this->getParameter($ItemAddEmbedVideo, 'flvThumbnail'); /* Store other string constants we'll use later */ - $youtubeUrlPattern="www.youtube.com"; + $youtubeUrlPattern="youtube.com"; $youtubeApiUrl="http://www.youtube.com/api2_rest"; $googleUrlPattern="video.google.com"; $googlePlayer="http://video.google.com/googleplayer.swf"; @@ -110,9 +119,15 @@ class ItemAddEmbedVideo extends ItemAddPlugin { $feed.= "&dev_id=$dev_id&video_id=$video_id"; /* Get the youtube xml feed as a string data source */ - $xml = _getFeed($feed); + list ($successfullyCopied, $xml, $response, $headers) = + GalleryCoreApi::fetchWebPage($feed, $extraHeaders); + if (!$successfullyCopied) { + return array(GalleryCoreApi::error(ERROR_BAD_PATH,__FILE__,__LINE__, + "Unable to get video information at url: $url"),null,null); + } + - if($debugOutput) { + if(!strcmp($debugOutput,"true")) { print "$xml"; } @@ -162,7 +177,12 @@ class ItemAddEmbedVideo extends ItemAddPlugin { } /* Grab the contents of the webpage used to display the video on video.google.com */ - $contents=file_get_contents($url); + list ($successfullyCopied, $contents, $response, $headers) = + GalleryCoreApi::fetchWebPage($url, $extraHeaders); + if (!$successfullyCopied) { + return array(GalleryCoreApi::error(ERROR_BAD_PATH,__FILE__,__LINE__, + "Unable to get video information at url: $url"),null,null); + } /* Extract the summary from the webpage contents */ preg_match('//i', @@ -184,7 +204,7 @@ class ItemAddEmbedVideo extends ItemAddPlugin { $description = ' '; + $description.= 'src="'.$googlePlayer.'?docId='.$doc_id.'"> '; $description.= ''; $description.= "
$summary"; @@ -214,22 +234,18 @@ class ItemAddEmbedVideo extends ItemAddPlugin { * Check to make sure the URL to the remote flv file is valid * (That the file exists at the URL given) */ - if (empty($extraHeaders)) { - $extraHeaders = array('Referer' => str_replace('&', '&', $url)); - } - list ($successfullyCopied, $response, $headers) = - GalleryCoreApi::fetchWebPage($url, $extraHeaders); - if (!$successfullyCopied) { - return array(GalleryCoreApi::error(ERROR_BAD_PATH,__FILE__,__LINE__, - "Unable to locate a video at url: $url"),null,null); - } + /* + * TODO: How can we check if the remote file exists without actually + * downloading the entire file? For now, if the file doesn't exist, + * a gallery item is still added, and the embedded player won't play it. + */ /* * Format the description to hold a reference to the embedded video * This reference will be embedded using the G2 internal player, * or an external player if provided by the user. */ - if(!$useInternalFlvPlayer) { + if(!strcmp($useInternalFlvPlayer,"false")) { /* * The user has indicated they want to use an external flv player @@ -322,14 +338,11 @@ class ItemAddEmbedVideo extends ItemAddPlugin { $tmpFile = $platform->tempnam($tmpDir, 'add'); $tmpFile.= ".jpg"; - if($debugOutput) { + if(!strcmp($debugOutput,"true")) { print "thumbnail: $thumbnail
"; } /* Fetch the thumbnail and save it to a local file */ - if (empty($extraHeaders)) { - $extraHeaders = array('Referer' => str_replace('&', '&', $url)); - } list ($successfullyCopied, $response, $headers) = GalleryCoreApi::fetchWebFile($thumbnail, $tmpFile, $extraHeaders); if (!$successfullyCopied) { @@ -348,7 +361,7 @@ class ItemAddEmbedVideo extends ItemAddPlugin { $fileName = preg_replace("/&#\d+;/","",$fileName); /* General debug output */ - if($debugOutput) { + if(!strcmp($debugOutput,"true")) { print "

"; print "\n".$summary."

"; print "

$description

"; @@ -380,6 +393,18 @@ class ItemAddEmbedVideo extends ItemAddPlugin { return array(null, $error, $status); } + /** + * A simple function to resolve the value of a parameter from + * the default or override value if it exists. + */ + function getParameter($params, $name) { + if(isset($params['override'][$name])) { + return($params['override'][$name]); + } else { + return($params['default'][$name]); + } + } + /** * @see ItemAdd:loadTemplate */ @@ -412,24 +437,6 @@ class ItemAddEmbedVideo extends ItemAddPlugin { return array(null, $module->translate('Embed Video')); } - - - /** - * ItemAddEmbedVideo::_getFeed - */ - function _getFeed($feed) { - - /* Open and return Feed with cURL for parsing */ - $ch = curl_init(); - $timeout = 0; - curl_setopt ($ch, CURLOPT_URL, $feed); - curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); - curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout); - $xml = curl_exec($ch); - curl_close($ch); - - return $xml; - } } ?>