PluginProbe
VdoCipher: Secure Video Player and Hosting / 1.9
VdoCipher: Secure Video Player and Hosting v1.9
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.9, at vdocipher.php

226 lines 7.5 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.9
7 * Author: VdoCipher
8 * Author URI: http://www.vdocipher.com
9 * License: GPL2
10 */
11
12 error_reporting(E_ALL);
13 ini_set('display_errors', 1);
14
15 if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) {
16 header($_SERVER['SERVER_PROTOCOL'] . ' 404 Not Found');
17 exit("<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML 2.0//EN\">\r\n<html><head>\r\n<title>404 Not Found</title>\r\n".
18 "</head><body>\r\n<h1>Not Found</h1>\r\n<p>The requested URL " . $_SERVER['SCRIPT_NAME'] . " was not found on ".
19 "this server.</p>\r\n</body></html>");
20 }
21
22 function vdo_send($action, $params, $posts = array())
23 {
24 $client_key = get_option('vdo_client_key');
25 if ($client_key == false || $client_key == "") {
26 return "Plugin not configured. Please set the key to embed videos.";
27 }
28
29 $getData = http_build_query($params);
30 $posts["clientSecretKey"] = $client_key;
31 $url = "http://api.vdocipher.com/v2/$action/?$getData";
32 $response = wp_safe_remote_post($url, array(
33 'method' => 'POST',
34 'body' => $posts
35 ));
36 if (is_wp_error($response)) {
37 $error_message = $response->get_error_message();
38 echo "VdoCipher: Something went wrong: $error_message";
39 return "";
40 }
41 return $response['body'];
42 }
43 function vdo_shortcode($atts)
44 {
45 extract(shortcode_atts(
46 array(
47 'title' => 'TITLE_OF_VIDEO',
48 'width' => get_option('vdo_default_width') . "px",
49 'height' => get_option('vdo_default_height') . "px",
50 'id' => 'id',
51 'no_annotate'=> false,
52 'version'=> 0,
53 ),
54 $atts
55 ));
56 if (!$atts['id']) {
57 if (!$atts['title']) {
58 return "Required argument id for embedded video not found.";
59 }
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 }
73 $video = $video[0]->id;
74 if ($video == null) {
75 return "No video with given title found.";
76 }
77 } else {
78 $video = $id;
79 }
80
81 $params = array(
82 'video'=>$video
83 );
84 $anno = false;
85 if (!function_exists("eval_date")) {
86 function eval_date($matches)
87 {
88 return current_time($matches[1]);
89 }
90 }
91 if (get_option('vdo_annotate_code') != "") {
92 $current_user = wp_get_current_user();
93 $vdo_annotate_code = get_option('vdo_annotate_code');
94 $vdo_annotate_code = apply_filters('vdocipher_annotate_preprocess', $vdo_annotate_code);
95 if (is_user_logged_in()) {
96 $vdo_annotate_code = str_replace('{name}', $current_user->display_name, $vdo_annotate_code);
97 $vdo_annotate_code = str_replace('{email}', $current_user->user_email, $vdo_annotate_code);
98 $vdo_annotate_code = str_replace('{username}', $current_user->user_login, $vdo_annotate_code);
99 $vdo_annotate_code = str_replace('{id}', $current_user->ID, $vdo_annotate_code);
100 }
101 $vdo_annotate_code = str_replace('{ip}', $_SERVER['REMOTE_ADDR'], $vdo_annotate_code);
102 $vdo_annotate_code = preg_replace_callback('/\{date\.([^\}]+)\}/', "eval_date", $vdo_annotate_code);
103 $vdo_annotate_code = apply_filters('vdocipher_annotate_postprocess', $vdo_annotate_code);
104 if (!$no_annotate) {
105 $anno = array("annotate" => $vdo_annotate_code);
106 }
107 }
108 $OTP = vdo_send("otp", $params, $anno);
109 $OTP = json_decode($OTP);
110 if (is_null($OTP)) {
111 $output = "<span id='vdo$OTP' style='background:#555555;color:#FFFFFF'><h4>Video not found</h4></span>";
112 return $output;
113 }
114 $OTP = $OTP->otp;
115
116 $version = 0;
117 if (isset($atts['version'])) {
118 $version = $atts['version'];
119 }
120 $output = "<div id='vdo$OTP' style='height:$height;width:$width;max-width:100%' ></div>";
121 $output .= "<script> (function(v,i,d,e,o){v[o]=v[o]||{}; v[o].add = v[o].add || function V(a){".
122 " (v[o].d=v[o].d||[]).push(a);};";
123 $output .= "if(!v[o].l) { v[o].l=1*new Date(); a=i.createElement(d), m=i.getElementsByTagName(d)[0]; a.async=1; ".
124 "a.src=e; m.parentNode.insertBefore(a,m);}";
125 $output .= " })(window,document,'script','//de122v0opjemw.cloudfront.net/vdo.js','vdo'); vdo.add({ ";
126 $output .= "o: '$OTP', ";
127 if ($version == 32) {
128 $output .= "version: '$version' ";
129 }
130 $output .= "}); </script>";
131 return $output;
132 }
133
134 add_shortcode('vdo', 'vdo_shortcode');
135
136
137 /// adding the settings link
138 $plugin = plugin_basename(__FILE__);
139 add_filter("plugin_action_links_$plugin", 'vdo_settings_link');
140
141 function vdo_settings_link($links)
142 {
143 $settings_link = '<a href="options-general.php?page=vdocipher.php">Settings</a>';
144 array_unshift($links, $settings_link);
145 return $links;
146 }
147
148
149 /// add the menu item and register settings
150 if (is_admin()) { // admin actions
151 add_action('admin_menu', 'vdo_menu');
152 add_action('admin_init', 'register_vdo_settings');
153 } else {
154 // non-admin enqueues, actions, and filters
155 }
156 function vdo_menu()
157 {
158 add_options_page('VdoCipher Options', 'VdoCipher', 'manage_options', 'vdocipher', 'vdo_options');
159 }
160 function vdo_options()
161 {
162 if (!get_option('vdo_default_height')) {
163 update_option('vdo_default_height', '360');
164 }
165 if (!get_option('vdo_default_width')) {
166 update_option('vdo_default_width', '640');
167 }
168 $vdo_client_key = get_option('vdo_client_key');
169 if (!$vdo_client_key && strlen($vdo_client_key) != 64) {
170 vdo_show_form_client_key();
171 return "";
172 }
173 if (!current_user_can('manage_options')) {
174 wp_die(__('You do not have sufficient permissions to access this page.'));
175 }
176 include('include/options.php');
177 }
178 function register_vdo_settings()
179 {
180 // whitelist options
181 register_setting('vdo_option-group', 'vdo_client_key');
182 register_setting('vdo_option-group', 'vdo_default_height');
183 register_setting('vdo_option-group', 'vdo_default_width');
184 register_setting('vdo_option-group', 'vdo_annotate_code');
185 }
186
187 /// adding a section for asking for the client key
188 function vdo_show_form_client_key()
189 {
190 include('include/setting_form.php');
191 }
192 register_deactivation_hook(__FILE__, 'vdo_deactivate');
193 function vdo_deactivate()
194 {
195 delete_option('vdo_client_key');
196 delete_option('vdo_default_width');
197 delete_option('vdo_default_height');
198 delete_option('vdo_annotate_code');
199 }
200 function vdo_activate()
201 {
202 if (!get_option('vdo_default_height')) {
203 update_option('vdo_default_height', '400');
204 }
205 if (!get_option('vdo_default_width')) {
206 update_option('vdo_default_width', '640');
207 }
208 }
209 register_activation_hook(__FILE__, 'vdo_activate');
210 function vdo_admin_notice()
211 {
212 if ((!get_option('vdo_client_key') || strlen(get_option('vdo_client_key')) != 64)
213 && basename($_SERVER['PHP_SELF']) == "plugins.php"
214 ) {
215 ?>
216 <div class="error">
217 <p>
218 The VdoCipher plugin is not ready.
219 <a href="options-general.php?page=vdocipher">Click here to configure</a>
220 </p>
221 </div>
222 <?php
223 }
224 }
225 add_action('admin_notices', 'vdo_admin_notice');
226