PluginProbe
VdoCipher: Secure Video Player and Hosting / 1.28
VdoCipher: Secure Video Player and Hosting v1.28
trunk 1.10 1.11 1.12 1.13 1.14 1.15 1.17 1.18 1.19 1.20 1.21 1.22 1.23 1.24 1.25 1.26 1.27 1.28 1.29 1.3 1.30 1.4 1.5 1.6 All 28 releases
← All changes | vdocipher.php +279 -191 1.241.28 View file →
@@ -1,10 +1,10 @@
1 1 <?php
2 2 /**
3 3 * Plugin Name: VdoCipher
4 4 * Plugin URI: https://www.vdocipher.com
5 - * Description: Secured video hosting for wordpress
6 - * Version: 1.24
5 + * Description: Secured video hosting for WordPress
6 + * Version: 1.28
7 7 * Author: VdoCipher
8 8 * Author URI: https://www.vdocipher.com
9 9 * License: GPL2
10 10 */
@@ -10,48 +10,57 @@
10 10 */
11 11
12 12 if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) {
13 13 header($_SERVER['SERVER_PROTOCOL'] . ' 404 Not Found');
14 - exit("<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML 2.0//EN\">\r\n<html><head>\r\n<title>404 Not Found</title>\r\n".
14 + exit("<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML 2.0//EN\">\r\n<html lang='en'><head>\r\n<title>404 Not Found</title>\r\n".
15 15 "</head><body>\r\n<h1>Not Found</h1>\r\n<p>The requested URL " . $_SERVER['SCRIPT_NAME'] . " was not found on ".
16 16 "this server.</p>\r\n</body></html>");
17 17 }
18 18
19 -// Function called to retrieve id for when title given, starts
20 -function vdo_retrieve_id($title) {
21 - $client_key = get_option('vdo_client_key');
22 - if ($client_key == false || $client_key == "") {
23 - return "Plugin not configured. Please set the API key to embed videos.";
19 +if (!defined('VDOCIPHER_PLUGIN_VERSION')) {
20 + define('VDOCIPHER_PLUGIN_VERSION', '1.28');
21 +}
22 +
23 +if (!defined('VDOCIPHER_PLAYER_VERSION')) {
24 + define('VDOCIPHER_PLAYER_VERSION', 'v2');
25 +}
26 +
27 +if (!defined('VDOCIPHER_DEFAULT_THEME')) {
28 + define('VDOCIPHER_DEFAULT_THEME', '');
29 +}
30 +
31 +function vdo_plugin_check_version()
32 +{
33 + // This applies only for installs 1.24 and below
34 + if (!get_option('vdo_plugin_version')) {
35 + if (preg_match('/^1\.[0123456]\.[0-9]{1,2}$/', get_option('vdo_embed_version'))) {
36 + update_option('vdo_embed_version', VDOCIPHER_PLAYER_VERSION);
37 + }
38 + if (preg_match('/^1\.[01234]\.[0-9]{1,2}$/', get_option('vdo_embed_version'))) {
39 + update_option('vdo_default_height', 'auto');
40 + }
41 + update_option('vdo_plugin_version', VDOCIPHER_PLUGIN_VERSION);
42 + return ;
24 43 }
25 - $url = "https://dev.vdocipher.com/api/videos?q=$title";
26 - $headers = array(
27 - 'Authorization'=>'Apisecret '.$client_key,
28 - 'Content-Type'=>'application/json',
29 - 'Accept'=>'application/json'
30 - );
31 - $response = wp_remote_post($url, array(
32 - 'method' => 'GET',
33 - 'headers' => $headers
34 - ));
35 - if (is_wp_error($response)) {
36 - $error_message = $response->get_error_message();
37 - echo "VdoCipher: Something went wrong: $error_message";
38 - return "";
44 + // This applies for all new installations after 1.25
45 + if (VDOCIPHER_PLUGIN_VERSION !== get_option('vdo_plugin_version')) {
46 + if (preg_match('/^1\.[0-9]{1,2}\.[0-9]{1,2}$/', get_option('vdo_embed_version'))) {
47 + update_option('vdo_embed_version', VDOCIPHER_PLAYER_VERSION);
48 + }
49 + update_option('vdo_plugin_version', VDOCIPHER_PLUGIN_VERSION);
39 50 }
40 - $video_json_response = $response['body'];
41 - $video_list_object = json_decode($video_json_response);
42 - $video_list = $video_list_object->rows;
43 - $video_object = $video_list[0];
44 - $video_id = $video_object->id;
45 - return $video_id;
46 51 }
47 -// Function called to retrieve id for when title given, ends
48 52
53 +add_action('plugins_loaded', 'vdo_plugin_check_version');
54 +
49 55 // Function called to get OTP, starts
50 -function vdo_otp($video, $otp_post_array = array()) {
56 +function vdo_otp($video, $otp_post_array = array())
57 +{
51 58 $client_key = get_option('vdo_client_key');
52 59 if ($client_key == false || $client_key == "") {
53 - return "Plugin not configured. Please set the API key to embed videos.";
60 + return (object)['message' => 'Plugin not configured. API Key missing.'];
61 + } else if (strlen($client_key) !== 64) {
62 + return (object)["message" => "Invalid API Key."];
54 63 }
55 64 $url = "https://dev.vdocipher.com/api/videos/$video/otp";
56 65 $headers = array(
57 66 'Authorization'=>'Apisecret '.$client_key,
@@ -58,20 +67,38 @@
58 67 'Content-Type'=>'application/json',
59 68 'Accept'=>'application/json'
60 69 );
61 70 $otp_post_json = json_encode($otp_post_array);
62 - $response = wp_remote_post($url, array(
63 - 'method' => 'POST',
64 - 'headers' => $headers,
65 - 'body' => $otp_post_json
66 - ));
71 + $response = wp_remote_post(
72 + $url,
73 + array(
74 + 'method' => 'POST',
75 + 'headers' => $headers,
76 + 'body' => $otp_post_json
77 + )
78 + );
67 79 if (is_wp_error($response)) {
68 80 $error_message = $response->get_error_message();
69 - echo "VdoCipher: Something went wrong: $error_message";
70 - return "";
81 + if (false !== stripos($error_message, 'Operation timed out')) {
82 + $error_message = 'Operation timed out. Check your firewall at web host or try after sometime.';
83 + } else if (false !== stripos($error_message, 'Could not resolve host')) {
84 + $error_message = 'Connectivity issue. Check firewall at web host.';
85 + }
86 + return ["message" => $error_message];
71 87 }
72 - $OTP_Response = $response['body'];
73 - return json_decode($OTP_Response);
88 +
89 + $responseCode = $response['response']['code'];
90 + if ($responseCode === 404) {
91 + return (object)["message" => "Video ID not found"];
92 + }
93 + else if ($responseCode === 403) {
94 + return (object)["message" => "API key does not have OTP creator permission"];
95 + }
96 + else if ($responseCode === 400 || $responseCode === 401) {
97 + return (object)["message" => "Incorrect API key"];
98 + } else {
99 + return json_decode($response['body']);
100 + }
74 101 }
75 102 // Function called to get OTP, ends
76 103
77 104 // VdoCipher Shortcode starts
@@ -76,36 +103,35 @@
76 103
77 104 // VdoCipher Shortcode starts
78 105 function vdo_shortcode($atts)
79 106 {
80 - extract(shortcode_atts(
107 + $vdo_args = shortcode_atts(
81 108 array(
82 - 'title' => 'TITLE_OF_VIDEO',
83 - 'width' => get_option('vdo_default_width') . "px",
84 - 'height' => get_option('vdo_default_height') . "px",
85 - 'id' => 'id',
86 - 'no_annotate'=> false,
87 - 'version'=> 0,
88 - 'vdo_theme'=> false,
89 - 'player_tech'=> ''
90 - ),
109 + 'width' => get_option('vdo_default_width'),
110 + 'height' => get_option('vdo_default_height'),
111 + 'id' => 'id',
112 + 'no_annotate'=> false,
113 + 'vdo_theme'=> false,
114 + ),
91 115 $atts
92 - ));
93 - if ((get_option('vdo_default_height')) == 'auto') {
94 - $height = 'auto';
116 + );
117 + $width = $vdo_args['width'];
118 + $height = $vdo_args['height'];
119 + $id = $vdo_args['id'];
120 + $no_annotate = $vdo_args['no_annotate'];
121 + $vdo_theme = $vdo_args['vdo_theme'];
122 +
123 + if (!preg_match('/.*px$/', $width)) {
124 + $width = $width."px";
95 125 }
96 - if (!$atts['id']) {
97 - if (!$atts['title']) {
98 - return "Required argument id for embedded video not found.";
126 + if (!preg_match('/.*px$/', $height)) {
127 + if ($height != 'auto') {
128 + $height = $height."px";
99 129 }
100 - else {
101 - $video = vdo_retrieve_id($title);
102 - if ($video == null) {
103 - return "404. Video not found.";
104 - }
105 - }
106 130 }
107 - else {
131 + if (!$atts['id']) {
132 + return "Required argument id for embedded video not found.";
133 + } else {
108 134 $video = $id;
109 135 }
110 136
111 137 // Initialize $otp_post_array, to be sent as part of OTP request, as for time-to-live 300
@@ -126,11 +152,12 @@
126 152 $vdo_annotate_code = str_replace('{username}', $current_user->user_login, $vdo_annotate_code);
127 153 $vdo_annotate_code = str_replace('{id}', $current_user->ID, $vdo_annotate_code);
128 154 }
129 155 $vdo_annotate_code = str_replace('{ip}', $_SERVER['REMOTE_ADDR'], $vdo_annotate_code);
130 - $vdo_annotate_code = preg_replace_callback('/\{date\.([^\}]+)\}/', "eval_date", $vdo_annotate_code);
156 + $vdo_annotate_code = preg_replace_callback('/{date\.([^}]+)}/', "eval_date", $vdo_annotate_code);
131 157 $vdo_annotate_code = apply_filters('vdocipher_annotate_postprocess', $vdo_annotate_code);
132 - // Add annotate code to $otp_post_array, which will be converted to Json and then sent as POST body to API endpoint
158 + // Add annotate code to $otp_post_array, which will be
159 + // converted to Json and then sent as POST body to API endpoint
133 160 if (!$no_annotate) {
134 161 $otp_post_array["annotate"] = $vdo_annotate_code;
135 162 }
136 163 }
@@ -135,15 +162,16 @@
135 162 }
136 163 }
137 164 // OTP is requested via vdo_otp function
138 165 $OTP_Response = vdo_otp($video, $otp_post_array);
139 - $OTP = $OTP_Response->otp;
140 - $playbackInfo = $OTP_Response->playbackInfo;
141 166
167 + // https://www.php.net/manual/en/function.isset.php#86313
168 + $message = (isset($OTP_Response->message)) ? $OTP_Response->message : null;
169 + $OTP = (isset($OTP_Response->otp)) ? $OTP_Response->otp : null;
170 + $playbackInfo = (isset($OTP_Response->playbackInfo)) ? $OTP_Response->playbackInfo : null;
171 +
142 172 if (is_null($OTP)) {
143 -
144 - $output = "<span id='vdo$OTP' style='background:#555555;color:#FFFFFF'><h4>Video not found</h4></span>";
145 - return $output;
173 + return "<div id='vdo$OTP'><strong>VdoCipher Error: $message</strong></div>";
146 174 }
147 175
148 176 // Version, legacy, for flash only
149 177 $version = 0;
@@ -150,92 +178,118 @@
150 178 if (isset($atts['version'])) {
151 179 $version = $atts['version'];
152 180 }
153 181
154 - // Video Embed version is updated
155 - if ((get_option('vdo_embed_version')) == false) {
156 - update_option('vdo_embed_version', '1.6.4');
157 - }
182 + // Video Embed version is retrieved from options table or from shortcode attribute
158 183 $vdo_embed_version_str = get_option('vdo_embed_version');
159 184
160 185 // Video Player theme, update and as shortcode attribute
161 - if ((get_option('vdo_player_theme')) == false) {
162 - update_option('vdo_player_theme', '9ae8bbe8dd964ddc9bdb932cca1cb59a');
163 - }
164 - if(!$vdo_theme){
186 + if (!$vdo_theme) {
165 187 $vdo_player_theme = get_option('vdo_player_theme');
166 - }
167 - else {
188 + } else {
168 189 $vdo_player_theme = $vdo_theme;
169 190 }
170 -
171 - // tech override custom names
172 - switch ($player_tech) {
173 - case "flash":
174 - $player_tech = "*,-dash";
175 - break;
176 - case "nohtml5":
177 - $player_tech = "*,-dash";
178 - break;
179 - case "noflash":
180 - $player_tech = "*,-hss";
181 - break;
182 - case "nozen":
183 - $player_tech = "*,-zen";
184 - break;
185 - case "noios":
186 - $player_tech = "*,-hlse";
187 - break;
188 - default:
189 - break;
191 + if (strpos($vdo_player_theme, 'v1/') === 0 || strlen($vdo_player_theme) === 32) {
192 + $vdo_embed_version_str = '1.6.10';
193 + } else if (strlen($vdo_player_theme) === 16) {
194 + $vdo_embed_version_str = 'v2';
190 195 }
196 + $speedOptions = esc_attr(get_option('vdo_player_speed'));
197 + $speedPattern = '/^\d.\d{1,2}(,\d.\d{1,2})+$/';
191 198
192 199 // Old Embed Code
193 - if ($vdo_embed_version_str === '0.5') {
194 - $output = "<div id='vdo$OTP' style='height:$height;width:$width;max-width:100%' ></div>";
195 - $output .= "<script> (function(v,i,d,e,o){v[o]=v[o]||{}; v[o].add = v[o].add || function V(a){".
196 - " (v[o].d=v[o].d||[]).push(a);};";
197 - $output .= "if(!v[o].l) { v[o].l=1*new Date();a=i.createElement(d),m=i.getElementsByTagName(d)[0];a.async=1;".
198 - "a.src=e; m.parentNode.insertBefore(a,m);}";
199 - $output .= " })(window,document,'script','//de122v0opjemw.cloudfront.net/vdo.js','vdo'); vdo.add({ ";
200 - $output .= "o: '$OTP', ";
201 - if ($version == 32) {
202 - $output .= "version: '$version' ";
200 + if ($vdo_embed_version_str === '1.6.10') {
201 + //Old embed code
202 + $output = <<<END
203 + <div id='vdo$OTP' style='height:$height;width:$width;max-width:100%' ></div>
204 + <script>(function(v,i,d,e,o){v[o]=v[o]||{}; v[o].add = v[o].add || function V(a){
205 + (v[o].d=v[o].d||[]).push(a);};
206 + if(!v[o].l) { v[o].l=1*new Date(); a=i.createElement(d), m=i.getElementsByTagName(d)[0];
207 + a.async=1; a.src=e; m.parentNode.insertBefore(a,m);}
208 + })(window,document,'script','https://d1z78r8i505acl.cloudfront.net/playerAssets/1.6.10/vdo.js','vdo');
209 + vdo.add({
210 + otp: '$OTP',
211 + playbackInfo: '$playbackInfo',
212 + theme: '$vdo_player_theme',
213 + plugins: [{
214 + name: 'keyboard',
215 + options: {
216 + preset: 'default',
217 + bindings: {
218 + 'Left' : (player) => player.seek(player.currentTime - 15),
219 + 'Right' : (player) => player.seek(player.currentTime + 15),
220 + },
221 + }
222 + }],
223 + container: document.querySelector('#vdo$OTP'),
224 + })
225 + </script>
226 +END;
227 +
228 + if ($speedOptions !== false && preg_match($speedPattern, $speedOptions)) {
229 + $output .= <<<END
230 + <script>
231 + (function () {
232 + var originalReadyFunction = window.onVdoCipherAPIReady;
233 + // private API; do not use anywhere else; might change without notice
234 + var index = vdo.d.length - 1;
235 + window.onVdoCipherAPIReady = () => {
236 + if (originalReadyFunction) originalReadyFunction();
237 + var v_ = vdo.getObjects()[index];
238 + v_.addEventListener('load', () => {
239 + v_.availablePlaybackRates = [$speedOptions]
240 + });
241 + }
242 + })()
243 + </script>
244 +END;
203 245 }
204 - $output .= "}); </script>";
246 + } else if ($vdo_embed_version_str === 'v2') {
247 + $uniq = 'u' . rand();
248 + $output = <<<END
249 +<script src="https://player.vdocipher.com/v2/api.js"></script>
250 +<iframe
251 + src="https://player.vdocipher.com/v2/?otp=$OTP&playbackInfo=$playbackInfo"
252 + id="$uniq"
253 + style="height:$height;width:$width;max-width:100%;border:0;display: block;"
254 + allow="encrypted-media"
255 + allowfullscreen
256 +></iframe>
257 +<script>
258 +(function() {
259 + const iframe = document.querySelector('#$uniq');
260 + const player = VdoPlayer.getInstance(iframe);
261 + player.video.addEventListener('loadstart', async () => {
262 + const aspectRatio = (await player.api.getMetaData()).aspectRatio;
263 + if (iframe.style.height === 'auto' && iframe.style.width.endsWith('px')) {
264 + iframe.style.maxHeight = '100vh';
265 + if (CSS.supports('aspect-ratio', 1)) {
266 + iframe.style.aspectRatio = aspectRatio;
267 + } else {
268 + const offsetWidth = iframe.offsetWidth;
269 + iframe.style.height = Math.round(offsetWidth / aspectRatio) + 'px';
270 + }
271 + }
272 + });
273 +})();
274 +</script>
275 +END;
276 + if ($speedOptions !== false && preg_match($speedPattern, $speedOptions)) {
277 + $output .= <<<END
278 +<script>
279 +(function() {
280 + const iframe = document.querySelector('#$uniq')
281 + const player = VdoPlayer.getInstance(iframe);
282 + player.video.addEventListener('loadstart', async () => {
283 + player.api.updatePlayerConfig({playbackSpeedOptions: [$speedOptions]});
284 + });
285 +})();
286 +</script>
287 +END;
288 + }
289 +
205 290 } else {
206 - //New embed code
207 - if ($player_tech === '') {
208 - if (get_option('vdo_watermark_flash_html') === 'flash') {
209 - $player_tech = "*,-dash";
210 - }
211 - }
212 - $output .= "<div id='vdo$OTP' style='height:$height;width:$width;max-width:100%' ></div>";
213 - $output .= "<script>(function(v,i,d,e,o){v[o]=v[o]||{}; v[o].add = v[o].add || function V(a){".
214 - "(v[o].d=v[o].d||[]).push(a);};";
215 - $output .= "if(!v[o].l) { v[o].l=1*new Date(); a=i.createElement(d), m=i.getElementsByTagName(d)[0];";
216 - $output .= "a.async=1; a.src=e; m.parentNode.insertBefore(a,m);}";
217 - $output .= "})(window,document,'script','https://d1z78r8i505acl.cloudfront.net/playerAssets/";
218 - $output .= "$vdo_embed_version_str";
219 - $output .= "/vdo.js','vdo');";
220 - $output .= "vdo.add({";
221 - $output .= "otp: '$OTP',";
222 - $output .= "playbackInfo: '$playbackInfo',";
223 - $output .= "theme: '$vdo_player_theme',";
224 - if ($player_tech !== '') {
225 - $output .= "techoverride: [" ;
226 - $techarray = explode(',', $player_tech);
227 - for ($i = 0; $i < sizeof($techarray); $i++) {
228 - $techStr = $techarray[$i];
229 - $output .= "'$techStr'";
230 - if ($i !== sizeof($techarray)-1) {
231 - $output .= ", ";
232 - }
233 - }
234 - $output .= "],";
235 - }
236 - $output .= "container: document.querySelector('#vdo$OTP'),});";
237 - $output .= "</script>";
291 + $output = 'Invalid player selection: ' . $vdo_embed_version_str;
238 292 }
239 293 return $output;
240 294 }
241 295 add_shortcode('vdo', 'vdo_shortcode');
@@ -256,12 +310,20 @@
256 310 // add the menu item and register settings (3 functions), starts
257 311 if (is_admin()) { // admin actions
258 312 add_action('admin_init', 'register_vdo_settings');
259 313 add_action('admin_menu', 'vdo_menu');
260 -} else {
261 - // non-admin enqueues, actions, and filters
262 314 }
263 -function vdo_menu() {
315 +function vdo_menu()
316 +{
317 + if (get_option('vdo_show_plugin_in_sidebar') === "") {
318 + add_options_page(
319 + 'VdoCipher Options',
320 + 'VdoCipher',
321 + 'manage_options',
322 + 'vdocipher',
323 + 'vdo_options'
324 + );
325 + } else {
264 326 add_menu_page(
265 327 'VdoCipher Options',
266 328 'VdoCipher',
267 329 'manage_options',
@@ -268,22 +330,11 @@
268 330 'vdocipher',
269 331 'vdo_options',
270 332 plugin_dir_url(__FILE__).'images/logo.png'
271 333 );
272 - add_submenu_page(
273 - null,
274 - 'Video Player Themes',
275 - 'CustomPlayer',
276 - 'manage_options',
277 - 'themesvdo',
278 - 'themesvdo'
279 - );
334 + }
280 335 }
281 336
282 -function themesvdo() {
283 - include('include/player_themes.php');
284 -}
285 -
286 337 function vdo_options()
287 338 {
288 339 if (!get_option('vdo_default_height')) {
289 340 update_option('vdo_default_height', 'auto');
@@ -290,18 +341,15 @@
290 341 }
291 342 if (!get_option('vdo_default_width')) {
292 343 update_option('vdo_default_width', '1280');
293 344 }
294 - $vdo_client_key = get_option('vdo_client_key');
295 - if (!$vdo_client_key && strlen($vdo_client_key) != 64) {
296 - vdo_show_form_client_key();
297 - return "";
298 - }
299 345 if (!current_user_can('manage_options')) {
300 - wp_die(__('You do not have sufficient permissions to access this page.'));
346 + wp_die(__('You do not have sufficient permissions to access this page.'));
301 347 }
302 348 include('include/options.php');
349 + return "";
303 350 }
351 +
304 352 function register_vdo_settings()
305 353 {
306 354 // whitelist options
307 355 register_setting('vdo_option-group', 'vdo_client_key');
@@ -309,43 +357,82 @@
309 357 register_setting('vdo_option-group', 'vdo_default_width');
310 358 register_setting('vdo_option-group', 'vdo_annotate_code');
311 359 register_setting('vdo_option-group', 'vdo_embed_version');
312 360 register_setting('vdo_option-group', 'vdo_player_theme');
313 - register_setting('vdo_option-group', 'vdo_watermark_flash_html');
314 - register_setting('vdo_custom_theme', 'vdo_player_theme_options');
361 + register_setting('vdo_option-group', 'vdo_plugin_version');
362 + register_setting('vdo_option-group', 'vdo_player_speed');
363 + register_setting('vdo_option-group', 'vdo_show_plugin_in_sidebar');
315 364 }
316 365 // add the menu item and register settings (3 functions), ends
317 366
318 -// section for client key for new users
319 -function vdo_show_form_client_key()
367 +// Activation Hook starts
368 +function vdo_activate()
320 369 {
321 - include('include/setting_form.php');
370 + add_option('vdo_default_height', 'auto');
371 + add_option('vdo_default_width', 1280);
372 + add_option('vdo_embed_version', VDOCIPHER_PLAYER_VERSION);
373 + add_option('vdo_player_theme', VDOCIPHER_DEFAULT_THEME);
374 + add_option('vdo_show_plugin_in_sidebar', 'true');
322 375 }
376 +register_activation_hook(__FILE__, 'vdo_activate');
323 377
324 -// Activation Hook starts
325 -function vdo_activate()
378 +// Registering and specifying Gutenberg block
379 +function vdo_register_block()
326 380 {
327 - if ((get_option('vdo_default_height')) == false) {
328 - update_option('vdo_default_height', 'auto');
381 + if (!function_exists('register_block_type')) {
382 + return ;
329 383 }
330 - if ((get_option('vdo_default_width')) == false) {
331 - update_option('vdo_default_width', '1280');
332 - }
333 - //https://stackoverflow.com/a/2173318/5022684
334 - if ((get_option('vdo_embed_version')) == false) {
335 - update_option('vdo_embed_version', '1.6.4');
336 - }
337 - if ((get_option('vdo_player_theme')) == false) {
338 - update_option('vdo_player_theme', '9ae8bbe8dd964ddc9bdb932cca1cb59a');
339 - }
340 - if ((get_option('vdo_watermark_flash_html')) == false) {
341 - update_option('vdo_watermark_flash_html', 'html5');
342 - }
384 + wp_register_script(
385 + 'vdo-block-script',
386 + plugins_url('/include/block/dist/blocks.build.js', __FILE__),
387 + array('wp-blocks', 'wp-element', 'wp-editor', 'wp-i18n')
388 + );
389 + wp_register_style(
390 + 'vdo-block-base-style',
391 + plugins_url('/include/block/dist/blocks.style.build.css', __FILE__),
392 + array('wp-blocks')
393 + );
394 + wp_register_style(
395 + 'vdo-block-editor-style',
396 + plugins_url('/include/block/dist/blocks.editor.build.css', __FILE__),
397 + array('wp-edit-blocks')
398 + );
399 + register_block_type(
400 + 'vdo/block',
401 + array(
402 + 'editor_script'=>'vdo-block-script',
403 + 'editor_style'=>'vdo-block-editor-style',
404 + 'style'=>'vdo-block-base-style',
405 + 'attributes'=>array(
406 + 'id'=>array(
407 + 'type'=>'string',
408 + ),
409 + 'width'=>array(
410 + 'type'=>'string',
411 + 'default'=>get_option('vdo_default_width')
412 + ),
413 + 'height'=>array(
414 + 'type'=>'string',
415 + 'default'=>get_option('vdo_default_height')
416 + ),
417 + 'vdo_theme'=>array(
418 + 'type'=>'string',
419 + 'default'=>get_option('vdo_player_theme')
420 + ),
421 + 'vdo_version'=>array(
422 + 'type'=>'string',
423 + 'default'=>get_option('vdo_embed_version')
424 + ),
425 + ),
426 + 'render_callback'=>'vdo_shortcode'
427 + )
428 + );
343 429 }
344 -register_activation_hook(__FILE__, 'vdo_activate');
345 430
431 +add_action('init', 'vdo_register_block');
432 +
346 433 // Deactivation Hook starts
347 -function vdo_deactivate()
434 +function vdo_uninstall()
348 435 {
349 436 delete_option('vdo_client_key');
350 437 delete_option('vdo_default_width');
351 438 delete_option('vdo_default_height');
@@ -351,12 +438,13 @@
351 438 delete_option('vdo_default_height');
352 439 delete_option('vdo_annotate_code');
353 440 delete_option('vdo_embed_version');
354 441 delete_option('vdo_player_theme');
355 - delete_option('vdo_watermark_flash_html');
356 - delete_option('vdo_player_theme_options');
442 + delete_option('vdo_plugin_version');
443 + delete_option('vdo_player_speed');
444 + delete_option('vdo_show_plugin_in_sidebar');
357 445 }
358 -register_deactivation_hook(__FILE__, 'vdo_deactivate');
446 +register_uninstall_hook(__FILE__, 'vdo_uninstall');
359 447
360 448 // Admin notice to configure plugin for new installs, starts
361 449 function vdo_admin_notice()
362 450 {