<?php
/**
* GNU Social
- * Copyright (C) 2010, Free Software Foundation, Inc.
+ * Copyright (C) 2011, Free Software Foundation, Inc.
*
* PHP version 5
*
* @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
*/
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();
}
}