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
← All changes | vdocipher.php +184 -142 1.31.9 View file →
@@ -2,182 +2,224 @@
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.3
6 + * Version: 1.9
7 7 * Author: VdoCipher
8 8 * Author URI: http://www.vdocipher.com
9 9 * License: GPL2
10 10 */
11 11
12 +error_reporting(E_ALL);
13 +ini_set('display_errors', 1);
12 14
13 15 if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) {
14 16 header($_SERVER['SERVER_PROTOCOL'] . ' 404 Not Found');
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 + 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>");
16 20 }
17 21
18 -function vdo_send($action, $params, $posts = false){
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 - }
23 - $curl = curl_init();
24 - curl_setopt($curl, CURLOPT_FAILONERROR, true);
25 - curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);
26 - curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
27 - curl_setopt($curl, CURLOPT_VERBOSE, true);
28 - curl_setopt($curl, CURLOPT_FAILONERROR, false);
29 - //curl_setopt($curl, CURLOPT_PROXY, "xxxxxxxxxxxxxxxxx:xxxx");
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 + }
30 28
31 - $getData = http_build_query($params);
32 - curl_setopt($curl, CURLOPT_POST, true);
33 - $postData = "clientSecretKey=$client_key";
34 - if ($posts) {
35 - $postData .= "&". $posts;
36 - }
37 - curl_setopt($curl, CURLOPT_POSTFIELDS, $postData);
38 - $url = "http://api.vdocipher.com/v2/$action/?$getData";
39 - curl_setopt($curl, CURLOPT_URL,$url);
40 - $html = curl_exec($curl);
41 - if (!$html) {
42 - echo curl_error($curl);
43 - }
44 - curl_close($curl);
45 - return $html;
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'];
46 42 }
47 -function vdo_shortcode( $atts ) {
48 - extract( shortcode_atts(
49 - array(
50 - 'title' => 'TITLE_OF_VIDEO',
51 - 'width' => get_option('vdo_default_width'),
52 - 'height' => get_option('vdo_default_height'),
53 - 'id' => 'id',
54 - 'no_annotate'=> false
55 - ), $atts )
56 - );
57 - if(!$atts['id']){
58 - if(!$atts['title'])
59 - return "Required argument id for embedded video not found.";
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 - $video = $video[0]->id;
73 - if ($video == null) {
74 - return "No video with given title found.";
75 - }
76 - }
77 - else
78 - $video = $id;
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 + }
79 80
80 - $params = array(
81 - 'video'=>$video
82 - );
83 - $anno = false;
84 - function eval_date($matches){
85 - return date($matches[1]);
86 - }
87 - if (get_option('vdo_annotate_code') != "") {
88 - $current_user = wp_get_current_user();
89 - $vdo_annotate_code = get_option('vdo_annotate_code');
90 - if (is_user_logged_in()) {
91 - $vdo_annotate_code = str_replace('{name}', $current_user->display_name , $vdo_annotate_code);
92 - $vdo_annotate_code = str_replace('{email}', $current_user->user_email , $vdo_annotate_code);
93 - $vdo_annotate_code = str_replace('{username}', $current_user->user_login , $vdo_annotate_code);
94 - $vdo_annotate_code = str_replace('{id}', $current_user->ID , $vdo_annotate_code);
95 - }
96 - $vdo_annotate_code = str_replace('{ip}', $_SERVER['REMOTE_ADDR'] , $vdo_annotate_code);
97 - $vdo_annotate_code = preg_replace_callback('/\{date\.([^\}]+)\}/', "eval_date" , $vdo_annotate_code);
98 - if(!$no_annotate)
99 - $anno = "annotate=". urlencode($vdo_annotate_code);
100 - }
101 - $OTP = vdo_send("otp", $params, $anno);
102 - $OTP = json_decode($OTP)->otp;
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;
103 115
104 - $output = "<span id='vdo$OTP'></span>";
105 - $output .= "<script src='https://de122v0opjemw.cloudfront.net/utils/playerInit.php?otp=$OTP&height=$height&width=$width&'></script>";
106 - return $output;
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;
107 132 }
108 133
109 -add_shortcode( 'vdo', 'vdo_shortcode' );
134 +add_shortcode('vdo', 'vdo_shortcode');
110 135
111 136
112 137 /// adding the settings link
113 -$plugin = plugin_basename(__FILE__);
114 -add_filter("plugin_action_links_$plugin", 'vdo_settings_link' );
138 +$plugin = plugin_basename(__FILE__);
139 +add_filter("plugin_action_links_$plugin", 'vdo_settings_link');
115 140
116 -function vdo_settings_link($links) {
117 - $settings_link = '<a href="options-general.php?page=vdocipher.php">Settings</a>';
118 - array_unshift($links, $settings_link);
119 - return $links;
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;
120 146 }
121 147
122 148
123 149 /// add the menu item and register settings
124 -if ( is_admin() ){ // admin actions
125 - add_action( 'admin_menu', 'vdo_menu' );
126 - add_action( 'admin_init', 'register_vdo_settings' );
150 +if (is_admin()) { // admin actions
151 + add_action('admin_menu', 'vdo_menu');
152 + add_action('admin_init', 'register_vdo_settings');
127 153 } else {
128 - // non-admin enqueues, actions, and filters
154 + // non-admin enqueues, actions, and filters
129 155 }
130 -function vdo_menu(){
131 - add_options_page( 'VdoCipher Options', 'VdoCipher', 'manage_options', 'vdocipher', 'vdo_options' );
156 +function vdo_menu()
157 +{
158 + add_options_page('VdoCipher Options', 'VdoCipher', 'manage_options', 'vdocipher', 'vdo_options');
132 159 }
133 -function vdo_options(){
134 - if (!get_option('vdo_default_height'))
135 - update_option('vdo_default_height', '400');
136 - if (!get_option('vdo_default_width'))
137 - update_option('vdo_default_width', '640');
138 - $vdo_client_key = get_option('vdo_client_key');
139 - if (!$vdo_client_key && strlen($vdo_client_key) != 64) {
140 - vdo_show_form_client_key();
141 - return "";
142 - }
143 - if ( !current_user_can( 'manage_options' ) ) {
144 - wp_die( __( 'You do not have sufficient permissions to access this page.' ) );
145 - }
146 - include('include/options.php');
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');
147 177 }
148 -function register_vdo_settings() { // whitelist options
149 - register_setting( 'vdo_option-group', 'vdo_client_key' );
150 - register_setting( 'vdo_option-group', 'vdo_default_height' );
151 - register_setting( 'vdo_option-group', 'vdo_default_width' );
152 - register_setting( 'vdo_option-group', 'vdo_annotate_code' );
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');
153 185 }
154 186
155 187 /// adding a section for asking for the client key
156 -function vdo_show_form_client_key(){
157 - include('include/setting_form.php');
188 +function vdo_show_form_client_key()
189 +{
190 + include('include/setting_form.php');
158 191 }
159 192 register_deactivation_hook(__FILE__, 'vdo_deactivate');
160 -function vdo_deactivate(){
161 - delete_option( 'vdo_client_key' );
162 - delete_option('vdo_default_width');
163 - delete_option('vdo_default_height');
164 - delete_option('vdo_annotate_code');
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');
165 199 }
166 -function vdo_activate() {
167 - if (!get_option('vdo_default_height'))
168 - update_option('vdo_default_height', '400');
169 - if (!get_option('vdo_default_width'))
170 - update_option('vdo_default_width', '640');
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 + }
171 208 }
172 -register_activation_hook( __FILE__, 'vdo_activate' );
173 -function vdo_admin_notice() {
174 - if((!get_option('vdo_client_key') || strlen(get_option('vdo_client_key')) != 64) && basename($_SERVER['PHP_SELF']) == "plugins.php" ){
175 - ?>
176 - <div class="error">
177 - <p>The VdoCipher plugin is not ready. <a href="options-general.php?page=vdocipher">Click here to configure</a>
178 - </p>
179 - </div>
180 - <?php
181 - }
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 + }
182 224 }
183 -add_action( 'admin_notices', 'vdo_admin_notice' );
225 +add_action('admin_notices', 'vdo_admin_notice');