]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - plugins/GNUsocialVideo/actions/postvideo.php
Merge commit 'refs/merge-requests/29' of https://gitorious.org/social/mainline into...
[quix0rs-gnu-social.git] / plugins / GNUsocialVideo / actions / postvideo.php
index 4af34af7ab9a8ee90e91ab272e389f2e32737523..aae0fe98e649a4e3b5cc4280929a8b049c805851 100644 (file)
@@ -1,7 +1,7 @@
 <?php
 /**
  * GNU Social
- * Copyright (C) 2010, Free Software Foundation, Inc.
+ * Copyright (C) 2011, Free Software Foundation, Inc.
  *
  * PHP version 5
  *
@@ -22,7 +22,7 @@
  * @category  Widget
  * @package   GNU Social
  * @author    Ian Denhardt <ian@zenhack.net>
- * @copyright 2010 Free Software Foundation, Inc.
+ * @copyright 2011 Free Software Foundation, Inc.
  * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
  */
 
@@ -32,52 +32,59 @@ if (!defined('STATUSNET')) {
 
 class PostvideoAction extends Action {
     var $user = null;
+    var $url = null;
 
-    function prepare($args)
+    function prepare(array $args=array())
     {
         parent::prepare($args);
         $this->user = common_current_user();
+
+        if(empty($this->user)){
+            throw new ClientException(_('Must be logged in to post a video'),
+                403);
+        }
+
+        if($this->isPost()){
+            $this->checkSessionToken();
+        }
+
+        $this->url = filter_var($this->trimmed('url'), FILTER_SANITIZE_URL);
+        $this->url = filter_var($this->url, FILTER_VALIDATE_URL);
+
         return true;
     }
    
-    function handle($args)
+    function handle(array $args=array())
     {
         parent::handle($args);
-        if ($_SERVER['REQUEST_METHOD'] == 'POST') {
+
+        if ($this->isPost()) {
             $this->handlePost($args);
+        } else {
+            $this->showPage();
         }
-        $this->showPage();
     }
 
     function handlePost($args)
     {
-        if (!$this->arg('post')) {
-            return;
-        }
-        if (empty($_POST['video_uri'])) {
-            return;
-        }
-        $uri = $_POST['video_uri'];
-        $uri = filter_var($uri, FILTER_SANITIZE_URL);
-        $uri = filter_var($uri, FILTER_VALIDATE_URL);
-        if($uri) { 
-            $rend = sprintf('<video src="%s", controls="controls">Sorry, your browser doesn\'t support the video tag.</video>', $uri);
-            Notice::saveNew($this->user->id, 'video : ' . $uri, 'web', array('rendered' => $rend));
+        if (empty($this->url)) {
+            throw new ClientException(_('Bad URL.'));
         }
+
+        $profile = $this->user->getProfile();
+
+        $options = array();
+        
+        ToSelector::fillOptions($this, $options);
+
+        $vid = Video::saveNew($profile, $this->url, $options);
+
+        common_redirect($vid->uri, 303);
     }
  
     function showContent()
     {
-        if(empty($this->user)) {
-            $this->element('p', array(), 'You are not logged in.');
-        } else {
-            $this->elementStart('form', array('method' => 'post',
-                                              'action' => common_local_url('postvideo')));
-            $this->element('input', array('name' => 'video_uri',
-                                          'type' => 'text',
-                                          'id' => 'video_uri'));
-            $this->submit('post', _('Post'));
-            $this->elementEnd('form');
-        }
+        $form  = new VideoForm();
+        $form->show();
     }
 }