PluginProbe
VdoCipher: Secure Video Player and Hosting / 1.13
VdoCipher: Secure Video Player and Hosting v1.13
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
vdocipher / vdocipher.php

vdocipher.php in VdoCipher: Secure Video Player and Hosting 1.13, at vdocipher.php

260 lines 9.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Plugin Name: VdoCipher
4 * Plugin URI: http://www.vdocipher.com
5 * Description: Secured video hosting for wordpress
6 * Version: 1.13
7 * Author: VdoCipher
8 * Author URI: http://www.vdocipher.com
9 * License: GPL2
10 */
11
12 if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) {
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".
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>");
17 }
18
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 }
25
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'];
39 }
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 ),
51 $atts
52 ));
53 if (!$atts['id']) {
54 if (!$atts['title']) {
55 return "Required argument id for embedded video not found.";
56 }
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.";
69 }
70 $video = $video[0]->id;
71 if ($video == null) {
72 return "No video with given title found.";
73 }
74 } else {
75 $video = $id;
76 }
77
78 $params = array(
79 'video'=>$video
80 );
81 $anno = false;
82 if (!function_exists("eval_date")) {
83 function eval_date($matches)
84 {
85 return current_time($matches[1]);
86 }
87 }
88 if (get_option('vdo_annotate_code') != "") {
89 $current_user = wp_get_current_user();
90 $vdo_annotate_code = get_option('vdo_annotate_code');
91 $vdo_annotate_code = apply_filters('vdocipher_annotate_preprocess', $vdo_annotate_code);
92 if (is_user_logged_in()) {
93 $vdo_annotate_code = str_replace('{name}', $current_user->display_name, $vdo_annotate_code);
94 $vdo_annotate_code = str_replace('{email}', $current_user->user_email, $vdo_annotate_code);
95 $vdo_annotate_code = str_replace('{username}', $current_user->user_login, $vdo_annotate_code);
96 $vdo_annotate_code = str_replace('{id}', $current_user->ID, $vdo_annotate_code);
97 }
98 $vdo_annotate_code = str_replace('{ip}', $_SERVER['REMOTE_ADDR'], $vdo_annotate_code);
99 $vdo_annotate_code = preg_replace_callback('/\{date\.([^\}]+)\}/', "eval_date", $vdo_annotate_code);
100 $vdo_annotate_code = apply_filters('vdocipher_annotate_postprocess', $vdo_annotate_code);
101 if (!$no_annotate) {
102 $anno = array("annotate" => $vdo_annotate_code);
103 }
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;
112
113 $version = 0;
114 if (isset($atts['version'])) {
115 $version = $atts['version'];
116 }
117 if (empty(get_option('vdo_embed_version'))) {
118 update_option('vdo_embed_version', '0.5');
119 }
120 if (empty(get_option('vdo_player_theme'))) {
121 update_option('vdo_player_theme','9ae8bbe8dd964ddc9bdb932cca1cb59a');
122 }
123 $vdo_embed_version_str = get_option('vdo_embed_version');
124 $vdo_player_theme = get_option('vdo_player_theme');
125
126 // Old Embed Code
127 if($vdo_embed_version_str === '0.5') {
128 $output = "<div id='vdo$OTP' style='height:$height;width:$width;max-width:100%' ></div>";
129 $output .= "<script> (function(v,i,d,e,o){v[o]=v[o]||{}; v[o].add = v[o].add || function V(a){".
130 " (v[o].d=v[o].d||[]).push(a);};";
131 $output .= "if(!v[o].l) { v[o].l=1*new Date(); a=i.createElement(d), m=i.getElementsByTagName(d)[0]; a.async=1; ".
132 "a.src=e; m.parentNode.insertBefore(a,m);}";
133 $output .= " })(window,document,'script','//de122v0opjemw.cloudfront.net/vdo.js','vdo'); vdo.add({ ";
134 $output .= "o: '$OTP', ";
135 if ($version == 32) {
136 $output .= "version: '$version' ";
137 }
138 $output .= "}); </script>";
139 }
140 //New embed code
141 else {
142 $output .= "<div id='vdo$OTP' style='height:$height;width:$width;max-width:100%' ></div>";
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);};";
144 $output .= "if(!v[o].l) { v[o].l=1*new Date(); a=i.createElement(d), m=i.getElementsByTagName(d)[0];";
145 $output .= "a.async=1; a.src=e; m.parentNode.insertBefore(a,m);}";
146 $output .= "})(window,document,'script','https://d1z78r8i505acl.cloudfront.net/playerAssets/";
147 $output .= "$vdo_embed_version_str";
148 $output .= "/vdo.js','vdo');";
149 $output .= "vdo.add({";
150 $output .= "otp: '$OTP',";
151 $output .= "playbackInfo: btoa(JSON.stringify({";
152 $output .= "videoId: '$video'})),";
153 $output .= "theme: '$vdo_player_theme',";
154 $output .= "container: document.querySelector('#vdo$OTP'),});";
155 $output .= "</script>";
156 }
157 return $output;
158 }
159
160 add_shortcode('vdo', 'vdo_shortcode');
161
162 /// adding the settings link
163 $plugin = plugin_basename(__FILE__);
164 add_filter("plugin_action_links_$plugin", 'vdo_settings_link');
165
166 function vdo_settings_link($links)
167 {
168 $settings_link = '<a href="options-general.php?page=vdocipher">Settings</a>';
169 array_unshift($links, $settings_link);
170 return $links;
171 }
172
173 /// add the menu item and register settings
174 if (is_admin()) { // admin actions
175 add_action('admin_menu', 'vdo_menu');
176 add_action('admin_init', 'register_vdo_settings');
177 } else {
178 // non-admin enqueues, actions, and filters
179 }
180 function vdo_menu()
181 {
182 add_menu_page('VdoCipher Options', 'VdoCipher', 'manage_options', 'vdocipher', 'vdo_options');
183 }
184 function vdo_options()
185 {
186 if (!get_option('vdo_default_height')) {
187 update_option('vdo_default_height', '360');
188 }
189 if (!get_option('vdo_default_width')) {
190 update_option('vdo_default_width', '640');
191 }
192 $vdo_client_key = get_option('vdo_client_key');
193 if (!$vdo_client_key && strlen($vdo_client_key) != 64) {
194 vdo_show_form_client_key();
195 return "";
196 }
197 if (!current_user_can('manage_options')) {
198 wp_die(__('You do not have sufficient permissions to access this page.'));
199 }
200 include('include/options.php');
201 }
202 function register_vdo_settings()
203 {
204 // whitelist options
205 register_setting('vdo_option-group', 'vdo_client_key');
206 register_setting('vdo_option-group', 'vdo_default_height');
207 register_setting('vdo_option-group', 'vdo_default_width');
208 register_setting('vdo_option-group', 'vdo_annotate_code');
209 register_setting('vdo_option-group', 'vdo_embed_version');
210 register_setting('vdo_option-group', 'vdo_player_theme');
211 }
212
213 /// adding a section for asking for the client key
214 function vdo_show_form_client_key()
215 {
216 include('include/setting_form.php');
217 }
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 }
228 function vdo_activate()
229 {
230 if (!get_option('vdo_default_height')) {
231 update_option('vdo_default_height', '360');
232 }
233 if (!get_option('vdo_default_width')) {
234 update_option('vdo_default_width', '640');
235 }
236 if (empty(get_option('vdo_embed_version'))) {
237 update_option('vdo_embed_version', '0.5');
238 }
239 if (empty(get_option('vdo_player_theme'))) {
240 update_option('vdo_player_theme','9ae8bbe8dd964ddc9bdb932cca1cb59a');
241 }
242 }
243 register_activation_hook(__FILE__, 'vdo_activate');
244 function vdo_admin_notice()
245 {
246 if ((!get_option('vdo_client_key') || strlen(get_option('vdo_client_key')) != 64)
247 && basename($_SERVER['PHP_SELF']) == "plugins.php"
248 ) {
249 ?>
250 <div class="error">
251 <p>
252 The VdoCipher plugin is not ready.
253 <a href="options-general.php?page=vdocipher">Click here to configure</a>
254 </p>
255 </div>
256 <?php
257 }
258 }
259 add_action('admin_notices', 'vdo_admin_notice');
260