PluginProbe ʕ •ᴥ•ʔ
Presto Player / 1.10.2
Presto Player v1.10.2
4.3.0 4.2.4 4.2.3 4.2.2 4.2.0 4.2.1 trunk 1.10.0 1.10.1 1.10.2 1.11.0 1.12.0 1.13.0 1.14.0 1.14.1 1.5.10 1.5.11 1.5.12 1.5.13 1.5.14 1.5.15 1.5.5 1.5.6 1.5.7 1.5.8 1.5.9 1.6.0 1.6.1 1.6.10 1.6.11 1.6.12 1.6.13 1.6.2 1.6.3 1.6.4 1.6.5 1.6.6 1.6.7 1.6.8 1.6.9 1.7.0 1.7.1 1.7.2 1.8.0 1.8.1 1.8.2 1.8.3 1.8.4 1.8.5 1.8.6 1.9.0 1.9.1 1.9.10 1.9.11 1.9.12 1.9.13 1.9.14 1.9.2 1.9.3 1.9.4 1.9.5 1.9.6 1.9.7 1.9.8 1.9.9 2.0.0 2.0.1 2.0.10 2.0.11 2.0.12 2.0.13 2.0.14 2.0.15 2.0.16 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.0.8 2.0.9 2.1.0 2.2.0 2.2.1 2.2.2 2.2.3 2.2.3-beta1 2.3.0 2.3.1 2.3.2 2.3.3 3.0.0 3.0.0-beta1 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.0.6 3.0.7 3.0.8 3.1.0 3.1.1 3.1.2 3.1.3 4.0.0 4.0.1 4.0.2 4.0.3 4.0.4 4.0.5 4.0.6 4.0.7 4.0.8 4.1.0 4.1.1 4.1.2 4.1.3 4.1.4
presto-player / inc / Models / Video.php
presto-player / inc / Models Last commit date
AudioPreset.php 4 years ago Block.php 4 years ago CurrentUser.php 5 years ago EmailCollection.php 5 years ago LicensedProduct.php 5 years ago Model.php 4 years ago ModelInterface.php 5 years ago Player.php 5 years ago Post.php 5 years ago Preset.php 4 years ago ReusableVideo.php 4 years ago Setting.php 5 years ago Video.php 4 years ago Webhook.php 3 years ago
Video.php
160 lines
1 <?php
2
3 namespace PrestoPlayer\Models;
4
5 use PrestoPlayer\Services\Blocks\VimeoBlockService;
6 use PrestoPlayer\Services\Blocks\YoutubeBlockService;
7
8 class Video extends Model
9 {
10 /**
11 * Table used to access db
12 *
13 * @var string
14 */
15 protected $table = 'presto_player_videos';
16
17 /**
18 * Model Schema
19 *
20 * @var array
21 */
22 public function schema()
23 {
24 return [
25 'id' => [
26 'type' => 'integer',
27 ],
28 'title' => [
29 'type' => 'string',
30 'sanitize_callback' => 'wp_kses_post'
31 ],
32 'type' => [
33 'type' => 'string',
34 'sanitize_callback' => 'sanitize_text_field'
35 ],
36 'src' => [
37 'type' => 'string',
38 'sanitize_callback' => 'esc_url_raw'
39 ],
40 'external_id' => [
41 'type' => 'string',
42 'sanitize_callback' => 'sanitize_text_field'
43 ],
44 'attachment_id' => [
45 'type' => 'integer',
46 ],
47 'post_id' => [
48 'type' => 'integer'
49 ],
50 'created_by' => [
51 'type' => 'integer',
52 'default' => get_current_user_id()
53 ],
54 'created_at' => [
55 'type' => 'string'
56 ],
57 'updated_at' => [
58 'type' => 'string',
59 ],
60 'deleted_at' => [
61 'type' => 'string'
62 ]
63 ];
64 }
65
66 /**
67 * These attributes are queryable
68 *
69 * @var array
70 */
71 protected $queryable = [
72 'src',
73 'video_id',
74 'title',
75 'type',
76 'attachment_id',
77 'external_id'
78 ];
79
80 public function set($args)
81 {
82 parent::set($args);
83
84 if (!empty($this->attributes->attachment_id)) {
85 $title = get_the_title($this->attributes->attachment_id);
86 $src = wp_get_attachment_url($this->attributes->attachment_id);
87 $this->attributes->title = $title ? $title : $this->attributes->title;
88 $this->attributes->src = $src ? $src : $this->attributes->src;
89 }
90
91 return $this;
92 }
93
94 public function maybeAutoCreateTitle($args)
95 {
96 // remotely get the title if not provided
97 if (empty($args['title'])) {
98 // youtube
99 if ($args['type'] === 'youtube') {
100 $youtube = new YoutubeBlockService();
101 if(isset($args['external_id'])){
102 $api_response = $youtube->getRemoteVideoData($args['external_id']);
103 if (!empty($api_response['title'])) {
104 $args['title'] = $api_response['title'];
105 }
106 }
107 }
108 // vimeo
109 if ($args['type'] === 'vimeo') {
110 $vimeo = new VimeoBlockService();
111 $api_response = $vimeo->getRemoteVideoData($args['external_id']);
112 if (!empty($api_response['title'])) {
113 $args['title'] = $api_response['title'];
114 }
115 }
116 }
117
118 // fallback to url
119 $args['title'] = empty($args['title']) ? $args['src'] : $args['title'];
120
121 return $args;
122 }
123
124 /**
125 * Create a new video
126 *
127 * @param array $args
128 * @return integer
129 */
130 public function create($args = [])
131 {
132 // required params
133 if (empty($args['external_id']) && empty($args['attachment_id']) && empty($args['src'])) {
134 return new \WP_Error('invalid_parameters', 'You must enter an attachment_id, external_id or src.');
135 }
136
137 $args = $this->maybeAutoCreateTitle($args);
138
139 // create
140 return parent::create($args);
141 }
142
143 /**
144 * Maybe auto-create title if not set
145 *
146 * @param array $args
147 * @return void
148 */
149 public function update($args = [])
150 {
151 if (!empty($args['attachment_id']) && !empty($args['title'])) {
152 wp_update_post([
153 'ID' => $args['attachment_id'],
154 'post_title' => $args['title']
155 ]);
156 }
157 return parent::update($args);
158 }
159 }
160