Fixed bug in override parameters not being read.
[embedvideo/.git] / ItemAddEmbedVideo.inc
index 457ad724a52fd6ae6920873c550f05d11c5f7b0c..7b79cc28c737b462202c1aa0db93e46de9a9e355 100644 (file)
@@ -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,30 +58,36 @@ class ItemAddEmbedVideo extends ItemAddPlugin {
                   foreach ($variablesArray as $variable) {
                       list ($name, $value) = explode('=', $variable);
                       $ItemAddEmbedVideo[$type][$name] = $value;
+                      /* print "type: $type name: $name value: $value <br>"; */
                   }
               }
           }
           
           /* 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";
           
           /* Gallery2 specific paths and variables */
-          $gallery2_url = "http://www.pippins.net/gallery2";
-          $gallery2_flv_thumbnail = "/modules/thumbnail/images/G2video.jpg";
-          $gallery2_flv_player = "/modules/flashvideo/lib/G2flv.swf";
+          $urlGenerator =& $gallery->getUrlGenerator();
+          $gallery2_url = $urlGenerator->getCurrentUrlDir();
+          $gallery2_flv_thumbnail = "modules/thumbnail/images/G2video.jpg";
+          $gallery2_flv_player = "modules/flashvideo/lib/G2flv.swf";
           
           /* Store the passed URL in a shorter local variable */
           $url = $form['webPage']['URL'];
@@ -109,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";
               }
               
@@ -161,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('/<meta content="(.+?)\. \w+ \d+, \d+.*" name="description">/i',
@@ -183,7 +204,7 @@ class ItemAddEmbedVideo extends ItemAddPlugin {
               $description = '<embed FlashVars="autoPlay=true" ';
               $description.= 'style="width:'.$width.'px; height:'.$height.'px;" id="VideoPlayback" ';
               $description.= 'type="application/x-shockwave-flash" ';
-              $description.= 'src="'.$googlePlayer.'"?docId='.$doc_id.'"> ';
+              $description.= 'src="'.$googlePlayer.'?docId='.$doc_id.'"> ';
               $description.= '</embed>';
               $description.= "<br>$summary";
         
@@ -213,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('&amp;', '&', $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
@@ -321,14 +338,11 @@ class ItemAddEmbedVideo extends ItemAddPlugin {
           $tmpFile = $platform->tempnam($tmpDir, 'add');
           $tmpFile.= ".jpg";
           
-          if($debugOutput) {
+          if(!strcmp($debugOutput,"true")) {
               print "thumbnail: $thumbnail <br>";
           }
           
           /* Fetch the thumbnail and save it to a local file */
-          if (empty($extraHeaders)) {
-              $extraHeaders = array('Referer' => str_replace('&amp;', '&', $url));
-          }
           list ($successfullyCopied, $response, $headers) =
             GalleryCoreApi::fetchWebFile($thumbnail, $tmpFile, $extraHeaders);
           if (!$successfullyCopied) {
@@ -347,7 +361,7 @@ class ItemAddEmbedVideo extends ItemAddPlugin {
           $fileName = preg_replace("/&#\d+;/","",$fileName);
           
           /* General debug output */
-          if($debugOutput) {
+          if(!strcmp($debugOutput,"true")) {
               print "<p><a href=\"".$title."\" target=\"_blank\">";
               print "<img src=\"".$thumbnail."\">\n</a>".$summary."</p>";
               print "<p>$description</p>";
@@ -379,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
   */
@@ -411,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;    
- }
  
 }      
 ?>