]> gitweb.fluxo.info Git - lorea/elgg.git/commitdiff
Add/edit accion.
authorSem <sembrestels@riseup.net>
Sun, 6 Nov 2011 19:06:26 +0000 (20:06 +0100)
committerSem <sembrestels@riseup.net>
Sun, 6 Nov 2011 19:06:26 +0000 (20:06 +0100)
actions/videolist/edit.php
lib/videolist.php
start.php

index 3aa536e4c7b838e5fd1943ca170b96a7e738634b..2ca99c1c44553edf91ed90978e71a66641588752 100644 (file)
@@ -1,40 +1,76 @@
 <?php\r
 /**\r
- * Elgg video edit\r
+ * Create or edit a video\r
+ *\r
+ * @package ElggVideolist\r
  */\r
-       \r
-// Get variables\r
-$title = strip_tags(get_input("title_videourl"));\r
-$tags = get_input("tags");\r
-$access_id = (int) get_input("access_id");\r
-       \r
-$guid = (int) get_input('video_guid');\r
-\r
-if (!$video = get_entity($guid)) {\r
-       register_error(elgg_echo("videolist:noentity"));\r
-       forward(elgg_get_site_url() . "videolist/" . $_SESSION['user']->username);\r
-       exit;\r
+\r
+$variables = elgg_get_config('videolist');\r
+$input = array();\r
+foreach ($variables as $name => $type) {\r
+       $input[$name] = get_input($name);\r
+       if ($name == 'title') {\r
+               $input[$name] = strip_tags($input[$name]);\r
+       }\r
+       if ($type == 'tags') {\r
+               $input[$name] = string_to_tag_array($input[$name]);\r
+       }\r
+}\r
+\r
+// Get guids\r
+$videolist_guid = (int)get_input('videolist_guid');\r
+$container_guid = (int)get_input('container_guid');\r
+\r
+elgg_make_sticky_form('videolist');\r
+\r
+elgg_load_library('elgg:videolist');\r
+\r
+if (!$input['video_url']) {\r
+       register_error(elgg_echo('videolist:error:no_url'));\r
+       forward(REFERER);\r
+}\r
+\r
+$parsed_url = videolist_parseurl($input['video_url']);\r
+\r
+if(!$parsed) {\r
+       register_error(elgg_echo('videolist:error:invalid_url'));\r
+}\r
+\r
+if ($video_guid) {\r
+       $video = get_entity($video_guid);\r
+       if (!$video || !$video->canEdit()) {\r
+               register_error(elgg_echo('videolist:error:no_save'));\r
+               forward(REFERER);\r
+       }\r
+       $new_video = false;\r
+} else {\r
+       $video = new ElggObject();\r
+       $video->subtype = 'videolist_item';\r
+       $new_video = true;\r
 }\r
-       \r
-$result = false;\r
-\r
-$container_guid = $video->container_guid;\r
-$container = get_entity($container_guid);\r
-       \r
-if ($video->canEdit()) {\r
-       \r
-       $video->access_id = $access_id;\r
-       $video->title = $title;\r
-       \r
-       // Save tags\r
-       $tags = explode(",", $tags);\r
-       $video->tags = $tags;\r
-       $result = $video->save();\r
+\r
+$input = array_merge($input, videolist_get_data($parsed_url));\r
+\r
+if (sizeof($input) > 0) {\r
+       foreach ($input as $name => $value) {\r
+               $video->$name = $value;\r
+       }\r
+}\r
+\r
+$video->container_guid = $container_guid;\r
+\r
+if ($video->save()) {\r
+\r
+       elgg_clear_sticky_form('videolist');\r
+\r
+       system_message(elgg_echo('videolist:saved'));\r
+\r
+       if ($new_video) {\r
+               add_to_river('river/object/videolist_item/create', 'create', elgg_get_logged_in_user_guid(), $video->guid);\r
+       }\r
+\r
+       forward($video->getURL());\r
+} else {\r
+       register_error(elgg_echo('videolist:error:no_save'));\r
+       forward(REFERER);\r
 }\r
-       \r
-if ($result)\r
-       system_message(elgg_echo("videolist:editsaved"));\r
-else\r
-       register_error(elgg_echo("videolist:editfailed"));\r
-       \r
-forward($_SERVER['HTTP_REFERER']);\r
index 50f83c92312b06e5cb8b6881328111428b7cf09d..a713150278d6957072962332d1a7ffd07ccd64cc 100644 (file)
@@ -1,6 +1,10 @@
 <?php
 
-function video_youtube_parse_url($url) {
+define('YOUTUBE', 1);
+define('VIMEO', 2);
+define('METACAFE', 3);
+
+function videolist_parseurl_youtube($url) {
        if (!preg_match('/(http:\/\/)([a-zA-Z]{2,3}\.)(youtube\.com\/)(.*)/', $url, $matches)) {
        return false;
        }
@@ -13,23 +17,28 @@ function video_youtube_parse_url($url) {
        }
 
        $hash = $matches[2];
-       return $domain . 'v/' . $hash;
+       
+       return array(
+               'domain' => $domain,
+               'videoid' => $hash,
+       );
 }
 
-function video_vimeo_parse_url($url) {
-       if (!preg_match('/(http:\/\/)([a-zA-Z]{2,3}\.)(vimeo\.com\/)(.*)/', $url, $matches)) {
+function videolist_parseurl_vimeo($url) {
+       if (!preg_match('/(http:\/\/)([a-zA-Z]{2,3}\.)*(vimeo\.com\/)(.*)/', $url, $matches)) {
                return false;
        }
 
        $domain = $matches[2] . $matches[3];
-       $path = $matches[4];
-
-       $hash = $matches[2];
+       $hash = $matches[4];
 
-       return $domain . '/' . $hash;
+       return array(
+               'domain' => $domain,
+               'videoid' => $hash,
+       );
 }
 
-function video_metacafe_parse_url($url) {
+function videolist_parseurl_metacafe($url) {
        if (!preg_match('/(http:\/\/)([a-zA-Z]{2,3}\.)(metacafe\.com\/)(.*)/', $url, $matches)) {
                return false;
        }
@@ -39,48 +48,76 @@ function video_metacafe_parse_url($url) {
 
        $hash = $matches[2];
 
-       return $domain . '/' . $hash;
+       return array(
+               'domain' => $domain,
+               'videoid' => $hash,
+       );
 }
 
-if(isset($confirm_action) && ($confirm_action == 'add_video')) {
-       if(isset($title_videourl) && ($title_videourl != '')) {
-               if($Pagecontainer != "youtube" || $Pagecontainer != "vimeo" || $Pagecontainer != "metacafe"){
-                       if(preg_match("/youtube/i", $title_videourl)) {
-                               $Pagecontainer = "youtube";
-                       }
-
-                       if(preg_match("/vimeo/i", $title_videourl)) {
-                               $Pagecontainer = "vimeo";
-                       }
-
-                       if(preg_match("/metacafe/i", $title_videourl)) {
-                               $Pagecontainer = "metacafe";
-                       }
-               }
-               if($Pagecontainer == "youtube") {
-                       $is_valid_video = video_youtube_parse_url($title_videourl);
-               } else if($Pagecontainer == "vimeo") {
-                       $is_valid_video = video_vimeo_parse_url($title_videourl);
-                       $is_valid_video = $get_addvideourl;
-               } else if($Pagecontainer == "metacafe"){
-                       $is_valid_video = video_metacafe_parse_url($title_videourl);
-                       $is_valid_video = $get_addvideourl;
-               }
-
-               if($is_valid_video) {
-                       $error['no-video'] = 1;
-                       $_SESSION['candidate_profile_video'] = $is_valid_video;
-                       $_SESSION['candidate_profile_video_access_id'] = $access_id;
-                       $_SESSION['videolisttags'] = $tags;
-                       $_SESSION['Pagecontainer'] = $Pagecontainer;
-                       $_SESSION['container_guid'] = $container_guid;
-                       $url = "action/videolist/add?__elgg_ts={$timestamp}&__elgg_token={$token}";
-                       forward($url);
-               }
-               else
-                       $error['no-video'] = 0;
+function videolist_parseurl($url){
+       if ($parsed = videolist_parseurl_youtube($url)){
+               $parsed['site'] = YOUTUBE;
+               return $parsed;
+       } elseif ($parsed = videolist_parseurl_vimeo($url)) {
+               $parsed['site'] = VIMEO;
+               return $parsed;
+       } elseif ($parsed = videolist_parseurl_metacafe($url)) {
+               $parsed['site'] = METACAFE;
+               return $parsed;
+       } else {
+               return array();
        }
-       else {
-               $error['no-video'] = 0;
+}
+
+function videolist_get_data($video_parsed_url) {
+       $site = $video_parsed_url['site'];
+       $videoid = $video_parsed_url['videoid'];
+       switch($site){
+               case YOUTUBE: return videolist_get_data_youtube($videoid);
+               case VIMEO: return videolist_get_data_vimeo($videoid);
+               case METACAFE: return videolist_get_data_metacafe($videoid);
+               default: return array();
        }
 }
+
+
+function videolist_get_data_youtube($videoid){
+       $buffer = file_get_contents('http://gdata.youtube.com/feeds/api/videos/'.$videoid);
+       $xml = new SimpleXMLElement($buffer);
+       
+       return array(
+               'title' => sanitize_string($xml->title),
+               'description' => sanitize_string($xml->content),
+               'icon' => "http://img.youtube.com/vi/$videoid/default.jpg",
+       );
+}
+
+function videolist_get_data_vimeo($videoid){
+       $buffer = file_get_contents("http://vimeo.com/api/v2/video/$videoid.xml");
+       $xml = new SimpleXMLElement($buffer);
+       
+       $videos = $xml->children();
+       $video = $videos[0];
+       
+       return array(
+               'title' => sanitize_string($video->title),
+               'description' => sanitize_string($video->description),
+               'icon' => sanitize_string($video->thumbnail_medium),
+       );
+}
+
+function videolist_get_data_metacafe($videoid){ //FIXME
+       $buffer = file_get_contents("http://www.metacafe.com/api/item/$videoid");
+       $xml = new SimpleXMLElement($buffer);
+       
+       $children = $xml->children();
+       $channel = $children[1];
+       
+       preg_match('/<img[^>]+src[\\s=\'"]+([^"\'>\\s]+)/is', $channel->description, $matches);
+       
+       return array(
+               'title' => $channel->title,
+               'description' => $channel->description,
+               'icon' => $matches[1],
+       );
+}
index 94a07a35c840145e01a291989c6d4a961e3b087e..c0ed1a0bf27529e9424423bd000acd8435b4b53b 100644 (file)
--- a/start.php
+++ b/start.php
@@ -75,10 +75,11 @@ function videolist_init() {
        elgg_register_plugin_hook_handler('entity:icon:url', 'user', 'profile_usericon_hook');
        
        // Register actions
-       elgg_register_action("videolist/add", elgg_get_plugins_path() . "videolist/actions/add.php");
-       elgg_register_action("videolist/edit", elgg_get_plugins_path() . "videolist/actions/edit.php");
-       elgg_register_action("videolist/tubesearch", elgg_get_plugins_path() . "videolist/actions/tubesearch.php");
-       elgg_register_action("videolist/delete", elgg_get_plugins_path() . "videolist/actions/delete.php");
+       $actions_path = elgg_get_plugins_path() . "videolist/actions/videolist";
+       elgg_register_action("videolist/add", "$actions_path/add.php");
+       elgg_register_action("videolist/edit", "$actions_path/edit.php");
+       elgg_register_action("videolist/tubesearch", "$actions_path/tubesearch.php");
+       elgg_register_action("videolist/delete", "$actions_path/delete.php");
 }
 
 /**