PluginProbe
VdoCipher: Secure Video Player and Hosting / 1.7
VdoCipher: Secure Video Player and Hosting v1.7
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 +147 -277 1.211.7 View file →
@@ -2,314 +2,184 @@
2 2 /**
3 3 * Plugin Name: VdoCipher
4 4 * Plugin URI: http://www.vdocipher.com
5 5 * Description: Secured video hosting for wordpress
6 - * Version: 1.21
6 + * Version: 1.7
7 7 * Author: VdoCipher
8 8 * Author URI: http://www.vdocipher.com
9 9 * License: GPL2
10 10 */
11 11
12 +
12 13 if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) {
13 14 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".
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>");
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>");
17 16 }
18 17
19 -function vdo_send($action, $params, $posts = array())
20 -{
21 - $client_key = get_option('vdo_client_key');
22 - if ($client_key == false || $client_key == "") {
23 - return "Plugin not configured. Please set the key to embed videos.";
24 - }
18 +function vdo_send($action, $params, $posts = array()){
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 + }
25 23
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(
30 - 'method' => 'POST',
31 - 'body' => $posts
32 - ));
33 - if (is_wp_error($response)) {
34 - $error_message = $response->get_error_message();
35 - echo "VdoCipher: Something went wrong: $error_message";
36 - return "";
37 - }
38 - return $response['body'];
24 + $getData = http_build_query($params);
25 + $posts["clientSecretKey"] = $client_key;
26 + $url = "http://api.vdocipher.com/v2/$action/?$getData";
27 + $response = wp_safe_remote_post($url, array(
28 + 'method' => 'POST',
29 + 'body' => $posts
30 + ));
31 + if (is_wp_error( $response )) {
32 + $error_message = $response->get_error_message();
33 + echo "VdoCipher: Something went wrong: $error_message";
34 + return "";
35 + }
36 + return $response['body'];
39 37 }
40 -function vdo_shortcode($atts)
41 -{
42 - extract(shortcode_atts(
43 - array(
44 - 'title' => 'TITLE_OF_VIDEO',
45 - 'width' => get_option('vdo_default_width') . "px",
46 - 'height' => get_option('vdo_default_height') . "px",
47 - 'id' => 'id',
48 - 'no_annotate'=> false,
49 - 'version'=> 0,
50 - 'player_tech'=> ''
51 - ),
52 - $atts
53 - ));
54 - if ((get_option('vdo_default_height')) == 'auto') {
55 - $height = 'auto';
56 - }
57 - if (!$atts['id']) {
58 - if (!$atts['title']) {
59 - return "Required argument id for embedded video not found.";
60 - }
61 - $params = array(
62 - 'search'=>array(
63 - 'title'=>$title
64 - ),
65 - 'page'=>1,
66 - 'limit'=>30,
67 - 'type'=>'json'
68 - );
69 - $video = vdo_send("videos", $params);
70 - $video = json_decode($video);
71 - if ($video == null) {
72 - return "404. Video not found.";
73 - }
74 - $video = $video[0]->id;
75 - if ($video == null) {
76 - return "No video with given title found.";
77 - }
78 - } else {
79 - $video = $id;
80 - }
38 +function vdo_shortcode( $atts ) {
39 + extract( shortcode_atts(
40 + array(
41 + 'title' => 'TITLE_OF_VIDEO',
42 + 'width' => get_option('vdo_default_width') . "px",
43 + 'height' => get_option('vdo_default_height') . "px",
44 + 'id' => 'id',
45 + 'no_annotate'=> false
46 + ), $atts )
47 + );
48 + if(!$atts['id']){
49 + if(!$atts['title'])
50 + return "Required argument id for embedded video not found.";
51 + $params = array(
52 + 'search'=>array(
53 + 'title'=>$title
54 + ),
55 + 'page'=>1,
56 + 'limit'=>30,
57 + 'type'=>'json'
58 + );
59 + $video = vdo_send("videos", $params);
60 + $video = json_decode($video);
61 + if($video == null)
62 + return "404. Video not found.";
63 + $video = $video[0]->id;
64 + if ($video == null) {
65 + return "No video with given title found.";
66 + }
67 + }
68 + else
69 + $video = $id;
81 70
82 - $params = array(
83 - 'video'=>$video
84 - );
85 - $anno = false;
86 - if (!function_exists("eval_date")) {
87 - function eval_date($matches)
88 - {
89 - return current_time($matches[1]);
90 - }
91 - }
92 - if (get_option('vdo_annotate_code') != "") {
93 - $current_user = wp_get_current_user();
94 - $vdo_annotate_code = get_option('vdo_annotate_code');
95 - $vdo_annotate_code = apply_filters('vdocipher_annotate_preprocess', $vdo_annotate_code);
96 - if (is_user_logged_in()) {
97 - $vdo_annotate_code = str_replace('{name}', $current_user->display_name, $vdo_annotate_code);
98 - $vdo_annotate_code = str_replace('{email}', $current_user->user_email, $vdo_annotate_code);
99 - $vdo_annotate_code = str_replace('{username}', $current_user->user_login, $vdo_annotate_code);
100 - $vdo_annotate_code = str_replace('{id}', $current_user->ID, $vdo_annotate_code);
101 - }
102 - $vdo_annotate_code = str_replace('{ip}', $_SERVER['REMOTE_ADDR'], $vdo_annotate_code);
103 - $vdo_annotate_code = preg_replace_callback('/\{date\.([^\}]+)\}/', "eval_date", $vdo_annotate_code);
104 - $vdo_annotate_code = apply_filters('vdocipher_annotate_postprocess', $vdo_annotate_code);
105 - if (!$no_annotate) {
106 - $anno = array("annotate" => $vdo_annotate_code);
107 - }
108 - }
109 - $OTP = vdo_send("otp", $params, $anno);
110 - $OTP = json_decode($OTP);
111 - if (is_null($OTP)) {
112 - $output = "<span id='vdo$OTP' style='background:#555555;color:#FFFFFF'><h4>Video not found</h4></span>";
113 - return $output;
114 - }
115 - $OTP = $OTP->otp;
71 + $params = array(
72 + 'video'=>$video
73 + );
74 + $anno = false;
75 + if (!function_exists("eval_date")) {
76 + function eval_date($matches){
77 + return current_time($matches[1]);
78 + }
79 + }
80 + if (get_option('vdo_annotate_code') != "") {
81 + $current_user = wp_get_current_user();
82 + $vdo_annotate_code = get_option('vdo_annotate_code');
83 + $vdo_annotate_code = apply_filters('vdocipher_annotate_preprocess', $vdo_annotate_code);
84 + if (is_user_logged_in()) {
85 + $vdo_annotate_code = str_replace('{name}', $current_user->display_name , $vdo_annotate_code);
86 + $vdo_annotate_code = str_replace('{email}', $current_user->user_email , $vdo_annotate_code);
87 + $vdo_annotate_code = str_replace('{username}', $current_user->user_login , $vdo_annotate_code);
88 + $vdo_annotate_code = str_replace('{id}', $current_user->ID , $vdo_annotate_code);
89 + }
90 + $vdo_annotate_code = str_replace('{ip}', $_SERVER['REMOTE_ADDR'] , $vdo_annotate_code);
91 + $vdo_annotate_code = preg_replace_callback('/\{date\.([^\}]+)\}/', "eval_date" , $vdo_annotate_code);
92 + $vdo_annotate_code = apply_filters('vdocipher_annotate_postprocess', $vdo_annotate_code);
93 + if(!$no_annotate)
94 + $anno = array("annotate" => $vdo_annotate_code);
95 + }
96 + $OTP = vdo_send("otp", $params, $anno);
97 + $OTP = json_decode($OTP);
98 + if(is_null($OTP)){
99 + $output = "<span id='vdo$OTP' style='background:#555555;color:#FFFFFF'><h4>Video not found</h4></span>";
100 + return $output;
101 + }
102 + $OTP = $OTP->otp;
116 103
117 - $version = 0;
118 - if (isset($atts['version'])) {
119 - $version = $atts['version'];
120 - }
121 - if ((get_option('vdo_embed_version')) == false) {
122 - update_option('vdo_embed_version', '1.6.4');
123 - }
124 - if ((get_option('vdo_player_theme')) == false) {
125 - update_option('vdo_player_theme', '9ae8bbe8dd964ddc9bdb932cca1cb59a');
126 - }
127 - $vdo_embed_version_str = get_option('vdo_embed_version');
128 - $vdo_player_theme = get_option('vdo_player_theme');
104 + $output = "<div id='vdo$OTP' style='height:$height;width:$width;max-width:100%' ></div>";
105 + $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);};";
106 + $output .= "if(!v[o].l) { v[o].l=1*new Date(); a=i.createElement(d), m=i.getElementsByTagName(d)[0]; a.async=1; a.src=e; m.parentNode.insertBefore(a,m);}";
107 + $output .= " })(window,document,'script','//de122v0opjemw.cloudfront.net/vdo.js','vdo'); vdo.add({ o: '$OTP', }); </script>";
108 + return $output;
109 +}
129 110
130 - // tech override custom names start
131 - switch ($player_tech) {
132 - case "flash":
133 - $player_tech = "*,-dash";
134 - break;
135 - case "nohtml5":
136 - $player_tech = "*,-dash";
137 - break;
138 - case "noflash":
139 - $player_tech = "*,-hss";
140 - break;
141 - case "nozen":
142 - $player_tech = "*,-zen";
143 - break;
144 - case "noios":
145 - $player_tech = "*,-hlse";
146 - break;
147 - default:
148 - break;
149 - }
150 - // tech override ends
111 +add_shortcode( 'vdo', 'vdo_shortcode' );
151 112
152 - // Old Embed Code
153 - if ($vdo_embed_version_str === '0.5') {
154 - $output = "<div id='vdo$OTP' style='height:$height;width:$width;max-width:100%' ></div>";
155 - $output .= "<script> (function(v,i,d,e,o){v[o]=v[o]||{}; v[o].add = v[o].add || function V(a){".
156 - " (v[o].d=v[o].d||[]).push(a);};";
157 - $output .= "if(!v[o].l) { v[o].l=1*new Date();a=i.createElement(d),m=i.getElementsByTagName(d)[0];a.async=1;".
158 - "a.src=e; m.parentNode.insertBefore(a,m);}";
159 - $output .= " })(window,document,'script','//de122v0opjemw.cloudfront.net/vdo.js','vdo'); vdo.add({ ";
160 - $output .= "o: '$OTP', ";
161 - if ($version == 32) {
162 - $output .= "version: '$version' ";
163 - }
164 - $output .= "}); </script>";
165 - } else {
166 - //New embed code
167 - if ($player_tech === '') {
168 - if (get_option(vdo_watermark_flash_html) === 'flash') {
169 - $player_tech = "*,-dash";
170 - }
171 - }
172 - $output .= "<div id='vdo$OTP' style='height:$height;width:$width;max-width:100%' ></div>";
173 - $output .= "<script>(function(v,i,d,e,o){v[o]=v[o]||{}; v[o].add = v[o].add || function V(a){".
174 - "(v[o].d=v[o].d||[]).push(a);};";
175 - $output .= "if(!v[o].l) { v[o].l=1*new Date(); a=i.createElement(d), m=i.getElementsByTagName(d)[0];";
176 - $output .= "a.async=1; a.src=e; m.parentNode.insertBefore(a,m);}";
177 - $output .= "})(window,document,'script','https://d1z78r8i505acl.cloudfront.net/playerAssets/";
178 - $output .= "$vdo_embed_version_str";
179 - $output .= "/vdo.js','vdo');";
180 - $output .= "vdo.add({";
181 - $output .= "otp: '$OTP',";
182 - $output .= "playbackInfo: btoa(JSON.stringify({";
183 - $output .= "videoId: '$video'})),";
184 - $output .= "theme: '$vdo_player_theme',";
185 - if ($player_tech !== '') {
186 - $output .= "techoverride: [" ;
187 - $techarray = explode(',', $player_tech);
188 - for ($i = 0; $i < sizeof($techarray); $i++) {
189 - $techStr = $techarray[$i];
190 - $output .= "'$techStr'";
191 - if ($i !== sizeof($techarray)-1) {
192 - $output .= ", ";
193 - }
194 - }
195 - $output .= "],";
196 - }
197 - $output .= "container: document.querySelector('#vdo$OTP'),});";
198 - $output .= "</script>";
199 - }
200 - return $output;
201 -}
202 113
203 -add_shortcode('vdo', 'vdo_shortcode');
204 -
205 114 /// adding the settings link
206 -$plugin = plugin_basename(__FILE__);
207 -add_filter("plugin_action_links_$plugin", 'vdo_settings_link');
115 +$plugin = plugin_basename(__FILE__);
116 +add_filter("plugin_action_links_$plugin", 'vdo_settings_link' );
208 117
209 -function vdo_settings_link($links)
210 -{
211 - $settings_link = '<a href="options-general.php?page=vdocipher">Settings</a>';
212 - array_unshift($links, $settings_link);
213 - return $links;
118 +function vdo_settings_link($links) {
119 + $settings_link = '<a href="options-general.php?page=vdocipher.php">Settings</a>';
120 + array_unshift($links, $settings_link);
121 + return $links;
214 122 }
215 123
124 +
216 125 /// add the menu item and register settings
217 -if (is_admin()) { // admin actions
218 - add_action('admin_menu', 'vdo_menu');
219 - add_action('admin_init', 'register_vdo_settings');
126 +if ( is_admin() ){ // admin actions
127 + add_action( 'admin_menu', 'vdo_menu' );
128 + add_action( 'admin_init', 'register_vdo_settings' );
220 129 } else {
221 - // non-admin enqueues, actions, and filters
130 + // non-admin enqueues, actions, and filters
222 131 }
223 -function vdo_menu()
224 -{
225 - add_menu_page(
226 - 'VdoCipher Options',
227 - 'VdoCipher',
228 - 'manage_options',
229 - 'vdocipher',
230 - 'vdo_options',
231 - plugin_dir_url(__FILE__).'images/logo.png'
232 - );
132 +function vdo_menu(){
133 + add_options_page( 'VdoCipher Options', 'VdoCipher', 'manage_options', 'vdocipher', 'vdo_options' );
233 134 }
234 -function vdo_options()
235 -{
236 - if (!get_option('vdo_default_height')) {
237 - update_option('vdo_default_height', 'auto');
238 - }
239 - if (!get_option('vdo_default_width')) {
240 - update_option('vdo_default_width', '1280');
241 - }
242 - $vdo_client_key = get_option('vdo_client_key');
243 - if (!$vdo_client_key && strlen($vdo_client_key) != 64) {
244 - vdo_show_form_client_key();
245 - return "";
246 - }
247 - if (!current_user_can('manage_options')) {
248 - wp_die(__('You do not have sufficient permissions to access this page.'));
249 - }
250 - include('include/options.php');
135 +function vdo_options(){
136 + if (!get_option('vdo_default_height'))
137 + update_option('vdo_default_height', '360');
138 + if (!get_option('vdo_default_width'))
139 + update_option('vdo_default_width', '640');
140 + $vdo_client_key = get_option('vdo_client_key');
141 + if (!$vdo_client_key && strlen($vdo_client_key) != 64) {
142 + vdo_show_form_client_key();
143 + return "";
144 + }
145 + if ( !current_user_can( 'manage_options' ) ) {
146 + wp_die( __( 'You do not have sufficient permissions to access this page.' ) );
147 + }
148 + include('include/options.php');
251 149 }
252 -function register_vdo_settings()
253 -{
254 - // whitelist options
255 - register_setting('vdo_option-group', 'vdo_client_key');
256 - register_setting('vdo_option-group', 'vdo_default_height');
257 - register_setting('vdo_option-group', 'vdo_default_width');
258 - register_setting('vdo_option-group', 'vdo_annotate_code');
259 - register_setting('vdo_option-group', 'vdo_embed_version');
260 - register_setting('vdo_option-group', 'vdo_player_theme');
261 - register_setting('vdo_option-group', 'vdo_watermark_flash_html');
150 +function register_vdo_settings() { // whitelist options
151 + register_setting( 'vdo_option-group', 'vdo_client_key' );
152 + register_setting( 'vdo_option-group', 'vdo_default_height' );
153 + register_setting( 'vdo_option-group', 'vdo_default_width' );
154 + register_setting( 'vdo_option-group', 'vdo_annotate_code' );
262 155 }
263 156
264 157 /// adding a section for asking for the client key
265 -function vdo_show_form_client_key()
266 -{
267 - include('include/setting_form.php');
158 +function vdo_show_form_client_key(){
159 + include('include/setting_form.php');
268 160 }
269 161 register_deactivation_hook(__FILE__, 'vdo_deactivate');
270 -function vdo_deactivate()
271 -{
272 - delete_option('vdo_client_key');
273 - delete_option('vdo_default_width');
274 - delete_option('vdo_default_height');
275 - delete_option('vdo_annotate_code');
276 - delete_option('vdo_embed_version');
277 - delete_option('vdo_player_theme');
278 - delete_option('vdo_watermark_flash_html');
162 +function vdo_deactivate(){
163 + delete_option( 'vdo_client_key' );
164 + delete_option('vdo_default_width');
165 + delete_option('vdo_default_height');
166 + delete_option('vdo_annotate_code');
279 167 }
280 -function vdo_activate()
281 -{
282 - if ((get_option('vdo_default_height')) == false) {
283 - update_option('vdo_default_height', 'auto');
284 - }
285 - if ((get_option('vdo_default_width')) == false) {
286 - update_option('vdo_default_width', '1280');
287 - }
288 - //https://stackoverflow.com/a/2173318/5022684
289 - if ((get_option('vdo_embed_version')) == false) {
290 - update_option('vdo_embed_version', '1.6.4');
291 - }
292 - if ((get_option('vdo_player_theme')) == false) {
293 - update_option('vdo_player_theme', '9ae8bbe8dd964ddc9bdb932cca1cb59a');
294 - }
295 - if ((get_option('vdo_watermark_flash_html')) == false) {
296 - update_option('vdo_watermark_flash_html', 'html5');
297 - }
168 +function vdo_activate() {
169 + if (!get_option('vdo_default_height'))
170 + update_option('vdo_default_height', '400');
171 + if (!get_option('vdo_default_width'))
172 + update_option('vdo_default_width', '640');
298 173 }
299 -register_activation_hook(__FILE__, 'vdo_activate');
300 -function vdo_admin_notice()
301 -{
302 - if ((!get_option('vdo_client_key') || strlen(get_option('vdo_client_key')) != 64)
303 - && basename($_SERVER['PHP_SELF']) == "plugins.php"
304 - ) {
305 - ?>
306 - <div class="error">
307 - <p>
308 - The VdoCipher plugin is not ready.
309 - <a href="options-general.php?page=vdocipher">Click here to configure</a>
310 - </p>
311 - </div>
312 - <?php
313 - }
174 +register_activation_hook( __FILE__, 'vdo_activate' );
175 +function vdo_admin_notice() {
176 + if((!get_option('vdo_client_key') || strlen(get_option('vdo_client_key')) != 64) && basename($_SERVER['PHP_SELF']) == "plugins.php" ){
177 + ?>
178 + <div class="error">
179 + <p>The VdoCipher plugin is not ready. <a href="options-general.php?page=vdocipher">Click here to configure</a>
180 + </p>
181 + </div>
182 + <?php
183 + }
314 184 }
315 -add_action('admin_notices', 'vdo_admin_notice');
185 +add_action( 'admin_notices', 'vdo_admin_notice' );