]> git.mxchange.org Git - quix0rs-gnu-social.git/blob - plugins/GNUsocialVideo/classes/Video.php
Merge remote-tracking branch 'upstream/master' into social-master
[quix0rs-gnu-social.git] / plugins / GNUsocialVideo / classes / Video.php
1 <?php
2 /**
3  * GNU Social
4  * Copyright (C) 2011, Free Software Foundation, Inc.
5  *
6  * PHP version 5
7  *
8  * LICENCE:
9  * This program is free software: you can redistribute it and/or modify
10  * it under the terms of the GNU Affero General Public License as published by
11  * the Free Software Foundation, either version 3 of the License, or
12  * (at your option) any later version.
13  *
14  * This program is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17  * GNU Affero General Public License for more details.
18  *
19  * You should have received a copy of the GNU Affero General Public License
20  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
21  *
22  * @package   GNU Social
23  * @author    Ian Denhardt <ian@zenhack.net>
24  * @copyright 2011 Free Software Foundation, Inc.
25  * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
26  */
27
28 if(!defined('STATUSNET')){
29     exit(1);
30 }
31
32 /**
33  * Data class for videos.
34  */
35
36 class Video extends Managed_DataObject
37 {
38     const OBJECT_TYPE = 'http://activitystrea.ms/schema/1.0/video';
39
40     public $__table = 'video'; // table name
41     public $id;                // char (36) // UUID
42     public $uri;               // varchar (191)   This is the corresponding notice's uri.   not 255 because utf8mb4 takes more space
43     public $url;               // varchar (191)   not 255 because utf8mb4 takes more space
44     public $profile_id;        // int
45
46     public static function getByNotice(Notice $notice)
47     {
48         return self::getKV('uri', $notice->uri);
49     }
50
51     public function getNotice()
52     {
53         return Notice::getKV('uri', $this->uri);
54     }
55
56     public static function schemaDef()
57     {
58         return array(
59             'description' => 'A video clip',
60             'fields' => array(
61                 'id' => array('type' => 'char',
62                               'length' => 36,
63                               'not null' => true,
64                               'description' => 'UUID'),
65                 'uri' => array('type' => 'varchar',
66                                'length' => 191,
67                                'not null' => true),
68                 'url' => array('type' => 'varchar',
69                                'length' => 191,
70                                'not null' => true),
71                 'profile_id' => array('type' => 'int', 'not null' => true),
72             ),
73             'primary key' => array('id'),
74             'foreign keys' => array('video_profile_id__key' => array('profile' => array('profile_id' => 'id'))),
75         );
76     }
77
78     static function saveNew(Profile $profile, $url, array $options=array())
79     {
80         $vid = new Video();
81
82         $vid->id =  UUID::gen();
83         $vid->profile_id = $profile->id;
84         $vid->url = $url;
85
86
87         $options['object_type'] = Video::OBJECT_TYPE;
88
89         if (!array_key_exists('uri', $options)) { 
90             $options['uri'] = common_local_url('showvideo', array('id' => $vid->id));
91         }
92
93         if (!array_key_exists('rendered', $options)) {
94             $options['rendered'] = sprintf("<video src=\"%s\">Sorry, your browser doesn't support the video tag.</video>", $url);
95         }
96
97         $vid->uri = $options['uri'];
98         
99         $vid->insert();
100
101         return Notice::saveNew($profile->id,
102                                '',
103                                'web',
104                                $options);
105
106     }
107 }