Added support for animoto videos. 1_1_5
authorAlan J. Pippin <ajp@pippins.net>
Wed, 14 Oct 2009 04:45:06 +0000 (22:45 -0600)
committerAlan J. Pippin <ajp@pippins.net>
Wed, 14 Oct 2009 04:45:06 +0000 (22:45 -0600)
Added new centerVideo parameter.

ItemAddEmbedVideo.inc
module.inc
templates/EmbedVideoSiteAdmin.tpl
templates/ItemAddEmbedVideo.tpl

index 8049610d866fd38fdeae129938dea84a40d126d0..544c5225cd970821b8ff23a6379f983313e97ced 100644 (file)
@@ -93,6 +93,7 @@ class ItemAddEmbedVideo extends ItemAddPlugin {
           $wordwrapSummary = $this->getParameter($ItemAddEmbedVideo, 'wordwrapSummary', "0");
           $wordwrapDescription = $this->getParameter($ItemAddEmbedVideo, 'wordwrapDescription', "0");
            $allowFullScreen = $this->getParameter($ItemAddEmbedVideo, 'allowFullScreen', "false");
+          $centerVideo = $this->getParameter($ItemAddEmbedVideo, 'centerVideo', "false");
           
           /* Print our stored/set Parameters */
           if(!strcmp($debugOutput,"true")) {
@@ -114,6 +115,7 @@ class ItemAddEmbedVideo extends ItemAddPlugin {
             print "wordwrapSummary=$wordwrapSummary<br>\n";
             print "wordwrapDescription=$wordwrapDescription<br>\n";
             print "allowFullScreen=$allowFullScreen<br>\n";
+            print "centerVideo=$centerVideo\n";
             print "<hr>\n";
           }
 
@@ -165,6 +167,9 @@ class ItemAddEmbedVideo extends ItemAddPlugin {
 
           /* vimeo */
           $vimeoUrlPattern="vimeo.com";
+
+          /* animoto */
+          $animotoUrlPattern="animoto.com";
           
           /* Gallery2 specific paths and variables */
           $urlGenerator =& $gallery->getUrlGenerator();
@@ -480,7 +485,6 @@ class ItemAddEmbedVideo extends ItemAddPlugin {
            **********************************
            * Embed a Revver Video
            **********************************
-           * TODO: The autoStart parameter doesn't work with the yahoo video player
             */
           } else if(preg_match("/$revverUrlPattern/",$url)) {
 
@@ -538,7 +542,6 @@ class ItemAddEmbedVideo extends ItemAddPlugin {
            **********************************
            * Embed a DailyMotion Video
            **********************************
-            * TODO: The autoStart parameter doesn't work with the yahoo video player
             */
           } else if(preg_match("/$dailymotionUrlPattern/",$url)) {
             
@@ -828,7 +831,70 @@ class ItemAddEmbedVideo extends ItemAddPlugin {
               $description.= 'type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always"';
               $description.= 'width="'.$width.'" height="'.$height.'">';
               $description.= '</embed></object>';
-                              
+
+          /*
+           **********************************
+           * Embed an Animoto Video
+           **********************************
+            */
+          } else if(preg_match("/$animotoUrlPattern/",$url)) {
+            
+              /* Make sure we can extract a itemID */
+              if(preg_match("/\/play\/(.+)/",$url,$matches)) {
+                  $item_id = $matches[1];
+                  $item_id=preg_replace("/\/$/","",$item_id);
+              } else {
+                  return array(GalleryCoreApi::error(ERROR_BAD_PARAMETER,__FILE__,__LINE__,
+                               "Unable to extract item id from url: $url"),null,null);
+              }
+
+              /* Grab the contents of the webpage used to display the video */
+              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 - $response"),NULL,NULL);
+              }
+
+              /* Extract the embed video xml page from the webpage contents */
+              if(preg_match('/type="text\/xml\+oembed" href="(.+?)"/', $contents, $matches)) { 
+                $xml_url=$matches[1];
+              } else {
+                return array(GalleryCoreApi::error(ERROR_BAD_PATH,__FILE__,__LINE__,
+                                                   "Unable to extract xml information from url: $url"),NULL,NULL);
+              }
+
+              /* Get the xml page contents */
+              list ($successfullyCopied, $contents, $response, $headers) =
+                GalleryCoreApi::fetchWebPage($xml_url, $extraHeaders);
+              if (!$successfullyCopied) {
+                  return array(GalleryCoreApi::error(ERROR_BAD_PATH,__FILE__,__LINE__,
+                               "Unable to get video information at url: $xml_url - $response"),NULL,NULL);
+              }
+
+              /* Extract the title from the webpage contents */
+              preg_match('/<title>(.+?)<\/title>/i', $contents, $matches);
+              $title=htmlentities($matches[1], ENT_QUOTES, "UTF-8");
+              
+              /* Extract the thumbnail from the webpage contents */
+              preg_match('/<thumbnail_url>(.+?)<\/thumbnail_url>/i', $contents, $matches);
+              $thumbnail=$matches[1];
+
+              /* Format the description to hold a reference to the embedded video */
+              if(preg_match('/<html>(.+?)<\/html>/ism', $contents, $matches)) { 
+                $description=$matches[1];
+                $description=preg_replace("/&quot;/","'",$description);
+                $description=preg_replace("/&lt;/","<",$description);
+                $description=preg_replace("/&gth;/",">",$description);
+                $description=preg_replace("/\\\\\"/","\"",$description);
+                if(!strcmp($useRemoteSize,"false")) {
+                  $description=preg_replace("/width=\"\d+\"/","width=\"".$width."\"",$description);
+                  $description=preg_replace("/height=\"\d+\"/","height=\"".$height."\"",$description);
+                }
+              } else {
+                return array(GalleryCoreApi::error(ERROR_BAD_PATH,__FILE__,__LINE__,
+                       "Unable to extract embedded video information from url: $url"),NULL,NULL);
+              }
           /*
            **********************************
            * Embed a remote .swf file
@@ -1088,6 +1154,11 @@ class ItemAddEmbedVideo extends ItemAddPlugin {
           
           /* Tack on the summary to the end of the description */
           $description.= "<br>$description_summary";
+
+          /* Add centering tags to the description if requested */
+          if(!strcmp($centerVideo,"true")) {
+            $description = "<center>" . $description . "</center>";
+          }
           
           /* General debug output */
           if(!strcmp($debugOutput,"true")) {
index 8f589b119f89468e2ddc9354eaf3a7d7f2a820d6..4f91f89becc96e32d1a7d2ccce3a656ad7fad8c7 100644 (file)
@@ -33,7 +33,7 @@ class EmbedVideoModule extends GalleryModule {
        $this->setId('embedvideo');
        $this->setName($gallery->i18n('Embed Video'));
        $this->setDescription($gallery->i18n('Add embedded videos from the web'));
-       $this->setVersion('1.1.4');
+       $this->setVersion('1.1.5');
        $this->setGroup('import', $gallery->i18n('Import'));
        $this->setCallbacks('getSiteAdminViews');
        $this->setRequiredCoreApi(array(7, 3));
index f19e2a28455ee784643e241321f125e54694f9aa..18ce8f6dbd08bcff58ff971397a7ec259330f1f3 100644 (file)
     <tr class="gbOdd"><td>wordwrapDescription</td><td>0 - N</td>
       <td>{g->text text="If non-zero, sets the maximum line width when displaying the item's description"}</td></tr>
 
+    <tr class="gbEven"><td>centerVideo</td><td>true/false</td>
+      <td>{g->text text="If set to true, video playback will be centered on the photo page"}</td></tr>
+
 
   </table>
 
index 1ea280732b4bd3568f1a6c009158bd6d67a756a9..d2633adb54342368dcb0cf6a0e4965ad9135b032 100644 (file)
@@ -32,6 +32,7 @@
     <b>Myspace1:</b> http://vids.myspace.com/index.cfm?fuseaction=vids.individual&VideoID=xxxxxxxx<br>
     <b>Myspace2:</b> http://myspacetv.com/index.cfm?fuseaction=vids.individual&videoid=xxxxxxxx<br>
     <b>Vimeo:</b> http://www.vimeo.com/xxxxxx<br>
+    <b>Animoto:</b> http://www.animoto.com/play/xxxxxxxxxxxxxxxxxxxxxx<br>
     <b>Generic:</b> Any webpage with an '&lt;object ... &lt;embed ...' style video on its page<br>
     <br>
     <b><u>Supported File Types:</u></b><br>