PluginProbe
WpStream – Live Streaming, Video on Demand, Pay Per View / 2.03
WpStream – Live Streaming, Video on Demand, Pay Per View v2.03
4.14.0 4.13.2 4.13.1 4.13 4.12.5 4.12.4 4.12.3 4.12.2 4.12.1 4.12 4.4.4 4.4.5 4.4.6 4.4.7 4.4.8 4.4.9 4.5 4.5.1 4.5.11 4.5.11.1 4.5.11.2 4.5.11.4 4.5.11.5 4.5.11.6 4.5.12 All 180 releases
wpstream / wpstream.php

wpstream.php in WpStream – Live Streaming, Video on Demand, Pay Per View 2.03, at wpstream.php

456 lines 15.9 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Plugin Name: WpStream
4 * Plugin URI: wpstream.net
5 * Description: WpStream is a wordpress plugin to help you stream & monetize media content.
6 * Version: 2.03
7 * Author: wpstream.net
8 * Author URI: https://wpstream.net
9 * Developer: WpStream
10 * Developer URI: https://wpstream.net
11 * Text Domain: wpstream
12 * Domain Path: /languages
13 * * Copyright: © 2017 WpStream
14 */
15
16
17 define('WPSTREAM_CLUBLINK', 'wpstream.net');
18 define('WPSTREAM_CLUBLINKSSL', 'https');
19 define('WPSTREAM_PLUGIN_URL', plugins_url() );
20 define('WPSTREAM_PLUGIN_DIR_URL', plugin_dir_url(__FILE__) );
21 define('WPSTREAM_PLUGIN_PATH', plugin_dir_path(__FILE__) );
22 define('WPSTREAM_PLUGIN_BASE', plugin_basename(__FILE__) );
23
24 require_once ('main.php');
25 require_once ('libs/api_functions.php');
26 require_once ('libs/plugin-admin.php');
27 require_once ('libs/product_types.php');
28 require_once ('libs/wpstream_free_product_types.php');
29 require_once ('libs/shortcodes.php');
30 require_once ('libs/keys.php');
31
32
33
34 function wpstream_install(){
35 flush_rewrite_rules();
36 }
37
38 register_activation_hook( __FILE__, 'wpstream_install' );
39
40
41
42
43 function wpstream_deactivation(){
44 delete_option('wp_estate_token_expire');
45 delete_option('wp_estate_curent_token');
46 delete_option('wpstream_api_key');
47 delete_option('wpstream_api_secret_key');
48 delete_option('wpstream_api_username');
49 delete_option('wpstream_api_password');
50
51 flush_rewrite_rules();
52 }
53 register_deactivation_hook( __FILE__, 'wpstream_deactivation' );
54
55
56 wpstream_main_start();
57
58
59
60 function wpstream_admin_notice(){
61 if ( !in_array( 'woocommerce/woocommerce.php', apply_filters( 'active_plugins', get_option( 'active_plugins' ) ) ) ) {
62 print '<div class="notice notice-error is-dismissible">
63 <p>'.__( 'WpStream Pay Per View / Subscription mode works only with WooCommerce - If you want to charge money for your live events or videos you need to activate WooCommerce plugin', 'wpestate' ).'</p>
64 </div>';
65 }
66 if( !in_array ('curl', get_loaded_extensions())) {
67 print '<div class="notice notice-error is-dismissible">
68 <p>'.__( 'The php CURL library is not enabled on your server. WpStream plugin needs this library in order to work. Please address this issue with your hosting provider.', 'wpestate' ).'</p>
69 </div>';
70 }
71
72
73 }
74 add_action( 'admin_notices', 'wpstream_admin_notice' );
75
76
77
78 function wpstream_enqueue_styles() {
79 wp_enqueue_style('wpstream-style', WPSTREAM_PLUGIN_DIR_URL .'/wpstream_style.css' );
80 wp_enqueue_style('video-js.min', WPSTREAM_PLUGIN_DIR_URL.'/css/video-js.min.css', array(), '1.0', 'all');
81 wp_enqueue_script('video.min', WPSTREAM_PLUGIN_DIR_URL.'js/video.min.js',array(), '1.0', false);
82
83 wp_enqueue_script('videojs-contrib-hls', WPSTREAM_PLUGIN_DIR_URL.'js/videojs-contrib-hls.min.js',array('video.min'), '1.0', false);
84 wp_enqueue_script('youtube.min', WPSTREAM_PLUGIN_DIR_URL.'js/youtube.min.js',array('video.min'), '1.0', false);
85 wp_enqueue_script('videojs-vimeo.min', WPSTREAM_PLUGIN_DIR_URL.'js/videojs-vimeo.min.js',array('video.min'), '1.0', false);
86 }
87
88
89
90
91 function wpstream_enqueue_styles_admin(){
92 wp_enqueue_script("jquery-ui-slider");
93 wp_enqueue_script("jquery-ui-datepicker");
94 wp_enqueue_script('wpstream-jquery.fileupload', WPSTREAM_PLUGIN_DIR_URL.'js/jquery.fileupload.js',array(), '1.0', true);
95
96 wp_enqueue_style ('admin-css', WPSTREAM_PLUGIN_DIR_URL.'/css/admin_style.css', array(), '1.0', 'all');
97 wp_enqueue_script('wpstream-admin-control', WPSTREAM_PLUGIN_DIR_URL.'js/admin_control.js',array(), '1.0', true);
98 wp_localize_script('wpstream-admin-control', 'wpstream_admin_control_vars',
99 array(
100 'admin_url' => get_admin_url(),
101 'loading_url' => WPSTREAM_PLUGIN_DIR_URL.'/img/loading.gif',
102 'download_mess' => esc_html__('Click to download! The url will work for the next 20 minutes! Refresh page if you need to generate the link again!','wpstream'),
103 'uploading' => esc_html('We are uploading your file.Do not close this window!','wpstream'),
104 'upload_complete2' => esc_html('Upload Complete! You can upload another file!','wpstream'),
105 'not_accepted' => esc_html('The file is not an accepted video format','wpstream'),
106 'upload_complete' => esc_html('Upload Complete!','wpstream'),
107 'no_band' => esc_html('Not enough bandwidth.','wpsteam'),
108 'no_band_no_store' => esc_html('Not enough bandwidth or storage.','wpsteam')
109
110 ));
111 }
112
113
114
115
116
117 function wpstream_my_custom_endpoints() {
118 add_rewrite_endpoint( 'video-list', EP_ROOT | EP_PAGES );
119 add_rewrite_endpoint( 'event-list', EP_ROOT | EP_PAGES );
120 }
121
122
123
124 function wpstream_my_custom_query_vars( $vars ) {
125 $vars[] = 'video-list';
126 $vars[] = 'event-list';
127 return $vars;
128 }
129
130
131
132 function wpstream_custom_flush_rewrite_rules() {
133 flush_rewrite_rules();
134 }
135
136
137
138 function wpstream_custom_my_account_menu_items( $items ) {
139 if(function_exists('wpstream_is_global_subscription') && wpstream_is_global_subscription()){
140 $items = array(
141 'dashboard' => __( 'Dashboard', 'woocommerce' ),
142 'orders' => __( 'Orders', 'woocommerce' ),
143 'edit-address' => __( 'Addresses', 'woocommerce' ),
144 'edit-account' => __( 'Edit Account', 'woocommerce' ),
145 'customer-logout' => __( 'Logout', 'woocommerce' ),
146 );
147 }else{
148 $items = array(
149 'dashboard' => __( 'Dashboard', 'woocommerce' ),
150 'orders' => __( 'Orders', 'woocommerce' ),
151 'edit-address' => __( 'Addresses', 'woocommerce' ),
152 'edit-account' => __( 'Edit Account', 'woocommerce' ),
153 'event-list' => __( 'Events', 'wpstream' ),
154 'video-list' => __( 'Videos', 'wpstream' ),
155 'customer-logout' => __( 'Logout', 'woocommerce' ),
156 );
157 }
158 return $items;
159 }
160
161
162 function wpstream_custom_endpoint_content_event_list() {
163 include 'woocommerce/myaccount/event_list.php';
164 }
165
166
167
168 function wpstream_custom_endpoint_video_list() {
169 include 'woocommerce/myaccount/video_list.php';
170 }
171
172
173
174
175 function wpstream_user_logged_in_product_already_bought($from_sh_id='') {
176
177 if ( is_user_logged_in() ) {
178 global $product;
179 $current_user = wp_get_current_user();
180 $product_id = $product->get_id();
181
182
183 if ( wc_customer_bought_product( $current_user->user_email, $current_user->ID, $product_id) || ( function_exists('wcs_user_has_subscription') && wcs_user_has_subscription( $current_user->ID, $product_id ,'active') ) ){
184
185
186 echo '<div class="wpstream_player_wrapper"><div class="wpstream_player_container">';
187
188 $is_subscription_live_event = esc_html(get_post_meta($product_id,'_subscript_live_event',true));
189 $term_list = wp_get_post_terms($product_id, 'product_type');
190
191 if( $term_list[0]->name=='live_stream' || ($term_list[0]->name=='subscription' && $is_subscription_live_event=='yes' ) ){
192 wpstream_live_event_player($product_id);
193 }else if( $term_list[0]->name=='video_on_demand' || ($term_list[0]->name=='subscription' && $is_subscription_live_event=='no' ) ){
194 wpstream_video_on_demand_player($product_id);
195 }
196
197 }else{
198 echo '<div class="wpstream_player_wrapper no_buy"><div class="wpstream_player_container">';
199 echo '<div class="wpstream_notice">'.__('You did not buy this product!','wpstream').'</div>';
200 }
201
202 echo '</div></div>';
203 }
204 }
205
206
207 function wpstream_live_event_player($product_id){
208 $live_event_uri = get_post_meta($product_id,'live_event_uri',true);
209 $thumb_id = get_post_thumbnail_id($product_id);
210 $thumb = wp_get_attachment_image_src($thumb_id,'small');
211 $live_event_uri_final='';
212 if(isset($live_event_uri) ){
213 $live_event_uri_aray = explode('/wpstream/', $live_event_uri);
214 $part1 = str_replace('rtmp', 'https',$live_event_uri_aray[0]);
215 if(isset($live_event_uri_aray[1])){
216 $part2_array = explode('?auth=', $live_event_uri_aray[1]);
217 $live_event_uri_final = $part1.'/hls/'.$part2_array[0].'.m3u8';
218 }
219 }
220 $now=time().rand(0,10);
221 echo'<video id="wpstream-video'.$now.'" class="video-js vjs-default-skin vjs-16-9" controls>
222 <source
223 src="'.$live_event_uri_final.'"
224 type="application/x-mpegURL">
225 </video>
226
227 <script>
228 var player = videojs(\'wpstream-video'.$now.'\');
229 player.play();
230 </script>';
231
232 }
233
234
235
236 function wpstream_video_on_demand_player($product_id){
237 $thumb_id = get_post_thumbnail_id($product_id);
238 $thumb = wp_get_attachment_image_src($thumb_id,'small');
239 $wpstream_data_setup= ' data-setup="{}" ';
240
241 $free_video_type = intval( get_post_meta($product_id, 'wpstream_product_type', true));
242
243 if($free_video_type==2 || get_post_type($product_id)=='product' ){
244 $video_type = 'application/x-mpegURL';
245 $video_path = get_post_meta($product_id,'_movie_url',true);
246 if(get_post_type($product_id)=='wpstream_product'){
247 $video_path = esc_html(get_post_meta($product_id, 'wpstream_free_video', true));
248 }
249
250 $username = esc_html ( get_option('wpstream_api_username','') );
251 if (filter_var($username, FILTER_VALIDATE_EMAIL)) {
252 $username = wpstream_retrive_username();
253 }
254
255 if(strpos($username,'@')!=false){
256 $username_array= explode('@', $username);
257 $username=$username_array[0];
258 }
259
260 $video_path_final = 'https://vod.streamer.wpstream.net/'.$username.'/'.$video_path.'/index.m3u8?'.get_site_url();
261 if(!is_ssl()){
262 $video_path_final = 'http://vod.streamer.wpstream.net/'.$username.'/'.$video_path.'/index.m3u8?'.get_site_url();
263 }
264 }else if($free_video_type==3){
265 $video_type = 'video/mp4';
266 $video_path_final=esc_html(get_post_meta($product_id, 'wpstream_free_video_external', true));
267
268 if (strpos($video_path_final, 'www.youtube') !== false) {
269 $wpstream_data_setup= ' data-setup=\'{ "techOrder": ["youtube"], "sources": [{ "type": "video/youtube", "src": "'.$video_path_final.'"}] }\' ';
270 $video_path_final='';
271 }
272 if (strpos($video_path_final, 'vimeo.com') !== false) {
273 $wpstream_data_setup= ' data-setup=\'{ "techOrder": ["vimeo"], "sources": [{ "type": "video/vimeo", "src": "'.$video_path_final.'"}], "vimeo": { "color": "#fbc51b"} }\' ';
274 $video_path_final='';
275 }
276
277 }
278
279 echo '<video id="wpstream-video'.time().'" class="video-js vjs-default-skin vjs-16-9 kuk" controls preload="auto"
280 poster="'.$thumb[0].'"
281 '.$wpstream_data_setup.'
282 >
283
284 <source src="'.trim($video_path_final).'" type="'.$video_type.'">
285 <p class="vjs-no-js">
286 To view this video please enable JavaScript, and consider upgrading to a web browser that
287 <a href="http://videojs.com/html5-video-support/" target="_blank">supports HTML5 video</a>
288 </p>
289 </video>';
290
291 }
292
293
294
295 add_filter('display_post_states', 'wpstream_custom_post_states',10,2);
296
297 function wpstream_custom_post_states( $states, $post ) {
298 $title =strtolower( get_the_title($post->ID));
299 if ( ( 'page' == get_post_type( $post->ID ) ) && ( $title ==='userkey' || $title ==='vodkey' || $title ==='wpstream' )) {
300 $states[] = __('by WpStream - do not delete','wpstream');
301 }
302
303 return $states;
304 }
305
306
307
308
309
310
311 function wpstream_custom_rewrite_tag() {
312 add_rewrite_tag('%streamname%', '([^&]+)');
313 add_rewrite_tag('%streamname2%', '([^&]+)');
314 add_rewrite_tag('%variety%', '([^&]+)');
315 add_rewrite_tag('%userkey%', '([^&]+)');
316 add_rewrite_tag('%streamvod%', '([^&]+)');
317 }
318 add_action('init', 'wpstream_custom_rewrite_tag', 10, 0);
319
320 //add_action('generate_rewrite_rules', 'wpstream_custom_rewrite_rule');
321
322 function wpstream_custom_rewrite_rule() {
323 $page = get_page_by_title( 'WpStream' );
324 $page_user_key = get_page_by_title( 'Userkey' );
325 $page_vod_key = get_page_by_title( 'Vodkey' );
326
327
328 if( isset($page->ID) ){
329 add_rewrite_rule('^keys/([^/]*/?)', 'index.php?page_id='.$page->ID.'&streamname=$matches[1]','top');
330 }
331
332 if( isset($page_vod_key->ID) ){ // is wod-key=page-template
333 add_rewrite_rule('^keys1/([^/]*)/([^/]*)/?','index.php?page_id='.$page_vod_key->ID.'&streamname=$matches[1]&streamname2=$matches[2]','top');
334 }
335
336 if( isset($page_user_key->ID) ){//us user-key-page-temaplte
337 add_rewrite_rule('^keys2/([^/]*)/([^/]*)/?','index.php?page_id='.$page_user_key->ID.'&streamname=$matches[1]&streamname2=$matches[2]','top');
338 }
339
340 flush_rewrite_rules();
341
342 }
343 add_action('init', 'wpstream_custom_rewrite_rule', 10, 0);
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361 function wpstream_live_page_template( $page_template ){
362 if ( is_page( 'wpstream' ) ) {
363 $page_template = dirname( __FILE__ ) . '/live_stream_checker.php';
364 }
365
366
367 return $page_template;
368 }
369 add_filter( 'page_template', 'wpstream_live_page_template' );
370
371
372
373
374 function wpstream_userkey_page_template( $page_template ){
375 if ( is_page( 'Userkey' ) ) {
376 $page_template = dirname( __FILE__ ) . '/user-key-page-template.php';
377 }
378 return $page_template;
379 }
380 add_filter( 'page_template', 'wpstream_userkey_page_template' );
381
382
383
384
385
386 function wpstream_vodkey_page_template( $page_template ){
387 if ( is_page( 'vodkey' ) ) {
388 $page_template = dirname( __FILE__ ) . '/vod-key-page-template.php';
389 }
390 return $page_template;
391 }
392 add_filter( 'page_template', 'wpstream_vodkey_page_template' );
393
394
395
396 function wpstream_remove_gallery_and_product_images() {
397 if ( is_product() ) {
398 remove_action( 'woocommerce_before_single_product_summary', 'woocommerce_show_product_images', 20 );
399 }
400 }
401
402
403
404
405 function wpstream_cors_check_and_response(){
406 if ($_SERVER['REQUEST_METHOD'] == "OPTIONS") {
407 header('Access-Control-Allow-Methods: POST, GET');
408 header('Access-Control-Allow-Headers: Authorization');
409 header('Access-Control-Max-Age: 1'); //1728000
410 header("Content-Length: 0");
411 header("Content-Type: text/plain charset=UTF-8");
412 exit(0);
413 }
414 }
415
416 add_action('wo_before_api', 'wpstream_cors_check_and_response');
417
418
419 add_action('add_meta_boxes', 'wpstream_startstreaming_sidebar_meta');
420 if( !function_exists('wpstream_startstreaming_sidebar_meta') ):
421
422 function wpstream_startstreaming_sidebar_meta() {
423 global $post;
424
425 $term_list = wp_get_post_terms($post->ID, 'product_type');
426
427
428 if( get_post_meta($post->ID, 'wpstream_product_type', true)==1 ){
429 add_meta_box('wpstream-sidebar-meta', esc_html__('Live Streaming', 'wpstream'), 'wpstream_start_stream_meta', 'wpstream_product', 'side', 'high');
430 }
431
432 if(!is_wp_error( $term_list )){
433 if( isset($term_list[0]->name) ){
434 if( $term_list[0]->name=='live_stream' || ($term_list[0]->name=='subscription' && $is_subscription_live_event=='yes' ) ){
435 add_meta_box('wpstream-sidebar-meta', esc_html__('Live Streaming', 'wpstream'), 'wpstream_start_stream_meta', 'product', 'side', 'high');
436 }
437 }
438 }
439
440 }
441 endif;
442
443
444 function wpstream_start_stream_meta(){
445 global $live_event_for_user;
446 global $post;
447
448
449
450
451 $ajax_nonce = wp_create_nonce( "wpstream_start_event_nonce" );
452 print '<input type="hidden" id="wpstream_start_event_nonce" value="'.$ajax_nonce.'">';
453 $live_event_for_user = wpstream_get_live_event_for_user();
454 wpstream_live_stream_unit($post->ID);
455
456 }