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

223 lines 7.4 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.10
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 $output = "<div id='vdo$OTP' style='height:$height;width:$width;max-width:100%' ></div>";
118 $output .= "<script> (function(v,i,d,e,o){v[o]=v[o]||{}; v[o].add = v[o].add || function V(a){".
119 " (v[o].d=v[o].d||[]).push(a);};";
120 $output .= "if(!v[o].l) { v[o].l=1*new Date(); a=i.createElement(d), m=i.getElementsByTagName(d)[0]; a.async=1; ".
121 "a.src=e; m.parentNode.insertBefore(a,m);}";
122 $output .= " })(window,document,'script','//de122v0opjemw.cloudfront.net/vdo.js','vdo'); vdo.add({ ";
123 $output .= "o: '$OTP', ";
124 if ($version == 32) {
125 $output .= "version: '$version' ";
126 }
127 $output .= "}); </script>";
128 return $output;
129 }
130
131 add_shortcode('vdo', 'vdo_shortcode');
132
133
134 /// adding the settings link
135 $plugin = plugin_basename(__FILE__);
136 add_filter("plugin_action_links_$plugin", 'vdo_settings_link');
137
138 function vdo_settings_link($links)
139 {
140 $settings_link = '<a href="options-general.php?page=vdocipher.php">Settings</a>';
141 array_unshift($links, $settings_link);
142 return $links;
143 }
144
145
146 /// add the menu item and register settings
147 if (is_admin()) { // admin actions
148 add_action('admin_menu', 'vdo_menu');
149 add_action('admin_init', 'register_vdo_settings');
150 } else {
151 // non-admin enqueues, actions, and filters
152 }
153 function vdo_menu()
154 {
155 add_options_page('VdoCipher Options', 'VdoCipher', 'manage_options', 'vdocipher', 'vdo_options');
156 }
157 function vdo_options()
158 {
159 if (!get_option('vdo_default_height')) {
160 update_option('vdo_default_height', '360');
161 }
162 if (!get_option('vdo_default_width')) {
163 update_option('vdo_default_width', '640');
164 }
165 $vdo_client_key = get_option('vdo_client_key');
166 if (!$vdo_client_key && strlen($vdo_client_key) != 64) {
167 vdo_show_form_client_key();
168 return "";
169 }
170 if (!current_user_can('manage_options')) {
171 wp_die(__('You do not have sufficient permissions to access this page.'));
172 }
173 include('include/options.php');
174 }
175 function register_vdo_settings()
176 {
177 // whitelist options
178 register_setting('vdo_option-group', 'vdo_client_key');
179 register_setting('vdo_option-group', 'vdo_default_height');
180 register_setting('vdo_option-group', 'vdo_default_width');
181 register_setting('vdo_option-group', 'vdo_annotate_code');
182 }
183
184 /// adding a section for asking for the client key
185 function vdo_show_form_client_key()
186 {
187 include('include/setting_form.php');
188 }
189 register_deactivation_hook(__FILE__, 'vdo_deactivate');
190 function vdo_deactivate()
191 {
192 delete_option('vdo_client_key');
193 delete_option('vdo_default_width');
194 delete_option('vdo_default_height');
195 delete_option('vdo_annotate_code');
196 }
197 function vdo_activate()
198 {
199 if (!get_option('vdo_default_height')) {
200 update_option('vdo_default_height', '400');
201 }
202 if (!get_option('vdo_default_width')) {
203 update_option('vdo_default_width', '640');
204 }
205 }
206 register_activation_hook(__FILE__, 'vdo_activate');
207 function vdo_admin_notice()
208 {
209 if ((!get_option('vdo_client_key') || strlen(get_option('vdo_client_key')) != 64)
210 && basename($_SERVER['PHP_SELF']) == "plugins.php"
211 ) {
212 ?>
213 <div class="error">
214 <p>
215 The VdoCipher plugin is not ready.
216 <a href="options-general.php?page=vdocipher">Click here to configure</a>
217 </p>
218 </div>
219 <?php
220 }
221 }
222 add_action('admin_notices', 'vdo_admin_notice');
223