PluginProbe
VdoCipher: Secure Video Player and Hosting / 1.26
VdoCipher: Secure Video Player and Hosting v1.26
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 +470 -158 1.61.26 View file →
@@ -1,192 +1,504 @@
1 1 <?php
2 2 /**
3 3 * Plugin Name: VdoCipher
4 - * Plugin URI: http://www.vdocipher.com
4 + * Plugin URI: https://www.vdocipher.com
5 5 * Description: Secured video hosting for wordpress
6 - * Version: 1.6
6 + * Version: 1.26
7 7 * Author: VdoCipher
8 - * Author URI: http://www.vdocipher.com
8 + * Author URI: https://www.vdocipher.com
9 9 * License: GPL2
10 10 */
11 11
12 -
13 12 if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) {
14 13 header($_SERVER['SERVER_PROTOCOL'] . ' 404 Not Found');
15 - exit("<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML 2.0//EN\">\r\n<html><head>\r\n<title>404 Not Found</title>\r\n</head><body>\r\n<h1>Not Found</h1>\r\n<p>The requested URL " . $_SERVER['SCRIPT_NAME'] . " was not found on this server.</p>\r\n</body></html>");
14 + exit("<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML 2.0//EN\">\r\n<html><head>\r\n<title>404 Not Found</title>\r\n".
15 + "</head><body>\r\n<h1>Not Found</h1>\r\n<p>The requested URL " . $_SERVER['SCRIPT_NAME'] . " was not found on ".
16 + "this server.</p>\r\n</body></html>");
16 17 }
17 18
18 -function vdo_send($action, $params, $posts = false){
19 - $client_key = get_option('vdo_client_key');
20 - if ($client_key == false || $client_key == "") {
21 - return "Plugin not configured. Please set the key to embed videos.";
22 - }
23 - $curl = curl_init();
24 - curl_setopt($curl, CURLOPT_FAILONERROR, true);
25 - curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);
26 - curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
27 - curl_setopt($curl, CURLOPT_VERBOSE, true);
28 - curl_setopt($curl, CURLOPT_FAILONERROR, false);
29 - //curl_setopt($curl, CURLOPT_PROXY, "xxxxxxxxxxxxxxxxx:xxxx");
19 +if (!defined('VDOCIPHER_PLUGIN_VERSION')) {
20 + define('VDOCIPHER_PLUGIN_VERSION', '1.25');
21 +}
30 22
31 - $getData = http_build_query($params);
32 - curl_setopt($curl, CURLOPT_POST, true);
33 - $postData = "clientSecretKey=$client_key";
34 - if ($posts) {
35 - $postData .= "&". $posts;
36 - }
37 - curl_setopt($curl, CURLOPT_POSTFIELDS, $postData);
38 - $url = "http://api.vdocipher.com/v2/$action/?$getData";
39 - curl_setopt($curl, CURLOPT_URL,$url);
40 - $html = curl_exec($curl);
41 - if (!$html) {
42 - echo curl_error($curl);
43 - }
44 - curl_close($curl);
45 - return $html;
23 +if (!defined('VDOCIPHER_PLAYER_VERSION')) {
24 + define('VDOCIPHER_PLAYER_VERSION', '1.6.10');
46 25 }
47 -function vdo_shortcode( $atts ) {
48 - extract( shortcode_atts(
49 - array(
50 - 'title' => 'TITLE_OF_VIDEO',
51 - 'width' => get_option('vdo_default_width'),
52 - 'height' => get_option('vdo_default_height'),
53 - 'id' => 'id',
54 - 'no_annotate'=> false
55 - ), $atts )
56 - );
57 - if(!$atts['id']){
58 - if(!$atts['title'])
59 - return "Required argument id for embedded video not found.";
60 - $params = array(
61 - 'search'=>array(
62 - 'title'=>$title
63 - ),
64 - 'page'=>1,
65 - 'limit'=>30,
66 - 'type'=>'json'
67 - );
68 - $video = vdo_send("videos", $params);
69 - $video = json_decode($video);
70 - if($video == null)
71 - return "404. Video not found.";
72 - $video = $video[0]->id;
73 - if ($video == null) {
74 - return "No video with given title found.";
75 - }
76 - }
77 - else
78 - $video = $id;
79 26
80 - $params = array(
81 - 'video'=>$video
82 - );
83 - $anno = false;
84 - if (!function_exists("eval_date")) {
85 - function eval_date($matches){
86 - return date($matches[1]);
87 - }
88 - }
89 - if (get_option('vdo_annotate_code') != "") {
90 - $current_user = wp_get_current_user();
91 - $vdo_annotate_code = get_option('vdo_annotate_code');
92 - $vdo_annotate_code = apply_filters('vdocipher_annotate_preprocess', $vdo_annotate_code);
93 - if (is_user_logged_in()) {
94 - $vdo_annotate_code = str_replace('{name}', $current_user->display_name , $vdo_annotate_code);
95 - $vdo_annotate_code = str_replace('{email}', $current_user->user_email , $vdo_annotate_code);
96 - $vdo_annotate_code = str_replace('{username}', $current_user->user_login , $vdo_annotate_code);
97 - $vdo_annotate_code = str_replace('{id}', $current_user->ID , $vdo_annotate_code);
98 - }
99 - $vdo_annotate_code = str_replace('{ip}', $_SERVER['REMOTE_ADDR'] , $vdo_annotate_code);
100 - $vdo_annotate_code = preg_replace_callback('/\{date\.([^\}]+)\}/', "eval_date" , $vdo_annotate_code);
101 - $vdo_annotate_code = apply_filters('vdocipher_annotate_postprocess', $vdo_annotate_code);
102 - if(!$no_annotate)
103 - $anno = "annotate=". urlencode($vdo_annotate_code);
104 - }
105 - $OTP = vdo_send("otp", $params, $anno);
106 - $OTP = json_decode($OTP);
107 - if(is_null($OTP)){
108 - $output = "<span id='vdo$OTP' style='background:#555555;color:#FFFFFF'><h4>Video not found</h4></span>";
109 - return $output;
110 - }
111 - $OTP = $OTP->otp;
27 +function vdo_plugin_check_version()
28 +{
29 +// This applies only for installs 1.24 and below
30 + if (!get_option('vdo_plugin_version')) {
31 + if (preg_match('/^1\.[0123456]\.[0-9]{1,2}$/', get_option('vdo_embed_version'))) {
32 + update_option('vdo_embed_version', VDOCIPHER_PLAYER_VERSION);
33 + }
34 + if (preg_match('/^1\.[01234]\.[0-9]{1,2}$/', get_option('vdo_embed_version'))) {
35 + update_option('vdo_default_height', 'auto');
36 + }
37 + update_option('vdo_plugin_version', VDOCIPHER_PLUGIN_VERSION);
38 + return ;
39 + }
40 + // This applies for all new installs after 1.25
41 + if (VDOCIPHER_PLUGIN_VERSION !== get_option('vdo_plugin_version')) {
42 + if (preg_match('/^1\.[0-9]{1,2}\.[0-9]{1,2}$/', get_option('vdo_embed_version'))) {
43 + update_option('vdo_embed_version', VDOCIPHER_PLAYER_VERSION);
44 + }
45 + update_option('vdo_plugin_version', VDOCIPHER_PLUGIN_VERSION);
46 + return ;
47 + }
48 + return ;
49 +}
112 50
113 - $output = "<span id='vdo$OTP'></span>";
114 - $output .= "<script src='https://de122v0opjemw.cloudfront.net/utils/playerInit.php?otp=$OTP&height=$height&width=$width&'></script>";
115 - return $output;
51 +add_action('plugins_loaded', 'vdo_plugin_check_version');
52 +
53 +// Function called to retrieve id for when title given, starts
54 +function vdo_retrieve_id($title)
55 +{
56 + $client_key = get_option('vdo_client_key');
57 + if ($client_key == false || $client_key == "") {
58 + return "Plugin not configured. Please set the API key to embed videos.";
59 + }
60 + $url = "https://dev.vdocipher.com/api/videos?q=$title";
61 + $headers = array(
62 + 'Authorization'=>'Apisecret '.$client_key,
63 + 'Content-Type'=>'application/json',
64 + 'Accept'=>'application/json'
65 + );
66 + $response = wp_remote_post($url, array(
67 + 'method' => 'GET',
68 + 'headers' => $headers
69 + ));
70 + if (is_wp_error($response)) {
71 + $error_message = $response->get_error_message();
72 + echo "VdoCipher: Something went wrong: $error_message";
73 + return "";
74 + }
75 + $video_json_response = $response['body'];
76 + $video_list_object = json_decode($video_json_response);
77 + $video_list = $video_list_object->rows;
78 + $video_object = $video_list[0];
79 + $video_id = $video_object->id;
80 + return $video_id;
116 81 }
82 +// Function called to retrieve id for when title given, ends
117 83
118 -add_shortcode( 'vdo', 'vdo_shortcode' );
84 +// Function called to get OTP, starts
85 +function vdo_otp($video, $otp_post_array = array())
86 +{
87 + $client_key = get_option('vdo_client_key');
88 + if ($client_key == false || $client_key == "") {
89 + return "Plugin not configured. Please set the API key to embed videos.";
90 + }
91 + $url = "https://dev.vdocipher.com/api/videos/$video/otp";
92 + $headers = array(
93 + 'Authorization'=>'Apisecret '.$client_key,
94 + 'Content-Type'=>'application/json',
95 + 'Accept'=>'application/json'
96 + );
97 + $otp_post_json = json_encode($otp_post_array);
98 + $response = wp_remote_post(
99 + $url,
100 + array(
101 + 'method' => 'POST',
102 + 'headers' => $headers,
103 + 'body' => $otp_post_json
104 + )
105 + );
106 + if (is_wp_error($response)) {
107 + $error_message = $response->get_error_message();
108 + echo "VdoCipher: Something went wrong: $error_message";
109 + return "";
110 + }
111 + $OTP_Response = $response['body'];
112 + return json_decode($OTP_Response);
113 +}
114 +// Function called to get OTP, ends
119 115
116 +// VdoCipher Shortcode starts
117 +function vdo_shortcode($atts)
118 +{
119 + $vdo_args = shortcode_atts(
120 + array(
121 + 'title' => 'TITLE_OF_VIDEO',
122 + 'width' => get_option('vdo_default_width'),
123 + 'height' => get_option('vdo_default_height'),
124 + 'id' => 'id',
125 + 'no_annotate'=> false,
126 + 'version'=> 0,
127 + 'vdo_theme'=> false,
128 + 'vdo_version'=> false,
129 + 'player_tech'=> ''
130 + ),
131 + $atts
132 + );
133 + $title = $vdo_args['title'];
134 + $width = $vdo_args['width'];
135 + $height = $vdo_args['height'];
136 + $id = $vdo_args['id'];
137 + $no_annotate = $vdo_args['no_annotate'];
138 + $version = $vdo_args['version'];
139 + $vdo_theme = $vdo_args['vdo_theme'];
140 + $vdo_version = $vdo_args['vdo_version'];
141 + $player_tech = $vdo_args['player_tech'];
120 142
121 -/// adding the settings link
122 -$plugin = plugin_basename(__FILE__);
123 -add_filter("plugin_action_links_$plugin", 'vdo_settings_link' );
143 + if (!preg_match('/.*px$/', $width)) {
144 + $width = $width."px";
145 + }
146 + if (!preg_match('/.*px$/', $height)) {
147 + if ($height != 'auto') {
148 + $height = $height."px";
149 + }
150 + }
151 + if (!$atts['id']) {
152 + if (!$atts['title']) {
153 + return "Required argument id for embedded video not found.";
154 + } else {
155 + $video = vdo_retrieve_id($title);
156 + if ($video == null) {
157 + return "404. Video not found.";
158 + }
159 + }
160 + } else {
161 + $video = $id;
162 + }
124 163
125 -function vdo_settings_link($links) {
126 - $settings_link = '<a href="options-general.php?page=vdocipher.php">Settings</a>';
127 - array_unshift($links, $settings_link);
128 - return $links;
164 + // Initialize $otp_post_array, to be sent as part of OTP request, as for time-to-live 300
165 + $otp_post_array = array("ttl" => 300);
166 + if (!function_exists("eval_date")) {
167 + function eval_date($matches)
168 + {
169 + return current_time($matches[1]);
170 + }
171 + }
172 + if (get_option('vdo_annotate_code') != "") {
173 + $current_user = wp_get_current_user();
174 + $vdo_annotate_code = get_option('vdo_annotate_code');
175 + $vdo_annotate_code = apply_filters('vdocipher_annotate_preprocess', $vdo_annotate_code);
176 + if (is_user_logged_in()) {
177 + $vdo_annotate_code = str_replace('{name}', $current_user->display_name, $vdo_annotate_code);
178 + $vdo_annotate_code = str_replace('{email}', $current_user->user_email, $vdo_annotate_code);
179 + $vdo_annotate_code = str_replace('{username}', $current_user->user_login, $vdo_annotate_code);
180 + $vdo_annotate_code = str_replace('{id}', $current_user->ID, $vdo_annotate_code);
181 + }
182 + $vdo_annotate_code = str_replace('{ip}', $_SERVER['REMOTE_ADDR'], $vdo_annotate_code);
183 + $vdo_annotate_code = preg_replace_callback('/\{date\.([^\}]+)\}/', "eval_date", $vdo_annotate_code);
184 + $vdo_annotate_code = apply_filters('vdocipher_annotate_postprocess', $vdo_annotate_code);
185 + // Add annotate code to $otp_post_array, which will be
186 + // converted to Json and then sent as POST body to API endpoint
187 + if (!$no_annotate) {
188 + $otp_post_array["annotate"] = $vdo_annotate_code;
189 + }
190 + }
191 + // OTP is requested via vdo_otp function
192 + $OTP_Response = vdo_otp($video, $otp_post_array);
193 + $OTP = $OTP_Response->otp;
194 + $playbackInfo = $OTP_Response->playbackInfo;
195 +
196 + if (is_null($OTP)) {
197 + $output = "<span id='vdo$OTP' style='background:#555555;color:#FFFFFF'><h4>Video not found</h4></span>";
198 + return $output;
199 + }
200 +
201 + // Version, legacy, for flash only
202 + $version = 0;
203 + if (isset($atts['version'])) {
204 + $version = $atts['version'];
205 + }
206 +
207 + // Video Embed version is retrieved from options table or from shortcode attribute
208 + if ((get_option('vdo_embed_version')) == false) {
209 + update_option('vdo_embed_version', VDOCIPHER_PLAYER_VERSION);
210 + }
211 + if (!$vdo_version) {
212 + $vdo_embed_version_str = get_option('vdo_embed_version');
213 + } else {
214 + $vdo_embed_version_str = $vdo_version;
215 + }
216 +
217 + // Video Player theme, update and as shortcode attribute
218 + if ((get_option('vdo_player_theme')) == false) {
219 + update_option('vdo_player_theme', '9ae8bbe8dd964ddc9bdb932cca1cb59a');
220 + }
221 + if (!$vdo_theme) {
222 + $vdo_player_theme = get_option('vdo_player_theme');
223 + } else {
224 + $vdo_player_theme = $vdo_theme;
225 + }
226 +
227 + // tech override custom names
228 + switch ($player_tech) {
229 + case "flash":
230 + $player_tech = "*,-dash";
231 + break;
232 + case "nohtml5":
233 + $player_tech = "*,-dash";
234 + break;
235 + case "noflash":
236 + $player_tech = "*,-hss";
237 + break;
238 + case "nozen":
239 + $player_tech = "*,-zen";
240 + break;
241 + case "noios":
242 + $player_tech = "*,-hlse";
243 + break;
244 + default:
245 + break;
246 + }
247 +
248 + // Old Embed Code
249 + if ($vdo_embed_version_str === '0.5') {
250 + $output = "<div id='vdo$OTP' style='height:$height;width:$width;max-width:100%' ></div>";
251 + $output .= "<script> (function(v,i,d,e,o){v[o]=v[o]||{}; v[o].add = v[o].add || function V(a){".
252 + " (v[o].d=v[o].d||[]).push(a);};";
253 + $output .= "if(!v[o].l) { v[o].l=1*new Date();a=i.createElement(d),m=i.getElementsByTagName(d)[0];a.async=1;".
254 + "a.src=e; m.parentNode.insertBefore(a,m);}";
255 + $output .= " })(window,document,'script','//de122v0opjemw.cloudfront.net/vdo.js','vdo'); vdo.add({ ";
256 + $output .= "o: '$OTP', ";
257 + if ($version == 32) {
258 + $output .= "version: '$version' ";
259 + }
260 + $output .= "}); </script>";
261 + } else {
262 + //New embed code
263 + if ($player_tech === '') {
264 + if (get_option('vdo_watermark_flash_html') === 'flash') {
265 + $player_tech = "*,-dash";
266 + }
267 + }
268 + $output = "<div id='vdo$OTP' style='height:$height;width:$width;max-width:100%' ></div>";
269 + $output .= "<script>(function(v,i,d,e,o){v[o]=v[o]||{}; v[o].add = v[o].add || function V(a){".
270 + "(v[o].d=v[o].d||[]).push(a);};";
271 + $output .= "if(!v[o].l) { v[o].l=1*new Date(); a=i.createElement(d), m=i.getElementsByTagName(d)[0];";
272 + $output .= "a.async=1; a.src=e; m.parentNode.insertBefore(a,m);}";
273 + $output .= "})(window,document,'script','https://d1z78r8i505acl.cloudfront.net/playerAssets/";
274 + $output .= "$vdo_embed_version_str";
275 + $output .= "/vdo.js','vdo');";
276 + $output .= "vdo.add({";
277 + $output .= "otp: '$OTP',";
278 + $output .= "playbackInfo: '$playbackInfo',";
279 + $output .= "theme: '$vdo_player_theme',";
280 + $output .= "plugins: [{";
281 + $output .= "name: 'keyboard',";
282 + $output .= "options: {";
283 + $output .= "preset: 'default',";
284 + $output .= "bindings: {";
285 + $output .= "'Left' : (player) => player.seek(player.currentTime - 15),";
286 + $output .= "'Right' : (player) => player.seek(player.currentTime + 15),";
287 + $output .= "},";
288 + $output .= "}";
289 + $output .= "}],";
290 + if ($player_tech !== '') {
291 + $output .= "techoverride: [" ;
292 + $techarray = explode(',', $player_tech);
293 + for ($i = 0; $i < sizeof($techarray); $i++) {
294 + $techStr = $techarray[$i];
295 + $output .= "'$techStr'";
296 + if ($i !== sizeof($techarray)-1) {
297 + $output .= ", ";
298 + }
299 + }
300 + $output .= "],";
301 + }
302 + $output .= "container: document.querySelector('#vdo$OTP'),});";
303 + $output .= "</script>";
304 + }
305 + return $output;
129 306 }
307 +add_shortcode('vdo', 'vdo_shortcode');
308 +// VdoCipher Shortcode ends
130 309
310 +// adding the Settings link, starts
311 +$plugin = plugin_basename(__FILE__);
312 +add_filter("plugin_action_links_$plugin", 'vdo_settings_link');
131 313
132 -/// add the menu item and register settings
133 -if ( is_admin() ){ // admin actions
134 - add_action( 'admin_menu', 'vdo_menu' );
135 - add_action( 'admin_init', 'register_vdo_settings' );
314 +function vdo_settings_link($links)
315 +{
316 + $settings_link = '<a href="options-general.php?page=vdocipher">Settings</a>';
317 + array_unshift($links, $settings_link);
318 + return $links;
319 +}
320 +// adding the Settings link, ends
321 +
322 +// add the menu item and register settings (3 functions), starts
323 +if (is_admin()) { // admin actions
324 + add_action('admin_init', 'register_vdo_settings');
325 + add_action('admin_menu', 'vdo_menu');
136 326 } else {
137 - // non-admin enqueues, actions, and filters
327 + // non-admin enqueues, actions, and filters
138 328 }
139 -function vdo_menu(){
140 - add_options_page( 'VdoCipher Options', 'VdoCipher', 'manage_options', 'vdocipher', 'vdo_options' );
329 +function vdo_menu()
330 +{
331 + add_menu_page(
332 + 'VdoCipher Options',
333 + 'VdoCipher',
334 + 'manage_options',
335 + 'vdocipher',
336 + 'vdo_options',
337 + plugin_dir_url(__FILE__).'images/logo.png'
338 + );
339 + add_submenu_page(
340 + null,
341 + 'Video Player Themes',
342 + 'CustomPlayer',
343 + 'manage_options',
344 + 'themesvdo',
345 + 'themesvdo'
346 + );
141 347 }
142 -function vdo_options(){
143 - if (!get_option('vdo_default_height'))
144 - update_option('vdo_default_height', '360');
145 - if (!get_option('vdo_default_width'))
146 - update_option('vdo_default_width', '640');
147 - $vdo_client_key = get_option('vdo_client_key');
148 - if (!$vdo_client_key && strlen($vdo_client_key) != 64) {
149 - vdo_show_form_client_key();
150 - return "";
151 - }
152 - if ( !current_user_can( 'manage_options' ) ) {
153 - wp_die( __( 'You do not have sufficient permissions to access this page.' ) );
154 - }
155 - include('include/options.php');
348 +
349 +function themesvdo()
350 +{
351 + include('include/player_themes.php');
156 352 }
157 -function register_vdo_settings() { // whitelist options
158 - register_setting( 'vdo_option-group', 'vdo_client_key' );
159 - register_setting( 'vdo_option-group', 'vdo_default_height' );
160 - register_setting( 'vdo_option-group', 'vdo_default_width' );
161 - register_setting( 'vdo_option-group', 'vdo_annotate_code' );
353 +
354 +function vdo_options()
355 +{
356 + if (!get_option('vdo_default_height')) {
357 + update_option('vdo_default_height', 'auto');
358 + }
359 + if (!get_option('vdo_default_width')) {
360 + update_option('vdo_default_width', '1280');
361 + }
362 + $vdo_client_key = get_option('vdo_client_key');
363 + if (!$vdo_client_key && strlen($vdo_client_key) != 64) {
364 + vdo_show_form_client_key();
365 + return "";
366 + }
367 + if (!current_user_can('manage_options')) {
368 + wp_die(__('You do not have sufficient permissions to access this page.'));
369 + }
370 + include('include/options.php');
162 371 }
372 +function register_vdo_settings()
373 +{
374 + // whitelist options
375 + register_setting('vdo_option-group', 'vdo_client_key');
376 + register_setting('vdo_option-group', 'vdo_default_height');
377 + register_setting('vdo_option-group', 'vdo_default_width');
378 + register_setting('vdo_option-group', 'vdo_annotate_code');
379 + register_setting('vdo_option-group', 'vdo_embed_version');
380 + register_setting('vdo_option-group', 'vdo_player_theme');
381 + register_setting('vdo_option-group', 'vdo_watermark_flash_html');
382 + register_setting('vdo_option-group', 'vdo_plugin_version');
383 + register_setting('vdo_custom_theme', 'vdo_player_theme_options');
384 +}
385 +// add the menu item and register settings (3 functions), ends
163 386
164 -/// adding a section for asking for the client key
165 -function vdo_show_form_client_key(){
166 - include('include/setting_form.php');
387 +// section for client key for new users
388 +function vdo_show_form_client_key()
389 +{
390 + include('include/setting_form.php');
167 391 }
168 -register_deactivation_hook(__FILE__, 'vdo_deactivate');
169 -function vdo_deactivate(){
170 - delete_option( 'vdo_client_key' );
171 - delete_option('vdo_default_width');
172 - delete_option('vdo_default_height');
173 - delete_option('vdo_annotate_code');
392 +
393 +// Activation Hook starts
394 +function vdo_activate()
395 +{
396 + if ((get_option('vdo_default_height')) == false) {
397 + update_option('vdo_default_height', 'auto');
398 + }
399 + if ((get_option('vdo_default_width')) == false) {
400 + update_option('vdo_default_width', '1280');
401 + }
402 + //https://stackoverflow.com/a/2173318/5022684
403 + if ((get_option('vdo_embed_version')) == false) {
404 + update_option('vdo_embed_version', VDOCIPHER_PLAYER_VERSION);
405 + }
406 + if ((get_option('vdo_player_theme')) == false) {
407 + update_option('vdo_player_theme', '9ae8bbe8dd964ddc9bdb932cca1cb59a');
408 + }
409 + if ((get_option('vdo_watermark_flash_html')) == false) {
410 + update_option('vdo_watermark_flash_html', 'html5');
411 + }
412 + if ((get_option('vdo_plugin_version')) == false) {
413 + update_option('vdo_plugin_version', VDOCIPHER_PLUGIN_VERSION);
414 + }
174 415 }
175 -function vdo_activate() {
176 - if (!get_option('vdo_default_height'))
177 - update_option('vdo_default_height', '400');
178 - if (!get_option('vdo_default_width'))
179 - update_option('vdo_default_width', '640');
416 +register_activation_hook(__FILE__, 'vdo_activate');
417 +
418 +// Registering and specifying Gutenberg block
419 +function vdo_register_block()
420 +{
421 + if (!function_exists('register_block_type')) {
422 + return ;
423 + }
424 + wp_register_script(
425 + 'vdo-block-script',
426 + plugins_url('/include/block/dist/blocks.build.js', __FILE__),
427 + array('wp-blocks', 'wp-element', 'wp-editor', 'wp-i18n')
428 + );
429 + wp_register_style(
430 + 'vdo-block-base-style',
431 + plugins_url('/include/block/dist/blocks.style.build.css', __FILE__),
432 + array('wp-blocks')
433 + );
434 + wp_register_style(
435 + 'vdo-block-editor-style',
436 + plugins_url('/include/block/dist/blocks.editor.build.css', __FILE__),
437 + array('wp-edit-blocks')
438 + );
439 + register_block_type(
440 + 'vdo/block',
441 + array(
442 + 'editor_script'=>'vdo-block-script',
443 + 'editor_style'=>'vdo-block-editor-style',
444 + 'style'=>'vdo-block-base-style',
445 + 'attributes'=>array(
446 + 'id'=>array(
447 + 'type'=>'string',
448 + ),
449 + 'width'=>array(
450 + 'type'=>'string',
451 + 'default'=>get_option('vdo_default_width')
452 + ),
453 + 'height'=>array(
454 + 'type'=>'string',
455 + 'default'=>get_option('vdo_default_height')
456 + ),
457 + 'vdo_theme'=>array(
458 + 'type'=>'string',
459 + 'default'=>get_option('vdo_player_theme')
460 + ),
461 + 'vdo_version'=>array(
462 + 'type'=>'string',
463 + 'default'=>get_option('vdo_embed_version')
464 + ),
465 + ),
466 + 'render_callback'=>'vdo_shortcode'
467 + )
468 + );
180 469 }
181 -register_activation_hook( __FILE__, 'vdo_activate' );
182 -function vdo_admin_notice() {
183 - if((!get_option('vdo_client_key') || strlen(get_option('vdo_client_key')) != 64) && basename($_SERVER['PHP_SELF']) == "plugins.php" ){
184 - ?>
185 - <div class="error">
186 - <p>The VdoCipher plugin is not ready. <a href="options-general.php?page=vdocipher">Click here to configure</a>
187 - </p>
188 - </div>
189 - <?php
190 - }
470 +
471 +add_action('init', 'vdo_register_block');
472 +
473 +// Deactivation Hook starts
474 +function vdo_deactivate()
475 +{
476 + delete_option('vdo_client_key');
477 + delete_option('vdo_default_width');
478 + delete_option('vdo_default_height');
479 + delete_option('vdo_annotate_code');
480 + delete_option('vdo_embed_version');
481 + delete_option('vdo_player_theme');
482 + delete_option('vdo_watermark_flash_html');
483 + delete_option('vdo_player_theme_options');
484 + delete_option('vdo_plugin_version');
191 485 }
192 -add_action( 'admin_notices', 'vdo_admin_notice' );
486 +register_deactivation_hook(__FILE__, 'vdo_deactivate');
487 +
488 +// Admin notice to configure plugin for new installs, starts
489 +function vdo_admin_notice()
490 +{
491 + if ((!get_option('vdo_client_key') || strlen(get_option('vdo_client_key')) != 64)
492 + && basename($_SERVER['PHP_SELF']) == "plugins.php"
493 + ) {
494 + ?>
495 + <div class="error">
496 + <p>
497 + The VdoCipher plugin is not ready.
498 + <a href="options-general.php?page=vdocipher">Click here to configure</a>
499 + </p>
500 + </div>
501 + <?php
502 + }
503 +}
504 +add_action('admin_notices', 'vdo_admin_notice');