PluginProbe
WpStream – Live Streaming, Video on Demand, Pay Per View / 2.06
WpStream – Live Streaming, Video on Demand, Pay Per View v2.06
4.14.1 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 All 181 releases
← All changes | wpstream.php +447 -92 4.52.06 View file →
@@ -1,21 +1,20 @@
1 1 <?php
2 2 /**
3 - * Plugin Name: WpStream - Live Streaming, Video on Demand, Pay Per View
4 - * Plugin URI: http://wpstream.net
5 - * Description: WpStream is a platform that allows you to live stream, create Video-on-Demand, and offer Pay-Per-View videos. We provide an affordable and user-friendly way for businesses, non-profits, and public institutions to broadcast their content and monetize their work.
6 - * Version: 4.5
7 - * Author: wpstream
8 - * Author URI: http://wpstream.net
9 - * Text Domain: wpstream
10 - * Domain Path: /languages
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.06
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
11 14 */
15 +
12 16
13 -// If this file is called directly, abort.
14 -if ( ! defined( 'WPINC' ) ) {
15 - die;
16 -}
17 -define('WPSTREAM_PLUGIN_VERSION', '4.4.20.12');
18 17 define('WPSTREAM_CLUBLINK', 'wpstream.net');
19 18 define('WPSTREAM_CLUBLINKSSL', 'https');
20 19 define('WPSTREAM_PLUGIN_URL', plugins_url() );
21 20 define('WPSTREAM_PLUGIN_DIR_URL', plugin_dir_url(__FILE__) );
@@ -20,125 +19,481 @@
20 19 define('WPSTREAM_PLUGIN_URL', plugins_url() );
21 20 define('WPSTREAM_PLUGIN_DIR_URL', plugin_dir_url(__FILE__) );
22 21 define('WPSTREAM_PLUGIN_PATH', plugin_dir_path(__FILE__) );
23 22 define('WPSTREAM_PLUGIN_BASE', plugin_basename(__FILE__) );
24 -define('WPSTREAM_API', 'https://baker.wpstream.net');
25 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');
26 31
27 32
28 33
34 +function wpstream_install(){
35 + flush_rewrite_rules();
36 +}
29 37
30 -/**
31 - * The code that runs during plugin activation.
32 - * This action is documented in includes/class-wpstream-activator.php
33 - */
34 -function activate_wpstream() {
35 - require_once plugin_dir_path( __FILE__ ) . 'includes/class-wpstream-activator.php';
36 - Wpstream_Activator::activate();
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();
37 52 }
53 +register_deactivation_hook( __FILE__, 'wpstream_deactivation' );
38 54
39 -/**
40 - * The code that runs during plugin deactivation.
41 - * This action is documented in includes/class-wpstream-deactivator.php
42 - */
43 -function deactivate_wpstream() {
44 - require_once plugin_dir_path( __FILE__ ) . 'includes/class-wpstream-deactivator.php';
45 - Wpstream_Deactivator::deactivate();
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 +
46 73 }
74 +add_action( 'admin_notices', 'wpstream_admin_notice' );
47 75
48 -register_activation_hook( __FILE__, 'activate_wpstream' );
49 -register_deactivation_hook( __FILE__, 'deactivate_wpstream' );
50 76
51 -/**
52 - * The core plugin class that is used to define internationalization,
53 - * admin-specific hooks, and public-facing site hooks.
54 - */
55 -require plugin_dir_path( __FILE__ ) . 'includes/class-wpstream.php';
56 -require plugin_dir_path( __FILE__ ) . 'wpstream-elementor.php';
57 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 +
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 +}
58 87
59 -require plugin_dir_path( __FILE__ ) . 'integrations/integrations.php';
60 88
61 -/**
62 - * Begins execution of the plugin.
63 - *
64 - * Since everything within the plugin is registered via hooks,
65 - * then kicking off the plugin from this point in the file does
66 - * not affect the page life cycle.
67 - *
68 - * @since 3.0.1
69 - */
70 89
71 -global $wpstream_plugin;
72 -$wpstream_plugin = new Wpstream();
73 -$wpstream_plugin->run();
74 90
75 -add_action( 'upgrader_process_complete', 'wpstream_my_upgrate_function',10, 2);
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);
76 95
77 -function wpstream_my_upgrate_function( $upgrader_object, $options ) {
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 +}
78 112
79 -
80 - $current_plugin_path_name = plugin_basename( __FILE__ );
81 -
82 - if ($options['action'] == 'update' && $options['type'] == 'plugin' ) {
83 - if(is_array($options)):
84 - foreach($options['plugins'] as $each_plugin) {
85 - if ($each_plugin==$current_plugin_path_name) {
86 - delete_transient('wpstream_token_api');
87 - update_option('wp_estate_token_expire',0);
88 - update_option('wp_estate_curent_token',' ');
89 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 +
212 +
213 + $live_event_uri_final= wpstream_request_hls_player($product_id);
214 +
215 +
216 +
217 +
218 +
219 + $now=time().rand(0,10);
220 + echo'<video id="wpstream-video'.$now.'" class="video-js vjs-default-skin vjs-16-9" controls>
221 + <source
222 + src="'.$live_event_uri_final.'"
223 + type="application/x-mpegURL">
224 + </video>
225 +
226 + <script>
227 + var player = videojs(\'wpstream-video'.$now.'\',{
228 + html5: {
229 + hls: {
230 + bandwidth: 500000,
231 + useBandwidthFromLocalStorage: true,
232 + smoothQualityChange: true
233 + }
234 + },
235 + errorDisplay: false,
236 + autoplay:true,
237 + preload:"auto",
238 +
239 + });
240 + wpstream_player_load();
241 +
242 + function wpstream_player_load(){
243 + player.src({
244 + src: "'.$live_event_uri_final.'",
245 + type: "application/x-mpegURL"
246 + });
247 + player.play();
248 + }
249 +
250 + timeQueue = [];
251 + setInterval(function(){
252 + timeQueue.push(player.currentTime());
253 + if (timeQueue.length > 30){
254 + timeQueue.shift();
255 + if (timeQueue[0] == timeQueue[timeQueue.length -1]){
256 +
257 + if (!player.paused() || player.currentTime() == 0){
258 + timeQueue = [];
259 + try{
260 + player.currentTime(0);
261 + }catch(err){
262 +
263 + }
264 + wpstream_player_load();
265 + }
266 +
90 267 }
91 268 }
92 - endif;
269 + }, 1000);
270 +
271 +
272 +
273 + </script>';
274 +
275 +}
276 +
277 +
278 +
279 +function wpstream_video_on_demand_player($product_id){
280 + $thumb_id = get_post_thumbnail_id($product_id);
281 + $thumb = wp_get_attachment_image_src($thumb_id,'small');
282 + $wpstream_data_setup= ' data-setup="{}" ';
283 +
284 + $free_video_type = intval( get_post_meta($product_id, 'wpstream_product_type', true));
285 +
286 + if($free_video_type==2 || get_post_type($product_id)=='product' ){
287 + $video_type = 'application/x-mpegURL';
288 + $video_path = get_post_meta($product_id,'_movie_url',true);
289 + if(get_post_type($product_id)=='wpstream_product'){
290 + $video_path = esc_html(get_post_meta($product_id, 'wpstream_free_video', true));
291 + }
292 +
293 + $username = esc_html ( get_option('wpstream_api_username','') );
294 + if (filter_var($username, FILTER_VALIDATE_EMAIL)) {
295 + $username = wpstream_retrive_username();
296 + }
297 +
298 + if(strpos($username,'@')!=false){
299 + $username_array= explode('@', $username);
300 + $username=$username_array[0];
301 + }
302 +
303 + $video_path_final = 'https://vod.streamer.wpstream.net/'.$username.'/'.$video_path.'/index.m3u8?'.get_site_url();
304 + if(!is_ssl()){
305 + $video_path_final = 'http://vod.streamer.wpstream.net/'.$username.'/'.$video_path.'/index.m3u8?'.get_site_url();
306 + }
307 + }else if($free_video_type==3){
308 + $video_type = 'video/mp4';
309 + $video_path_final=esc_html(get_post_meta($product_id, 'wpstream_free_video_external', true));
310 +
311 + if (strpos($video_path_final, 'www.youtube') !== false) {
312 + $wpstream_data_setup= ' data-setup=\'{ "techOrder": ["youtube"], "sources": [{ "type": "video/youtube", "src": "'.$video_path_final.'"}] }\' ';
313 + $video_path_final='';
314 + }
315 + if (strpos($video_path_final, 'vimeo.com') !== false) {
316 + $wpstream_data_setup= ' data-setup=\'{ "techOrder": ["vimeo"], "sources": [{ "type": "video/vimeo", "src": "'.$video_path_final.'"}], "vimeo": { "color": "#fbc51b"} }\' ';
317 + $video_path_final='';
318 + }
319 +
93 320 }
94 321
322 + echo '<video id="wpstream-video'.time().'" class="video-js vjs-default-skin vjs-16-9 kuk" controls preload="auto"
323 + poster="'.$thumb[0].'"
324 + '.$wpstream_data_setup.'
325 + >
326 +
327 + <source src="'.trim($video_path_final).'" type="'.$video_type.'">
328 + <p class="vjs-no-js">
329 + To view this video please enable JavaScript, and consider upgrading to a web browser that
330 + <a href="http://videojs.com/html5-video-support/" target="_blank">supports HTML5 video</a>
331 + </p>
332 + </video>';
333 +
334 +}
335 +
336 +
337 +
338 +add_filter('display_post_states', 'wpstream_custom_post_states',10,2);
339 +
340 +function wpstream_custom_post_states( $states, $post ) {
341 + $title =strtolower( get_the_title($post->ID));
342 + if ( ( 'page' == get_post_type( $post->ID ) ) && ( $title ==='userkey' || $title ==='vodkey' || $title ==='wpstream' )) {
343 + $states[] = __('by WpStream - do not delete','wpstream');
344 + }
345 +
346 + return $states;
347 +}
348 +
349 +
350 +
351 +
352 +
353 +
354 +function wpstream_custom_rewrite_tag() {
355 + add_rewrite_tag('%streamname%', '([^&]+)');
356 + add_rewrite_tag('%streamname2%', '([^&]+)');
357 + add_rewrite_tag('%variety%', '([^&]+)');
358 + add_rewrite_tag('%userkey%', '([^&]+)');
359 + add_rewrite_tag('%streamvod%', '([^&]+)');
360 +}
361 +add_action('init', 'wpstream_custom_rewrite_tag', 10, 0);
362 +
363 +//add_action('generate_rewrite_rules', 'wpstream_custom_rewrite_rule');
364 +
365 +function wpstream_custom_rewrite_rule() {
366 + $page = get_page_by_title( 'WpStream' );
367 + $page_user_key = get_page_by_title( 'Userkey' );
368 + $page_vod_key = get_page_by_title( 'Vodkey' );
369 +
370 +
371 + if( isset($page->ID) ){
372 + add_rewrite_rule('^keys/([^/]*/?)', 'index.php?page_id='.$page->ID.'&streamname=$matches[1]','top');
373 + }
374 +
375 + if( isset($page_vod_key->ID) ){ // is wod-key=page-template
376 + add_rewrite_rule('^keys1/([^/]*)/([^/]*)/?','index.php?page_id='.$page_vod_key->ID.'&streamname=$matches[1]&streamname2=$matches[2]','top');
377 + }
378 +
379 + if( isset($page_user_key->ID) ){//us user-key-page-temaplte
380 + add_rewrite_rule('^keys2/([^/]*)/([^/]*)/?','index.php?page_id='.$page_user_key->ID.'&streamname=$matches[1]&streamname2=$matches[2]','top');
381 + }
382 +
383 + flush_rewrite_rules();
384 +
385 +}
386 +add_action('init', 'wpstream_custom_rewrite_rule', 10, 0);
387 +
388 +
389 +
390 +
391 +
392 +
393 +
394 +
395 +
396 +
397 +
398 +
399 +
400 +
401 +
402 +
403 +
404 +function wpstream_live_page_template( $page_template ){
405 + if ( is_page( 'wpstream' ) ) {
406 + $page_template = dirname( __FILE__ ) . '/live_stream_checker.php';
407 + }
408 +
95 409
410 + return $page_template;
96 411 }
412 +add_filter( 'page_template', 'wpstream_live_page_template' );
97 413
98 414
99 415
100 -add_action('wp_head', 'wpstream_add_custom_meta_to_header');
101 416
102 -function wpstream_add_custom_meta_to_header(){
103 - global $post;
417 +function wpstream_userkey_page_template( $page_template ){
418 + if ( is_page( 'Userkey' ) ) {
419 + $page_template = dirname( __FILE__ ) . '/user-key-page-template.php';
420 + }
421 + return $page_template;
422 +}
423 +add_filter( 'page_template', 'wpstream_userkey_page_template' );
104 424
105 425
106 - if ( is_singular('product') || is_singular('wpstream_product') || is_singular('wpstream_product_vod') ){
107 - $image_id = get_post_thumbnail_id();
108 - $share_img = wp_get_attachment_image_src( $image_id, 'full');
109 - $the_post = get_post($post->ID); ?>
110 426
111 - <meta property='og:title' content="<?php print esc_html(get_the_title($post->ID)); ?>"/>
112 - <?php if(isset($share_img[0])){ ?>
113 - <meta property="og:image" content="<?php print esc_url($share_img[0]); ?>"/>
114 - <meta property="og:image:secure_url" content="<?php print esc_url($share_img[0]); ?>" />
115 - <?php }?>
116 -
117 - <meta property="og:description" content=" <?php print wp_strip_all_tags( $the_post->post_content);?>" />
118 - <?php }
119 427
120 428
429 +function wpstream_vodkey_page_template( $page_template ){
430 + if ( is_page( 'vodkey' ) ) {
431 + $page_template = dirname( __FILE__ ) . '/vod-key-page-template.php';
432 + }
433 + return $page_template;
121 434 }
435 +add_filter( 'page_template', 'wpstream_vodkey_page_template' );
122 436
123 437
124 -/*
125 -*
126 -* Check integrations
127 -*
128 -*/
129 -add_action( 'plugins_loaded', 'wpstream_check_integrations' );
438 +
439 +function wpstream_remove_gallery_and_product_images() {
440 + if ( is_product() ) {
441 + remove_action( 'woocommerce_before_single_product_summary', 'woocommerce_show_product_images', 20 );
442 + }
443 +}
130 444
131 445
132 -/*
133 -*
134 -* Redirect on plugin activation
135 -*
136 -*/
137 446
138 -function wpstream_activation_redirect( $plugin ) {
139 - if( $plugin == plugin_basename( __FILE__ ) ) {
140 - exit( wp_redirect( admin_url( 'admin.php?page=wpstream_onboard' ) ) );
447 +
448 +function wpstream_cors_check_and_response(){
449 + if ($_SERVER['REQUEST_METHOD'] == "OPTIONS") {
450 + header('Access-Control-Allow-Methods: POST, GET');
451 + header('Access-Control-Allow-Headers: Authorization');
452 + header('Access-Control-Max-Age: 1'); //1728000
453 + header("Content-Length: 0");
454 + header("Content-Type: text/plain charset=UTF-8");
455 + exit(0);
141 456 }
142 457 }
143 -add_action( 'activated_plugin', 'wpstream_activation_redirect' );
144 458
459 +add_action('wo_before_api', 'wpstream_cors_check_and_response');
460 +
461 +
462 +add_action('add_meta_boxes', 'wpstream_startstreaming_sidebar_meta');
463 +if( !function_exists('wpstream_startstreaming_sidebar_meta') ):
464 +
465 +function wpstream_startstreaming_sidebar_meta() {
466 + global $post;
467 +
468 + $term_list = wp_get_post_terms($post->ID, 'product_type');
469 +
470 +
471 + if( get_post_meta($post->ID, 'wpstream_product_type', true)==1 ){
472 + add_meta_box('wpstream-sidebar-meta', esc_html__('Live Streaming', 'wpstream'), 'wpstream_start_stream_meta', 'wpstream_product', 'side', 'high');
473 + }
474 +
475 + if(!is_wp_error( $term_list )){
476 + if( isset($term_list[0]->name) ){
477 + if( $term_list[0]->name=='live_stream' || ($term_list[0]->name=='subscription' && $is_subscription_live_event=='yes' ) ){
478 + add_meta_box('wpstream-sidebar-meta', esc_html__('Live Streaming', 'wpstream'), 'wpstream_start_stream_meta', 'product', 'side', 'high');
479 + }
480 + }
481 + }
482 +
483 +}
484 +endif;
485 +
486 +
487 +function wpstream_start_stream_meta(){
488 + global $live_event_for_user;
489 + global $post;
490 +
491 +
492 +
493 +
494 + $ajax_nonce = wp_create_nonce( "wpstream_start_event_nonce" );
495 + print '<input type="hidden" id="wpstream_start_event_nonce" value="'.$ajax_nonce.'">';
496 + $live_event_for_user = wpstream_get_live_event_for_user();
497 + wpstream_live_stream_unit($post->ID);
498 +
499 +}