PluginProbe
WpStream – Live Streaming, Video on Demand, Pay Per View / 4.8.2
WpStream – Live Streaming, Video on Demand, Pay Per View v4.8.2
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 | includes/class-wpstream.php +159 -95 4.5.114.8.2 View file →
@@ -1,6 +1,5 @@
1 1 <?php
2 -
3 2 /**
4 3 * The file that defines the core plugin class
5 4 *
6 5 * A class definition that includes attributes and functions used across both the
@@ -35,8 +34,9 @@
35 34 * @since 3.0.1
36 35 * @var object The main class.
37 36 */
38 37 public $main;
38 + public $admin;
39 39
40 40 /**
41 41 * The loader that's responsible for maintaining and registering all hooks that power
42 42 * the plugin.
@@ -80,25 +80,28 @@
80 80 public $xtest;
81 81 public $plugin_admin;
82 82
83 83 public function __construct() {
84 - $this->main = $this;
84 + $this->main = $this;
85 +
85 86 if ( defined( 'WPSTREAM_PLUGIN_VERSION' ) ) {
86 - $this->version = WPSTREAM_PLUGIN_VERSION;
87 + $this->version = WPSTREAM_PLUGIN_VERSION;
87 88 } else {
88 - $this->version = '3.0.1';
89 + $this->version = '3.0.1';
89 90 }
91 +
90 92 $this->plugin_name = 'wpstream';
91 93
92 94 $this->load_dependencies();
93 - $this->set_locale();
94 95 $this->define_admin_hooks();
95 96 $this->define_public_hooks();
96 -
97 -
98 - $this->wpstream_conection();
99 - $this->wpstream_player();
97 + $this->define_ajax_hooks();
98 + $this->wpstream_load_page_templates();
99 + $this->wpstream_load_theme_notice();
100 100
101 + $this->wpstream_conection();
102 + $this->wpstream_player();
103 +
101 104 }
102 105
103 106
104 107
@@ -105,16 +108,21 @@
105 108
106 109
107 110 public function wpstream_convert_band($megabits){
108 111 $gigabit = $megabits * 0.001;
109 - $gigabit = number_format($gigabit,2);
112 + $gigabit = floatval(sprintf('%.1f', $gigabit));
110 113 return $gigabit;
111 114 }
112 115
116 +
117 + public $wpstream_ajax;
118 +
119 + private function define_ajax_hooks() {
120 + require_once plugin_dir_path(dirname(__FILE__)) . 'includes/class-wpstream-ajax.php';
121 + $this->wpstream_ajax = new WpStream_Ajax( $this->main );
122 + }
113 123
114 124
115 -
116 -
117 125 private function wpstream_conection(){
118 126 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'includes/class-wpstream-live-api-connection.php';
119 127 $this->wpstream_live_connection = new Wpstream_Live_Api_Connection();
120 128 }
@@ -123,12 +131,21 @@
123 131 private function wpstream_player(){
124 132 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'includes/class-wpstream-player.php';
125 133 $this->wpstream_player = new Wpstream_Player($this->main);
126 134 }
135 +
136 +
137 + private function wpstream_load_page_templates() {
138 + require_once WPSTREAM_PLUGIN_PATH . 'includes/class-wpstream-templates.php';
139 + new WpStream_Template_Loader();
140 + }
141 +
142 + private function wpstream_load_theme_notice() {
143 + require_once plugin_dir_path( dirname( __FILE__ ) ) . 'includes/class-wpstream-theme-notice.php';
144 + new WPStream_Theme_Notice();
145 + }
127 146
128 147
129 -
130 -
131 148 /**
132 149 * Load the required dependencies for this plugin.
133 150 *
134 151 * Include the following files that make up the plugin:
@@ -167,19 +184,21 @@
167 184 * The class responsible for defining all actions that occur in the public-facing
168 185 * side of the site.
169 186 */
170 187 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'public/class-wpstream-public.php';
171 -
172 - /**
188 + /**
173 189 * The class responsible for custom post type
174 190
175 - */
176 - require_once plugin_dir_path( dirname( __FILE__ ) ) . 'includes/class-wpstream_product.php';
177 - if( class_exists( 'WooCommerce' ) ){
178 - require_once plugin_dir_path( dirname( __FILE__ ) ) . 'includes/class-wc_product_live_stream.php';
179 - require_once plugin_dir_path( dirname( __FILE__ ) ) . 'includes/class-wc_product_video_on_demand.php';
180 - }
191 + */
192 + require_once plugin_dir_path( dirname( __FILE__ ) ) . 'includes/class-wpstream_product.php';
193 + if( class_exists( 'WooCommerce' ) ){
194 + require_once plugin_dir_path( dirname( __FILE__ ) ) . 'includes/class-wc_product_live_stream.php';
195 + require_once plugin_dir_path( dirname( __FILE__ ) ) . 'includes/class-wc_product_video_on_demand.php';
196 + }
181 197
198 + require_once plugin_dir_path(__FILE__) . 'Helpers/class-wpstream-log-entry.php';
199 + require_once plugin_dir_path(__FILE__) . 'Logger/class-wpstream-logger.php';
200 +
182 201 $this->loader = new Wpstream_Loader();
183 202
184 203 }
185 204
@@ -195,9 +214,9 @@
195 214 private function set_locale() {
196 215
197 216 $plugin_i18n = new Wpstream_i18n();
198 217
199 - $this->loader->add_action( 'plugins_loaded', $plugin_i18n, 'load_plugin_textdomain' );
218 + $this->loader->add_action( 'plugins_loaded', $plugin_i18n, 'load_plugin_textdomain', 1 );
200 219
201 220 }
202 221
203 222 /**
@@ -208,24 +227,26 @@
208 227 * @access private
209 228 */
210 229 private function define_admin_hooks() {
211 230
212 - $this->admin= $plugin_admin = new Wpstream_Admin( $this->get_plugin_name(), $this->get_version(), $this->main );
213 -
214 - $this->loader->add_action( 'admin_enqueue_scripts', $plugin_admin, 'enqueue_styles' );
231 + $plugin_admin = new Wpstream_Admin( $this->get_plugin_name(), $this->get_version(), $this->main );
232 +
233 + $this->admin = $plugin_admin;
234 +
235 + $this->loader->add_action( 'admin_enqueue_scripts', $plugin_admin, 'enqueue_styles' );
215 236 $this->loader->add_action( 'admin_enqueue_scripts', $plugin_admin, 'enqueue_scripts' );
216 237 $this->loader->add_action( 'admin_menu', $plugin_admin, 'wpstream_manage_admin_menu',999);
217 -
238 +
218 239 $plugin_post_types = new Wpstream_Product();
219 240 $this->loader->add_action( 'init', $plugin_post_types, 'create_custom_post_type', 999 );
220 -
241 +
221 242 // save and render metaboxed
222 - $this->loader->add_action( 'admin_init', $plugin_admin, 'add_wpstream_product_metaboxes' );
223 - $this->loader->add_action( 'save_post', $plugin_admin, 'wpstream_free_product_update_post',1,2 );
224 - $this->loader->add_action( 'publish_wpstream_product', $plugin_admin, 'wpstream_publish_wpstream_product',1,2 );
225 -
226 -
227 -
243 + $this->loader->add_action( 'add_meta_boxes', $plugin_admin, 'add_wpstream_product_metaboxes' );
244 + $this->loader->add_action( 'save_post', $plugin_admin, 'wpstream_free_product_update_post',1,2 );
245 + $this->loader->add_action( 'publish_wpstream_product', $plugin_admin, 'wpstream_publish_wpstream_product',1,2 );
246 +
247 +
248 +
228 249 // make product virtual
229 250 $this->loader->add_action( 'save_post', $plugin_admin, 'wpstream_make_product_virtual', 99999, 2 );
230 251
231 252
@@ -235,57 +256,61 @@
235 256
236 257 // on boarding actions
237 258 $this->loader->add_action('admin_footer',$plugin_admin, 'wpstream_admin_footer_onboarding');
238 259 $this->loader->add_action( 'wp_ajax_wpstream_on_board_create_channel', $plugin_admin,'wpstream_on_board_create_channel' );
239 - $this->loader->add_action( 'wp_ajax_wpstream_on_board_create_channel_ppv', $plugin_admin,'wpstream_on_board_create_channel_ppv' );
240 - $this->loader->add_action( 'wp_ajax_wpstream_on_board_create_free_vod', $plugin_admin,'wpstream_on_board_create_free_vod' );
241 - $this->loader->add_action( 'wp_ajax_wpstream_on_board_create_ppv_vod', $plugin_admin,'wpstream_on_board_create_ppv_vod' );
242 -
260 + $this->loader->add_action( 'wp_ajax_wpstream_on_board_create_channel_ppv', $plugin_admin,'wpstream_on_board_create_channel_ppv' );
261 + $this->loader->add_action( 'wp_ajax_wpstream_on_board_create_free_vod', $plugin_admin,'wpstream_on_board_create_free_vod' );
262 + $this->loader->add_action( 'wp_ajax_wpstream_on_board_create_ppv_vod', $plugin_admin,'wpstream_on_board_create_ppv_vod' );
243 263
264 +
244 265 $this->loader->add_action( 'wp_ajax_wpstream_on_board_login', $plugin_admin,'wpstream_on_board_login' );
245 266 $this->loader->add_action( 'wp_ajax_wpstream_on_board_register', $plugin_admin,'wpstream_on_board_register' );
246 267
268 + // Register AJAX actions for multipart uploads
269 + $this->loader->add_action( 'wp_ajax_wpstream_initiate_multipart_upload', $plugin_admin, 'handle_initiate_multipart_upload' );
270 + $this->loader->add_action( 'wp_ajax_wpstream_complete_multipart_upload', $plugin_admin, 'handle_complete_multipart_upload' );
247 271
248 272 $this->loader->add_action( 'admin_notices', $plugin_admin,'wpstream_admin_notice' );
249 273 $this->loader->add_action( 'wp_ajax_wpstream_update_cache_notice', $plugin_admin,'wpstream_update_cache_notice' );
250 -
274 +// $this->loader->add_action( 'wp_ajax_wpstream_get_videos_list', $plugin_admin,'wpstream_get_videos_list' );
251 275
252 276
253 -
277 + $this->loader->add_action( 'wp_ajax_wpstream_settings_tab_update_plugin', $plugin_admin, 'wpstream_settings_tab_update_plugin' );
278 +
254 279 // add and save category extra fields
255 280 $this->loader->add_action( 'category_edit_form_fields', $plugin_post_types, 'wpstream_category_callback_function', 10, 2);
256 - $this->loader->add_action( 'category_add_form_fields', $plugin_post_types, 'wpstream_category_callback_add_function', 10, 2 );
281 + $this->loader->add_action( 'category_add_form_fields', $plugin_post_types, 'wpstream_category_callback_add_function' );
257 282 $this->loader->add_action( 'created_category', $plugin_post_types, 'wpstream_category_save_extra_fields_callback', 10, 2);
258 283 $this->loader->add_action( 'edited_category', $plugin_post_types, 'wpstream_category_save_extra_fields_callback', 10, 2);
259 284
260 285 $this->loader->add_action( 'product_cat_edit_form_fields', $plugin_post_types, 'wpstream_category_callback_function', 10, 2);
261 - $this->loader->add_action( 'product_cat_add_form_fields', $plugin_post_types, 'wpstream_category_callback_add_function', 10, 2 );
286 + $this->loader->add_action( 'product_cat_add_form_fields', $plugin_post_types, 'wpstream_category_callback_add_function' );
262 287 $this->loader->add_action( 'created_product_cat', $plugin_post_types, 'wpstream_category_save_extra_fields_callback', 10, 2);
263 288 $this->loader->add_action( 'edited_product_cat', $plugin_post_types, 'wpstream_category_save_extra_fields_callback', 10, 2);
264 289
265 290
266 291 $this->loader->add_action( 'wpstream_category_edit_form_fields', $plugin_post_types, 'wpstream_category_callback_function', 10, 2);
267 - $this->loader->add_action( 'wpstream_category_add_form_fields', $plugin_post_types, 'wpstream_category_callback_add_function', 10, 2 );
292 + $this->loader->add_action( 'wpstream_category_add_form_fields', $plugin_post_types, 'wpstream_category_callback_add_function' );
268 293 $this->loader->add_action( 'created_wpstream_category', $plugin_post_types, 'wpstream_category_save_extra_fields_callback', 10, 2);
269 294 $this->loader->add_action( 'edited_wpstream_category', $plugin_post_types, 'wpstream_category_save_extra_fields_callback', 10, 2);
270 295
271 296
272 297 $this->loader->add_action( 'wpstream_actors_edit_form_fields', $plugin_post_types, 'wpstream_category_callback_function', 10, 2);
273 - $this->loader->add_action( 'wpstream_actors_add_form_fields', $plugin_post_types, 'wpstream_category_callback_add_function', 10, 2 );
298 + $this->loader->add_action( 'wpstream_actors_add_form_fields', $plugin_post_types, 'wpstream_category_callback_add_function' );
274 299 $this->loader->add_action( 'created_wpstream_actors', $plugin_post_types, 'wpstream_category_save_extra_fields_callback', 10, 2);
275 300 $this->loader->add_action( 'edited_wpstream_actors', $plugin_post_types, 'wpstream_category_save_extra_fields_callback', 10, 2);
276 301
277 302 $this->loader->add_action( 'wpstream_movie_rating_edit_form_fields', $plugin_post_types, 'wpstream_category_callback_function', 10, 2);
278 - $this->loader->add_action( 'wpstream_movie_rating_add_form_fields', $plugin_post_types, 'wpstream_category_callback_add_function', 10, 2 );
303 + $this->loader->add_action( 'wpstream_movie_rating_add_form_fields', $plugin_post_types, 'wpstream_category_callback_add_function' );
279 304 $this->loader->add_action( 'created_wpstream_movie_rating', $plugin_post_types, 'wpstream_category_save_extra_fields_callback', 10, 2);
280 305 $this->loader->add_action( 'edited_wpstream_movie_rating', $plugin_post_types, 'wpstream_category_save_extra_fields_callback', 10, 2);
281 -
282 -
283 306
284 307
285 308 if ( in_array( 'woocommerce/woocommerce.php', apply_filters( 'active_plugins', get_option( 'active_plugins' ) ) ) ) {
286 -
309 +
310 + $this->loader->add_action( 'init', $plugin_admin, 'wpstream_add_custom_wc_products' );
287 311 $this->loader->add_filter( 'product_type_selector', $plugin_admin, 'wpstream_add_products' );
312 + $this->loader->add_filter( 'woocommerce_product_class', $plugin_admin, 'wpstream_add_products_class', 10, 2 );
288 313 $this->loader->add_action( 'admin_footer', $plugin_admin, 'wpstream_products_custom_js' );
289 314 $this->loader->add_filter( 'woocommerce_product_data_tabs', $plugin_admin, 'wpstream_hide_attributes_data_panel',10,1 );
290 315 $this->loader->add_filter( 'woocommerce_is_purchasable', $plugin_admin, 'wpstream_hide_buy_now_subscription_mode',10,2);
291 316
@@ -294,14 +319,8 @@
294 319 $this->loader->add_action( 'woocommerce_live_stream_add_to_cart', $plugin_admin, 'wpstream_add_to_cart',10,1);
295 320 $this->loader->add_action( 'woocommerce_video_on_demand_add_to_cart', $plugin_admin, 'wpstream_add_to_cart',10,1);
296 321 $this->loader->add_filter( 'woocommerce_loop_add_to_cart_link', $plugin_admin,'replacing_add_to_cart_button', 10, 2 );
297 322 }
298 -
299 -
300 -
301 -
302 -
303 -
304 323 }
305 324
306 325
307 326
@@ -319,38 +338,49 @@
319 338 $plugin_public = new Wpstream_Public( $this->get_plugin_name(), $this->get_version(), $this->main );
320 339
321 340 $this->loader->add_action( 'wp_enqueue_scripts', $plugin_public, 'enqueue_styles' );
322 341 $this->loader->add_action( 'wp_enqueue_scripts', $plugin_public, 'enqueue_scripts' );
323 -
324 - $this->loader->add_action( 'init', $plugin_public,'wpstream_my_custom_endpoints' );
325 - $this->loader->add_filter( 'query_vars',$plugin_public, 'wpstream_my_custom_query_vars', 0 );
326 -
327 - //live stream action
328 - $this->loader->add_action('init',$plugin_public,'wpstream_set_cookies',0);
329 - $this->loader->add_action('init',$plugin_public,'wpstream_live_streaming_key');
330 - $this->loader->add_action('init',$plugin_public,'wpstream_live_streaming_key_for_3rdparty');
331 - $this->loader->add_action('init',$plugin_public,'wpstream_live_streaming_key_vod',10);
332 - // woo action
333 -
334 - $this->loader->add_action( 'woocommerce_before_single_product', $plugin_public,'wpstream_non_image_content_wrapper_start', 20 );
335 - $this->loader->add_action( 'woocommerce_after_single_product', $plugin_public,'wpstream_non_image_content_wrapper_end', 20 );
336 - $this->loader->add_action( 'woocommerce_thankyou_order_received_text', $plugin_public,'wpstream_thankyou_extra', 20,2 );
337 - $this->loader->add_action( 'woocommerce_email_order_details', $plugin_public,'wpstream_email_order_details', 20,4 );
338 -
339 - $this->loader->add_filter( 'woocommerce_account_menu_items', $plugin_public,'wpstream_custom_my_account_menu_items' );
340 - $this->loader->add_action( 'woocommerce_account_event-list_endpoint', $plugin_public,'wpstream_custom_endpoint_content_event_list' );
341 - $this->loader->add_action( 'woocommerce_account_video-list_endpoint', $plugin_public,'wpstream_custom_endpoint_video_list' );
342 -
343 342
344 - $this->loader->add_action( 'after_switch_theme', $plugin_public,'wpstream_custom_flush_rewrite_rules' );
345 - $this->loader->add_action('init', $plugin_public,'wpstream_shortcodes');
346 - $this->loader->add_action('vc_before_init', $plugin_public,'wpstream_bakery_shortcodes');
347 -
348 -
349 - $this->loader->add_action('wo_before_api', 'wpstream_cors_check_and_response',10,1);
350 -
351 -
352 -
343 + $this->loader->add_action( 'init', $plugin_public,'wpstream_my_custom_endpoints' );
344 + $this->loader->add_filter( 'query_vars',$plugin_public, 'wpstream_my_custom_query_vars', 0 );
345 +
346 + //live stream action
347 + $this->loader->add_action('init',$plugin_public,'wpstream_set_cookies',0);
348 + $this->loader->add_action('init',$plugin_public,'wpstream_live_streaming_key');
349 + $this->loader->add_action('init',$plugin_public,'wpstream_live_streaming_key_for_3rdparty');
350 + $this->loader->add_action('init',$plugin_public,'wpstream_live_streaming_key_vod',10);
351 +
352 + // woo action
353 + $this->loader->add_action( 'woocommerce_before_single_product', $plugin_public,'wpstream_non_image_content_wrapper_start', 20 );
354 + $this->loader->add_action( 'woocommerce_after_single_product', $plugin_public,'wpstream_non_image_content_wrapper_end', 20 );
355 + $this->loader->add_action( 'woocommerce_thankyou_order_received_text', $plugin_public,'wpstream_thankyou_extra', 20,2 );
356 + $this->loader->add_action( 'woocommerce_email_order_details', $plugin_public,'wpstream_email_order_details', 20,4 );
357 +
358 + $this->loader->add_filter( 'woocommerce_account_menu_items', $plugin_public,'wpstream_custom_my_account_menu_items' );
359 + $this->loader->add_action( 'woocommerce_account_event-list_endpoint', $plugin_public,'wpstream_custom_endpoint_content_event_list' );
360 + $this->loader->add_action( 'woocommerce_account_video-list_endpoint', $plugin_public,'wpstream_custom_endpoint_video_list' );
361 +
362 + $this->loader->add_action( 'after_switch_theme', $plugin_public,'wpstream_custom_flush_rewrite_rules' );
363 + $this->loader->add_action('init', $plugin_public,'wpstream_shortcodes');
364 + $this->loader->add_action('vc_before_init', $plugin_public,'wpstream_bakery_shortcodes');
365 +
366 + $this->loader->add_action('wo_before_api', 'wpstream_cors_check_and_response',10,1);
367 +
368 + $this->loader->add_filter( 'wpstream_search_template_item_post_type', $plugin_public, 'wpstream_search_template_add_item_post_type' );
369 + $this->loader->add_filter( 'wpstream_sidebar_id_by_post_type', $plugin_public, 'wpstream_sidebar_id_by_post_type' );
370 + $this->loader->add_filter( 'wpstream_header_search_values', $plugin_public, 'wpstream_header_search_values' );
371 + $this->loader->add_filter( 'wpstream_extend_category_archive_query_filter', $plugin_public, 'wpstream_extend_category_archive_query_filter_callback' );
372 + $this->loader->add_filter( 'wpstream_archives_lists_taxonomy_labels', $plugin_public, 'wpstream_archives_lists_taxonomy_labels_callback' );
373 + $this->loader->add_filter( 'wpstream_author_archive_list_taxonomy_labels', $plugin_public, 'wpstream_author_archive_list_taxonomy_labels_callback' );
374 + $this->loader->add_action( 'wpstream_vod_attached_to_channel', $plugin_public, 'wpstream_vod_attached_to_channel' );
375 + $this->loader->add_action( 'wpstream_additional_content_post_type', $plugin_public, 'wpstream_additional_content_post_type_callback' );
376 + $this->loader->add_action( 'wpstream_post_author_content_post_type_list', $plugin_public, 'wpstream_post_author_content_post_type_list_callback' );
377 + $this->loader->add_action( 'wpstream_author_content_simple_post_type_message', $plugin_public, 'wpstream_author_content_simple_post_type_message_callback', 10, 2 );
378 + $this->loader->add_action( 'wpstream_author_content_post_type_message', $plugin_public, 'wpstream_author_content_post_type_message_callback', 10, 2 );
379 + $this->loader->add_action( 'wpstream_show_sidebar_for_post_type', $plugin_public, 'wpstream_show_sidebar_for_post_type_callback', 10, 2 );
380 + $this->loader->add_action( 'wpstream_video_episodes_post_type', $plugin_public, 'wpstream_video_episodes_post_type_callback' );
381 + $this->loader->add_action( 'wpstream_video_past_broadcast_post_type', $plugin_public, 'wpstream_video_past_broadcast_post_type_callback' );
382 + $this->loader->add_action( 'wpstream_additional_content_post_type_label', $plugin_public, 'wpstream_additional_content_post_type_label_callback', 10, 2 );
353 383 }
354 384
355 385 /**
356 386 * Run the loader to execute all of the hooks with WordPress.
@@ -390,21 +420,42 @@
390 420 */
391 421 public function get_version() {
392 422 return $this->version;
393 423 }
394 -
395 -
424 +
425 + public function is_plugin_outdated(){
426 + $update_data = get_site_transient('update_plugins');
427 + $plugin_path = 'wpstream/wpstream.php';
428 +
429 + if (isset($update_data->response[$plugin_path])) {
430 + return true;
431 + }
432 +
433 + return false;
434 + }
435 +
436 +
396 437
397 438 public function show_user_data($pack_details){
398 439 if( isset($pack_details['available_data_mb']) && isset( $pack_details['available_storage_mb']) ){
399 - $wpstream_convert_band = $this->wpstream_convert_band($pack_details['available_data_mb']);
400 - if($wpstream_convert_band<0)$wpstream_convert_band=0;
401 -
402 - $wpstream_convert_storage = $this->wpstream_convert_band($pack_details['available_storage_mb']);
403 - if($wpstream_convert_storage<0)$wpstream_convert_storage=0;
440 + $wpstream_convert_band = $this->wpstream_convert_band($pack_details['available_data_mb']);
441 + if( $wpstream_convert_band < 0 ) {
442 + $wpstream_convert_band = 0;
443 + }
444 +
445 + $wpstream_convert_storage = $this->wpstream_convert_band($pack_details['available_storage_mb']);
446 + if( $wpstream_convert_storage < 0 ) {
447 + $wpstream_convert_storage = 0;
448 + }
404 449
405 - print '<div class="pack_details_wrapper"><strong>'.__('Your account information: ','wpstream').'</strong> '.__('You have','wpstream').'<strong> '.$wpstream_convert_band.' Gb</strong> '.__('available streaming data and','wpstream').' <strong>'.$wpstream_convert_storage.' Gb</strong> '.__('available recording storage','wpstream');
406 - print '<a href="https://wpstream.net/pricing/" class="wpstream_upgrade_topbar" target="_blank">'.esc_html__('Upgrade Subscription','wpstream').'</a>';
450 + print '<div class="pack_details_wrapper">'
451 + . '<strong>' . __('Your account information: ', 'wpstream') . '</strong> '
452 + . __('You have', 'wpstream') . '<strong> ' . abs( $wpstream_convert_band ) . ' GB</strong> '
453 + . __('available cloud data and', 'wpstream') . ' '
454 + . '<strong>' . $wpstream_convert_storage . ' GB</strong> '
455 + . __('available cloud storage', 'wpstream') . '.';
456 +
457 + print '<a href="https://wpstream.net/pricing/" class="wpstream_upgrade_topbar" target="_blank">'.esc_html__('Upgrade Plan','wpstream').'</a>';
407 458 print '</div>';
408 459 print'<input type="hidden" id="wpstream_band" value="'.$pack_details['available_data_mb'].'">';
409 460 print'<input type="hidden" id="wpstream_storage" value="'.$pack_details['available_storage_mb'].'">';
410 461
@@ -696,9 +747,15 @@
696 747
697 748
698 749
699 750 ob_start();
700 - $this->main->wpstream_player->wpstream_video_player_shortcode($product_id);
751 + ?>
752 + <div class="wpstream_insert_player_elementor_wrapper">
753 + <?php
754 + $this->main->wpstream_player->wpstream_video_player_shortcode($product_id);
755 + ?>
756 + </div>
757 + <?php
701 758 $return_string= ob_get_contents();
702 759 ob_end_clean();
703 760
704 761 return $return_string;
@@ -853,9 +910,9 @@
853 910 if($item_id == 0){
854 911 //retrive or create channel for front end streamers
855 912 $item_id=$this->wpstream_retrive_front_end_channel();
856 913 }
857 - print'<div class="wpstream_modal_background"></div>';
914 + print'<div class="wpstream_modal_background"></div>';
858 915 print '<div class="wpstream_error_modal_notification"><div class="wpstream_error_content">er2</div>
859 916 <div class="wpstream_error_ok wpstream_button" type="button">'.esc_html__('Close','wpstream').'</div>
860 917 </div>';
861 918 $this->admin->wpstream_live_stream_unit_for_theme( $item_id,$type );
@@ -951,6 +1008,13 @@
951 1008 wp_reset_query();
952 1009 wp_reset_postdata();
953 1010 return $the_id;
954 1011 }
955 -
1012 +
1013 + /**
1014 + * Cleanup old logs
1015 + */
1016 + public function cleanup_logs() {
1017 + $logger = new WPStream_Logger();
1018 + $logger->clear_old_logs();
1019 + }
956 1020 }