PluginProbe
VdoCipher: Secure Video Player and Hosting / 1.18
VdoCipher: Secure Video Player and Hosting v1.18
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 +75 -189 1.231.18 View file →
@@ -1,12 +1,12 @@
1 1 <?php
2 2 /**
3 3 * Plugin Name: VdoCipher
4 - * Plugin URI: https://www.vdocipher.com
4 + * Plugin URI: http://www.vdocipher.com
5 5 * Description: Secured video hosting for wordpress
6 - * Version: 1.23
6 + * Version: 1.18
7 7 * Author: VdoCipher
8 - * Author URI: https://www.vdocipher.com
8 + * Author URI: http://www.vdocipher.com
9 9 * License: GPL2
10 10 */
11 11
12 12 if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) {
@@ -15,55 +15,21 @@
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) {
19 +function vdo_send($action, $params, $posts = array())
20 +{
21 21 $client_key = get_option('vdo_client_key');
22 22 if ($client_key == false || $client_key == "") {
23 - return "Plugin not configured. Please set the API key to embed videos.";
23 + return "Plugin not configured. Please set the key to embed videos.";
24 24 }
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 "";
39 - }
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 -}
47 -// Function called to retrieve id for when title given, ends
48 25
49 -// Function called to get OTP, starts
50 -function vdo_otp($video, $otp_post_array = array()) {
51 - $client_key = get_option('vdo_client_key');
52 - if ($client_key == false || $client_key == "") {
53 - return "Plugin not configured. Please set the API key to embed videos.";
54 - }
55 - $url = "https://dev.vdocipher.com/api/videos/$video/otp";
56 - $headers = array(
57 - 'Authorization'=>'Apisecret '.$client_key,
58 - 'Content-Type'=>'application/json',
59 - 'Accept'=>'application/json'
60 - );
61 - $otp_post_json = json_encode($otp_post_array);
62 - $response = wp_remote_post($url, array(
26 + $getData = http_build_query($params);
27 + $posts["clientSecretKey"] = $client_key;
28 + $url = "http://api.vdocipher.com/v2/$action/?$getData";
29 + $response = wp_safe_remote_post($url, array(
63 30 'method' => 'POST',
64 - 'headers' => $headers,
65 - 'body' => $otp_post_json
31 + 'body' => $posts
66 32 ));
67 33 if (is_wp_error($response)) {
68 34 $error_message = $response->get_error_message();
69 35 echo "VdoCipher: Something went wrong: $error_message";
@@ -68,14 +34,10 @@
68 34 $error_message = $response->get_error_message();
69 35 echo "VdoCipher: Something went wrong: $error_message";
70 36 return "";
71 37 }
72 - $OTP_Response = $response['body'];
73 - return json_decode($OTP_Response);
38 + return $response['body'];
74 39 }
75 -// Function called to get OTP, ends
76 -
77 -// VdoCipher Shortcode starts
78 40 function vdo_shortcode($atts)
79 41 {
80 42 extract(shortcode_atts(
81 43 array(
@@ -84,33 +46,40 @@
84 46 'height' => get_option('vdo_default_height') . "px",
85 47 'id' => 'id',
86 48 'no_annotate'=> false,
87 49 'version'=> 0,
88 - 'vdo_theme'=> false,
89 - 'player_tech'=> ''
90 50 ),
91 51 $atts
92 52 ));
93 - if ((get_option('vdo_default_height')) == 'auto') {
94 - $height = 'auto';
95 - }
96 53 if (!$atts['id']) {
97 54 if (!$atts['title']) {
98 55 return "Required argument id for embedded video not found.";
99 56 }
100 - else {
101 - $video = vdo_retrieve_id($title);
102 - if ($video == null) {
103 - return "404. Video not found.";
104 - }
57 + $params = array(
58 + 'search'=>array(
59 + 'title'=>$title
60 + ),
61 + 'page'=>1,
62 + 'limit'=>30,
63 + 'type'=>'json'
64 + );
65 + $video = vdo_send("videos", $params);
66 + $video = json_decode($video);
67 + if ($video == null) {
68 + return "404. Video not found.";
105 69 }
106 - }
107 - else {
70 + $video = $video[0]->id;
71 + if ($video == null) {
72 + return "No video with given title found.";
73 + }
74 + } else {
108 75 $video = $id;
109 76 }
110 77
111 - // Initialize $otp_post_array, to be sent as part of OTP request, as for time-to-live 300
112 - $otp_post_array = array("ttl" => 300);
78 + $params = array(
79 + 'video'=>$video
80 + );
81 + $anno = false;
113 82 if (!function_exists("eval_date")) {
114 83 function eval_date($matches)
115 84 {
116 85 return current_time($matches[1]);
@@ -118,8 +87,9 @@
118 87 }
119 88 if (get_option('vdo_annotate_code') != "") {
120 89 $current_user = wp_get_current_user();
121 90 $vdo_annotate_code = get_option('vdo_annotate_code');
91 + $vdo_annotate_code = apply_filters('vdocipher_annotate_preprocess', $vdo_annotate_code);
122 92 if (is_user_logged_in()) {
123 93 $vdo_annotate_code = str_replace('{name}', $current_user->display_name, $vdo_annotate_code);
124 94 $vdo_annotate_code = str_replace('{email}', $current_user->user_email, $vdo_annotate_code);
125 95 $vdo_annotate_code = str_replace('{username}', $current_user->user_login, $vdo_annotate_code);
@@ -126,74 +96,40 @@
126 96 $vdo_annotate_code = str_replace('{id}', $current_user->ID, $vdo_annotate_code);
127 97 }
128 98 $vdo_annotate_code = str_replace('{ip}', $_SERVER['REMOTE_ADDR'], $vdo_annotate_code);
129 99 $vdo_annotate_code = preg_replace_callback('/\{date\.([^\}]+)\}/', "eval_date", $vdo_annotate_code);
130 - // Add annotate code to $otp_post_array, which will be converted to Json and then sent as POST body to API endpoint
100 + $vdo_annotate_code = apply_filters('vdocipher_annotate_postprocess', $vdo_annotate_code);
131 101 if (!$no_annotate) {
132 - $otp_post_array["annotate"] = $vdo_annotate_code;
102 + $anno = array("annotate" => $vdo_annotate_code);
133 103 }
134 104 }
135 - // OTP is requested via vdo_otp function
136 - $OTP_Response = vdo_otp($video, $otp_post_array);
137 - $OTP = $OTP_Response->otp;
138 - $playbackInfo = $OTP_Response->playbackInfo;
139 -
105 + $OTP = vdo_send("otp", $params, $anno);
106 + $OTP = json_decode($OTP);
140 107 if (is_null($OTP)) {
141 -
142 108 $output = "<span id='vdo$OTP' style='background:#555555;color:#FFFFFF'><h4>Video not found</h4></span>";
143 109 return $output;
144 110 }
111 + $OTP = $OTP->otp;
145 112
146 - // Version, legacy, for flash only
147 113 $version = 0;
148 114 if (isset($atts['version'])) {
149 115 $version = $atts['version'];
150 116 }
151 -
152 - // Video Embed version is updated
153 117 if ((get_option('vdo_embed_version')) == false) {
154 - update_option('vdo_embed_version', '1.6.4');
118 + update_option('vdo_embed_version', '0.5');
155 119 }
156 - $vdo_embed_version_str = get_option('vdo_embed_version');
157 -
158 - // Video Player theme, update and as shortcode attribute
159 120 if ((get_option('vdo_player_theme')) == false) {
160 - update_option('vdo_player_theme', '9ae8bbe8dd964ddc9bdb932cca1cb59a');
121 + update_option('vdo_player_theme','9ae8bbe8dd964ddc9bdb932cca1cb59a');
161 122 }
162 - if(!$vdo_theme){
163 - $vdo_player_theme = get_option('vdo_player_theme');
164 - }
165 - else {
166 - $vdo_player_theme = $vdo_theme;
167 - }
123 + $vdo_embed_version_str = get_option('vdo_embed_version');
124 + $vdo_player_theme = get_option('vdo_player_theme');
168 125
169 - // tech override custom names
170 - switch ($player_tech) {
171 - case "flash":
172 - $player_tech = "*,-dash";
173 - break;
174 - case "nohtml5":
175 - $player_tech = "*,-dash";
176 - break;
177 - case "noflash":
178 - $player_tech = "*,-hss";
179 - break;
180 - case "nozen":
181 - $player_tech = "*,-zen";
182 - break;
183 - case "noios":
184 - $player_tech = "*,-hlse";
185 - break;
186 - default:
187 - break;
188 - }
189 -
190 126 // Old Embed Code
191 - if ($vdo_embed_version_str === '0.5') {
127 + if($vdo_embed_version_str === '0.5') {
192 128 $output = "<div id='vdo$OTP' style='height:$height;width:$width;max-width:100%' ></div>";
193 129 $output .= "<script> (function(v,i,d,e,o){v[o]=v[o]||{}; v[o].add = v[o].add || function V(a){".
194 130 " (v[o].d=v[o].d||[]).push(a);};";
195 - $output .= "if(!v[o].l) { v[o].l=1*new Date();a=i.createElement(d),m=i.getElementsByTagName(d)[0];a.async=1;".
131 + $output .= "if(!v[o].l) { v[o].l=1*new Date(); a=i.createElement(d), m=i.getElementsByTagName(d)[0]; a.async=1; ".
196 132 "a.src=e; m.parentNode.insertBefore(a,m);}";
197 133 $output .= " })(window,document,'script','//de122v0opjemw.cloudfront.net/vdo.js','vdo'); vdo.add({ ";
198 134 $output .= "o: '$OTP', ";
199 135 if ($version == 32) {
@@ -199,18 +135,13 @@
199 135 if ($version == 32) {
200 136 $output .= "version: '$version' ";
201 137 }
202 138 $output .= "}); </script>";
203 - } else {
204 - //New embed code
205 - if ($player_tech === '') {
206 - if (get_option('vdo_watermark_flash_html') === 'flash') {
207 - $player_tech = "*,-dash";
208 - }
209 - }
139 + }
140 + //New embed code
141 + else {
210 142 $output .= "<div id='vdo$OTP' style='height:$height;width:$width;max-width:100%' ></div>";
211 - $output .= "<script>(function(v,i,d,e,o){v[o]=v[o]||{}; v[o].add = v[o].add || function V(a){".
212 - "(v[o].d=v[o].d||[]).push(a);};";
143 + $output .= "<script>(function(v,i,d,e,o){v[o]=v[o]||{}; v[o].add = v[o].add || function V(a){ (v[o].d=v[o].d||[]).push(a);};";
213 144 $output .= "if(!v[o].l) { v[o].l=1*new Date(); a=i.createElement(d), m=i.getElementsByTagName(d)[0];";
214 145 $output .= "a.async=1; a.src=e; m.parentNode.insertBefore(a,m);}";
215 146 $output .= "})(window,document,'script','https://d1z78r8i505acl.cloudfront.net/playerAssets/";
216 147 $output .= "$vdo_embed_version_str";
@@ -216,31 +147,20 @@
216 147 $output .= "$vdo_embed_version_str";
217 148 $output .= "/vdo.js','vdo');";
218 149 $output .= "vdo.add({";
219 150 $output .= "otp: '$OTP',";
220 - $output .= "playbackInfo: '$playbackInfo',";
151 + $output .= "playbackInfo: btoa(JSON.stringify({";
152 + $output .= "videoId: '$video'})),";
221 153 $output .= "theme: '$vdo_player_theme',";
222 - if ($player_tech !== '') {
223 - $output .= "techoverride: [" ;
224 - $techarray = explode(',', $player_tech);
225 - for ($i = 0; $i < sizeof($techarray); $i++) {
226 - $techStr = $techarray[$i];
227 - $output .= "'$techStr'";
228 - if ($i !== sizeof($techarray)-1) {
229 - $output .= ", ";
230 - }
231 - }
232 - $output .= "],";
233 - }
234 154 $output .= "container: document.querySelector('#vdo$OTP'),});";
235 155 $output .= "</script>";
236 156 }
237 157 return $output;
238 158 }
159 +
239 160 add_shortcode('vdo', 'vdo_shortcode');
240 -// VdoCipher Shortcode ends
241 161
242 -// adding the Settings link, starts
162 +/// adding the settings link
243 163 $plugin = plugin_basename(__FILE__);
244 164 add_filter("plugin_action_links_$plugin", 'vdo_settings_link');
245 165
246 166 function vdo_settings_link($links)
@@ -248,47 +168,27 @@
248 168 $settings_link = '<a href="options-general.php?page=vdocipher">Settings</a>';
249 169 array_unshift($links, $settings_link);
250 170 return $links;
251 171 }
252 -// adding the Settings link, ends
253 172
254 -// add the menu item and register settings (3 functions), starts
173 +/// add the menu item and register settings
255 174 if (is_admin()) { // admin actions
175 + add_action('admin_menu', 'vdo_menu');
256 176 add_action('admin_init', 'register_vdo_settings');
257 - add_action('admin_menu', 'vdo_menu');
258 177 } else {
259 178 // non-admin enqueues, actions, and filters
260 179 }
261 -function vdo_menu() {
262 - add_menu_page(
263 - 'VdoCipher Options',
264 - 'VdoCipher',
265 - 'manage_options',
266 - 'vdocipher',
267 - 'vdo_options',
268 - plugin_dir_url(__FILE__).'images/logo.png'
269 - );
270 - add_submenu_page(
271 - null,
272 - 'Video Player Themes',
273 - 'CustomPlayer',
274 - 'manage_options',
275 - 'themesvdo',
276 - 'themesvdo'
277 - );
180 +function vdo_menu()
181 +{
182 + add_menu_page('VdoCipher Options', 'VdoCipher', 'manage_options', 'vdocipher', 'vdo_options');
278 183 }
279 -
280 -function themesvdo() {
281 - include('include/player_themes.php');
282 -}
283 -
284 184 function vdo_options()
285 185 {
286 186 if (!get_option('vdo_default_height')) {
287 - update_option('vdo_default_height', 'auto');
187 + update_option('vdo_default_height', '360');
288 188 }
289 189 if (!get_option('vdo_default_width')) {
290 - update_option('vdo_default_width', '1280');
190 + update_option('vdo_default_width', '640');
291 191 }
292 192 $vdo_client_key = get_option('vdo_client_key');
293 193 if (!$vdo_client_key && strlen($vdo_client_key) != 64) {
294 194 vdo_show_form_client_key();
@@ -307,56 +207,42 @@
307 207 register_setting('vdo_option-group', 'vdo_default_width');
308 208 register_setting('vdo_option-group', 'vdo_annotate_code');
309 209 register_setting('vdo_option-group', 'vdo_embed_version');
310 210 register_setting('vdo_option-group', 'vdo_player_theme');
311 - register_setting('vdo_option-group', 'vdo_watermark_flash_html');
312 - register_setting('vdo_custom_theme', 'vdo_player_theme_options');
313 211 }
314 -// add the menu item and register settings (3 functions), ends
315 212
316 -// section for client key for new users
213 +/// adding a section for asking for the client key
317 214 function vdo_show_form_client_key()
318 215 {
319 216 include('include/setting_form.php');
320 217 }
321 -
322 -// Activation Hook starts
218 +register_deactivation_hook(__FILE__, 'vdo_deactivate');
219 +function vdo_deactivate()
220 +{
221 + delete_option('vdo_client_key');
222 + delete_option('vdo_default_width');
223 + delete_option('vdo_default_height');
224 + delete_option('vdo_annotate_code');
225 + delete_option('vdo_embed_version');
226 + delete_option('vdo_player_theme');
227 +}
323 228 function vdo_activate()
324 229 {
325 230 if ((get_option('vdo_default_height')) == false) {
326 - update_option('vdo_default_height', 'auto');
231 + update_option('vdo_default_height', '360');
327 232 }
328 233 if ((get_option('vdo_default_width')) == false) {
329 - update_option('vdo_default_width', '1280');
234 + update_option('vdo_default_width', '640');
330 235 }
331 236 //https://stackoverflow.com/a/2173318/5022684
332 237 if ((get_option('vdo_embed_version')) == false) {
333 - update_option('vdo_embed_version', '1.6.4');
238 + update_option('vdo_embed_version', '0.5');
334 239 }
335 240 if ((get_option('vdo_player_theme')) == false) {
336 - update_option('vdo_player_theme', '9ae8bbe8dd964ddc9bdb932cca1cb59a');
241 + update_option('vdo_player_theme','9ae8bbe8dd964ddc9bdb932cca1cb59a');
337 242 }
338 - if ((get_option('vdo_watermark_flash_html')) == false) {
339 - update_option('vdo_watermark_flash_html', 'html5');
340 - }
341 243 }
342 244 register_activation_hook(__FILE__, 'vdo_activate');
343 -
344 -// Deactivation Hook starts
345 -function vdo_deactivate()
346 -{
347 - delete_option('vdo_client_key');
348 - delete_option('vdo_default_width');
349 - delete_option('vdo_default_height');
350 - delete_option('vdo_annotate_code');
351 - delete_option('vdo_embed_version');
352 - delete_option('vdo_player_theme');
353 - delete_option('vdo_watermark_flash_html');
354 - delete_option('vdo_player_theme_options');
355 -}
356 -register_deactivation_hook(__FILE__, 'vdo_deactivate');
357 -
358 -// Admin notice to configure plugin for new installs, starts
359 245 function vdo_admin_notice()
360 246 {
361 247 if ((!get_option('vdo_client_key') || strlen(get_option('vdo_client_key')) != 64)
362 248 && basename($_SERVER['PHP_SELF']) == "plugins.php"