PluginProbe
WpStream – Live Streaming, Video on Demand, Pay Per View / 3.7
WpStream – Live Streaming, Video on Demand, Pay Per View v3.7
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 +106 -553 4.12.53.7 View file →
@@ -1,5 +1,6 @@
1 1 <?php
2 +
2 3 /**
3 4 * The file that defines the core plugin class
4 5 *
5 6 * A class definition that includes attributes and functions used across both the
@@ -34,9 +35,8 @@
34 35 * @since 3.0.1
35 36 * @var object The main class.
36 37 */
37 38 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.
@@ -76,73 +76,48 @@
76 76 */
77 77
78 78 public $wpstream_live_connection;
79 79 public $wpstream_player;
80 - public $quota_manager;
81 - public $user_quota_service;
82 80 public $xtest;
83 81 public $plugin_admin;
84 82
85 83 public function __construct() {
86 - $this->main = $this;
87 -
88 - if ( defined( 'WPSTREAM_PLUGIN_VERSION' ) ) {
89 - $this->version = WPSTREAM_PLUGIN_VERSION;
84 + $this->main = $this;
85 + if ( defined( 'WPSTREAM_VERSION' ) ) {
86 + $this->version = WPSTREAM_VERSION;
90 87 } else {
91 - $this->version = '3.0.1';
88 + $this->version = '3.0.1';
92 89 }
93 -
94 90 $this->plugin_name = 'wpstream';
95 91
96 92 $this->load_dependencies();
93 + $this->set_locale();
97 94 $this->define_admin_hooks();
98 95 $this->define_public_hooks();
99 - $this->define_ajax_hooks();
100 - $this->wpstream_load_page_templates();
101 - $this->wpstream_load_theme_notice();
96 +
97 + $this->xtest = "this is test2";
98 + $this->wpstream_conection();
99 + $this->wpstream_player();
102 100
103 - $this->wpstream_conection();
104 - $this->wpstream_player();
105 - $this->wpstream_init_quota_manager();
106 -
107 101 }
108 102
109 -
110 -
111 -
112 -
103 +
104 +
105 +
106 +
113 107 public function wpstream_convert_band($megabits){
114 - $gigabit = $megabits * 0.001;
115 - return floatval( sprintf( '%.1f', $gigabit ) );
108 + $gigabit = $megabits * 0.001;
109 + $gigabit = number_format($gigabit,2);
110 + return $gigabit;
116 111 }
117 112
118 - /**
119 - * Floor a number to a given number of decimal places.
120 - *
121 - * @param float $value The number to floor.
122 - * @param int $decimals Number of decimal places.
123 - * @return float
124 - */
125 - public function wpstream_floor_decimals( $value, $decimals = 2 ) {
126 - $decimals = max( 0, (int) $decimals );
127 - $factor = pow( 10, $decimals );
128 -
129 - return floatval( sprintf( '%.' . $decimals . 'f', floor( (float) $value * $factor ) / $factor ) );
130 - }
131 -
132 -
133 - public $wpstream_ajax;
134 -
135 - private function define_ajax_hooks() {
136 - require_once plugin_dir_path(dirname(__FILE__)) . 'includes/class-wpstream-ajax.php';
137 - $this->wpstream_ajax = new WpStream_Ajax( $this->main );
138 - }
139 113
140 114
115 +
116 +
141 117 private function wpstream_conection(){
142 118 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'includes/class-wpstream-live-api-connection.php';
143 119 $this->wpstream_live_connection = new Wpstream_Live_Api_Connection();
144 - $this->user_quota_service = $this->wpstream_live_connection->get_user_quota_service();
145 120 }
146 121
147 122
148 123 private function wpstream_player(){
@@ -148,26 +123,12 @@
148 123 private function wpstream_player(){
149 124 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'includes/class-wpstream-player.php';
150 125 $this->wpstream_player = new Wpstream_Player($this->main);
151 126 }
152 -
153 - private function wpstream_init_quota_manager() {
154 - require_once plugin_dir_path( dirname( __FILE__ ) ) . 'includes/class-wpstream-quota-manager.php';
155 - $this->quota_manager = new Wpstream_Quota_Manager( $this );
156 - }
157 -
158 -
159 - private function wpstream_load_page_templates() {
160 - require_once WPSTREAM_PLUGIN_PATH . 'includes/class-wpstream-templates.php';
161 - new WpStream_Template_Loader();
162 - }
163 -
164 - private function wpstream_load_theme_notice() {
165 - require_once plugin_dir_path( dirname( __FILE__ ) ) . 'includes/class-wpstream-theme-notice.php';
166 - new WPStream_Theme_Notice();
167 - }
168 127
169 128
129 +
130 +
170 131 /**
171 132 * Load the required dependencies for this plugin.
172 133 *
173 134 * Include the following files that make up the plugin:
@@ -206,21 +167,19 @@
206 167 * The class responsible for defining all actions that occur in the public-facing
207 168 * side of the site.
208 169 */
209 170 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'public/class-wpstream-public.php';
210 - /**
171 +
172 + /**
211 173 * The class responsible for custom post type
212 174
213 - */
214 - require_once plugin_dir_path( dirname( __FILE__ ) ) . 'includes/class-wpstream_product.php';
215 - if( class_exists( 'WooCommerce' ) ){
216 - require_once plugin_dir_path( dirname( __FILE__ ) ) . 'includes/class-wc_product_live_stream.php';
217 - require_once plugin_dir_path( dirname( __FILE__ ) ) . 'includes/class-wc_product_video_on_demand.php';
218 - }
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 + }
219 181
220 - require_once plugin_dir_path(__FILE__) . 'Helpers/class-wpstream-log-entry.php';
221 - require_once plugin_dir_path(__FILE__) . 'Logger/class-wpstream-logger.php';
222 -
223 182 $this->loader = new Wpstream_Loader();
224 183
225 184 }
226 185
@@ -236,9 +195,9 @@
236 195 private function set_locale() {
237 196
238 197 $plugin_i18n = new Wpstream_i18n();
239 198
240 - $this->loader->add_action( 'plugins_loaded', $plugin_i18n, 'load_plugin_textdomain', 1 );
199 + $this->loader->add_action( 'plugins_loaded', $plugin_i18n, 'load_plugin_textdomain' );
241 200
242 201 }
243 202
244 203 /**
@@ -249,28 +208,23 @@
249 208 * @access private
250 209 */
251 210 private function define_admin_hooks() {
252 211
253 - $plugin_admin = new Wpstream_Admin( $this->get_plugin_name(), $this->get_version(), $this->main );
212 + $this->admin= $plugin_admin = new Wpstream_Admin( $this->get_plugin_name(), $this->get_version(), $this->main );
254 213
255 - $this->admin = $plugin_admin;
256 -
257 - $this->loader->add_action( 'admin_enqueue_scripts', $plugin_admin, 'enqueue_styles' );
258 - $this->loader->add_action( 'admin_enqueue_scripts', $plugin_admin, 'enqueue_scripts' );
214 +
215 +
216 + $this->loader->add_action( 'admin_enqueue_scripts', $plugin_admin, 'enqueue_styles' );
217 + $this->loader->add_action( 'admin_enqueue_scripts', $plugin_admin, 'enqueue_scripts' );
259 218 $this->loader->add_action( 'admin_menu', $plugin_admin, 'wpstream_manage_admin_menu',999);
260 -
219 +
261 220 $plugin_post_types = new Wpstream_Product();
262 221 $this->loader->add_action( 'init', $plugin_post_types, 'create_custom_post_type', 999 );
263 -
222 +
264 223 // save and render metaboxed
265 - $this->loader->add_action( 'add_meta_boxes', $plugin_admin, 'add_wpstream_product_metaboxes' );
266 - $this->loader->add_action( 'save_post', $plugin_admin, 'wpstream_free_product_update_post',1,2 );
267 - $this->loader->add_action( 'publish_wpstream_product', $plugin_admin, 'wpstream_publish_wpstream_product',1,2 );
268 - $this->loader->add_action( 'publish_wpstream_product', $plugin_admin, 'wpstream_create_remote_channel_on_publish',20,2 );
269 - $this->loader->add_action( 'publish_product', $plugin_admin, 'wpstream_create_remote_channel_on_publish', 20, 2 );
270 -
271 -
272 -
224 + $this->loader->add_action( 'admin_init', $plugin_admin, 'add_wpstream_product_metaboxes' );
225 + $this->loader->add_action( 'save_post', $plugin_admin, 'wpstream_free_product_update_post',1,2 );
226 +
273 227 // make product virtual
274 228 $this->loader->add_action( 'save_post', $plugin_admin, 'wpstream_make_product_virtual', 99999, 2 );
275 229
276 230
@@ -276,85 +230,64 @@
276 230
277 231
278 232 // show streaming controls on sidebar
279 233 $this->loader->add_action('add_meta_boxes', $plugin_admin, 'wpstream_startstreaming_sidebar_meta');
280 -
281 - // on boarding actions
282 - $this->loader->add_action('admin_footer',$plugin_admin, 'wpstream_admin_footer_onboarding');
283 - $this->loader->add_action( 'wp_ajax_wpstream_on_board_create_channel', $plugin_admin,'wpstream_on_board_create_channel' );
284 - $this->loader->add_action( 'wp_ajax_wpstream_on_board_create_channel_ppv', $plugin_admin,'wpstream_on_board_create_channel_ppv' );
285 - $this->loader->add_action( 'wp_ajax_wpstream_on_board_create_free_vod', $plugin_admin,'wpstream_on_board_create_free_vod' );
286 - $this->loader->add_action( 'wp_ajax_wpstream_on_board_create_ppv_vod', $plugin_admin,'wpstream_on_board_create_ppv_vod' );
287 -
288 -
289 - $this->loader->add_action( 'wp_ajax_wpstream_on_board_login', $plugin_admin,'wpstream_on_board_login' );
290 - $this->loader->add_action( 'wp_ajax_wpstream_on_board_register', $plugin_admin,'wpstream_on_board_register' );
291 - $this->loader->add_action( 'wp_ajax_wpstream_get_captcha_challenge', $plugin_admin, 'wpstream_get_captcha_challenge' );
292 - $this->loader->add_action( 'wp_ajax_nopriv_wpstream_get_captcha_challenge', $plugin_admin, 'wpstream_get_captcha_challenge' );
293 234
294 - // Register AJAX actions for multipart uploads
295 - $this->loader->add_action( 'wp_ajax_wpstream_initiate_multipart_upload', $plugin_admin, 'handle_initiate_multipart_upload' );
296 - $this->loader->add_action( 'wp_ajax_wpstream_complete_multipart_upload', $plugin_admin, 'handle_complete_multipart_upload' );
297 -
298 - $this->loader->add_action( 'admin_notices', $plugin_admin,'wpstream_admin_notice' );
299 - $this->loader->add_action( 'admin_notices', $plugin_admin,'wpstream_plugin_update_available_notice' );
300 -
301 - $this->loader->add_action( 'wp_ajax_wpstream_update_cache_notice', $plugin_admin,'wpstream_update_cache_notice' );
302 -// $this->loader->add_action( 'wp_ajax_wpstream_get_videos_list', $plugin_admin,'wpstream_get_videos_list' );
303 -
304 -
305 - $this->loader->add_action( 'wp_ajax_wpstream_settings_tab_update_plugin', $plugin_admin, 'wpstream_settings_tab_update_plugin' );
306 -
235 +
236 + $this->loader->add_action( 'admin_notices', $plugin_admin,'wpstream_admin_notice' );
237 + $this->loader->add_action( 'wp_ajax_wpstream_update_cache_notice', $plugin_admin,'wpstream_update_cache_notice' );
238 +
307 239 // add and save category extra fields
308 240 $this->loader->add_action( 'category_edit_form_fields', $plugin_post_types, 'wpstream_category_callback_function', 10, 2);
309 - $this->loader->add_action( 'category_add_form_fields', $plugin_post_types, 'wpstream_category_callback_add_function' );
241 + $this->loader->add_action( 'category_add_form_fields', $plugin_post_types, 'wpstream_category_callback_add_function', 10, 2 );
310 242 $this->loader->add_action( 'created_category', $plugin_post_types, 'wpstream_category_save_extra_fields_callback', 10, 2);
311 243 $this->loader->add_action( 'edited_category', $plugin_post_types, 'wpstream_category_save_extra_fields_callback', 10, 2);
312 244
313 245 $this->loader->add_action( 'product_cat_edit_form_fields', $plugin_post_types, 'wpstream_category_callback_function', 10, 2);
314 - $this->loader->add_action( 'product_cat_add_form_fields', $plugin_post_types, 'wpstream_category_callback_add_function' );
246 + $this->loader->add_action( 'product_cat_add_form_fields', $plugin_post_types, 'wpstream_category_callback_add_function', 10, 2 );
315 247 $this->loader->add_action( 'created_product_cat', $plugin_post_types, 'wpstream_category_save_extra_fields_callback', 10, 2);
316 248 $this->loader->add_action( 'edited_product_cat', $plugin_post_types, 'wpstream_category_save_extra_fields_callback', 10, 2);
317 249
318 250
319 251 $this->loader->add_action( 'wpstream_category_edit_form_fields', $plugin_post_types, 'wpstream_category_callback_function', 10, 2);
320 - $this->loader->add_action( 'wpstream_category_add_form_fields', $plugin_post_types, 'wpstream_category_callback_add_function' );
252 + $this->loader->add_action( 'wpstream_category_add_form_fields', $plugin_post_types, 'wpstream_category_callback_add_function', 10, 2 );
321 253 $this->loader->add_action( 'created_wpstream_category', $plugin_post_types, 'wpstream_category_save_extra_fields_callback', 10, 2);
322 254 $this->loader->add_action( 'edited_wpstream_category', $plugin_post_types, 'wpstream_category_save_extra_fields_callback', 10, 2);
323 255
324 256
325 257 $this->loader->add_action( 'wpstream_actors_edit_form_fields', $plugin_post_types, 'wpstream_category_callback_function', 10, 2);
326 - $this->loader->add_action( 'wpstream_actors_add_form_fields', $plugin_post_types, 'wpstream_category_callback_add_function' );
258 + $this->loader->add_action( 'wpstream_actors_add_form_fields', $plugin_post_types, 'wpstream_category_callback_add_function', 10, 2 );
327 259 $this->loader->add_action( 'created_wpstream_actors', $plugin_post_types, 'wpstream_category_save_extra_fields_callback', 10, 2);
328 260 $this->loader->add_action( 'edited_wpstream_actors', $plugin_post_types, 'wpstream_category_save_extra_fields_callback', 10, 2);
329 261
330 262 $this->loader->add_action( 'wpstream_movie_rating_edit_form_fields', $plugin_post_types, 'wpstream_category_callback_function', 10, 2);
331 - $this->loader->add_action( 'wpstream_movie_rating_add_form_fields', $plugin_post_types, 'wpstream_category_callback_add_function' );
263 + $this->loader->add_action( 'wpstream_movie_rating_add_form_fields', $plugin_post_types, 'wpstream_category_callback_add_function', 10, 2 );
332 264 $this->loader->add_action( 'created_wpstream_movie_rating', $plugin_post_types, 'wpstream_category_save_extra_fields_callback', 10, 2);
333 265 $this->loader->add_action( 'edited_wpstream_movie_rating', $plugin_post_types, 'wpstream_category_save_extra_fields_callback', 10, 2);
266 +
267 +
334 268
335 269
336 270 if ( in_array( 'woocommerce/woocommerce.php', apply_filters( 'active_plugins', get_option( 'active_plugins' ) ) ) ) {
337 -
338 - $this->loader->add_action( 'init', $plugin_admin, 'wpstream_add_custom_wc_products' );
271 +
339 272 $this->loader->add_filter( 'product_type_selector', $plugin_admin, 'wpstream_add_products' );
340 - $this->loader->add_filter( 'woocommerce_product_class', $plugin_admin, 'wpstream_add_products_class', 10, 2 );
341 273 $this->loader->add_action( 'admin_footer', $plugin_admin, 'wpstream_products_custom_js' );
342 274 $this->loader->add_filter( 'woocommerce_product_data_tabs', $plugin_admin, 'wpstream_hide_attributes_data_panel',10,1 );
343 - $this->loader->add_filter( 'woocommerce_is_purchasable', $plugin_admin, 'wpstream_hide_buy_now_subscription_mode',10,2);
344 275
345 - $this->loader->add_action( 'woocommerce_product_options_general_product_data', $plugin_admin, 'wpstream_add_custom_general_fields', 20 );
276 + $this->loader->add_filter( 'woocommerce_product_options_general_product_data',$plugin_admin, 'wpstream_add_custom_general_fields', 10,1);
346 277 $this->loader->add_filter( 'woocommerce_process_product_meta',$plugin_admin, 'wpstream_add_custom_general_fields_save',10,1 );
347 278 $this->loader->add_action( 'woocommerce_live_stream_add_to_cart', $plugin_admin, 'wpstream_add_to_cart',10,1);
348 279 $this->loader->add_action( 'woocommerce_video_on_demand_add_to_cart', $plugin_admin, 'wpstream_add_to_cart',10,1);
349 280 $this->loader->add_filter( 'woocommerce_loop_add_to_cart_link', $plugin_admin,'replacing_add_to_cart_button', 10, 2 );
350 281 }
351 - }
282 +
283 +
284 +
285 +
352 286
353 287
288 + }
354 289
355 -
356 -
357 290 /**
358 291 * Register all of the hooks related to the public-facing functionality
359 292 * of the plugin.
360 293 *
@@ -365,53 +298,35 @@
365 298
366 299 $plugin_public = new Wpstream_Public( $this->get_plugin_name(), $this->get_version(), $this->main );
367 300
368 301 $this->loader->add_action( 'wp_enqueue_scripts', $plugin_public, 'enqueue_styles' );
369 - // Registered on `wp` (not `wp_enqueue_scripts`/`wp_head`) because block themes render
370 - // the Post Content block - and thus our `the_content` filter that enqueues/localizes
371 - // these scripts - before `wp_head` ever fires, leaving the handles unregistered.
372 - $this->loader->add_action( 'wp', $plugin_public, 'enqueue_scripts' );
302 + $this->loader->add_action( 'wp_enqueue_scripts', $plugin_public, 'enqueue_scripts' );
303 +
304 + $this->loader->add_action( 'init', $plugin_public,'wpstream_my_custom_endpoints' );
305 + $this->loader->add_filter( 'query_vars',$plugin_public, 'wpstream_my_custom_query_vars', 0 );
306 +
307 + //live stream action
308 + $this->loader->add_action('init',$plugin_public,'wpstream_set_cookies',0);
309 + $this->loader->add_action('init',$plugin_public,'wpstream_live_streaming_key');
310 + $this->loader->add_action('init',$plugin_public,'wpstream_live_streaming_key_for_3rdparty');
311 + $this->loader->add_action('init',$plugin_public,'wpstream_live_streaming_key_vod');
312 + // woo action
313 +
314 + $this->loader->add_action( 'woocommerce_before_single_product', $plugin_public,'wpstream_non_image_content_wrapper_start', 20 );
315 + $this->loader->add_action( 'woocommerce_after_single_product', $plugin_public,'wpstream_non_image_content_wrapper_end', 20 );
316 +
317 + $this->loader->add_filter( 'woocommerce_account_menu_items', $plugin_public,'wpstream_custom_my_account_menu_items' );
318 + $this->loader->add_action( 'woocommerce_account_event-list_endpoint', $plugin_public,'wpstream_custom_endpoint_content_event_list' );
319 + $this->loader->add_action( 'woocommerce_account_video-list_endpoint', $plugin_public,'wpstream_custom_endpoint_video_list' );
320 +
373 321
374 - $this->loader->add_action( 'init', $plugin_public,'wpstream_my_custom_endpoints' );
375 - $this->loader->add_filter( 'query_vars',$plugin_public, 'wpstream_my_custom_query_vars', 0 );
376 -
377 - //live stream action
378 - $this->loader->add_action('init',$plugin_public,'wpstream_set_cookies',0);
379 - $this->loader->add_action('init',$plugin_public,'wpstream_live_streaming_key');
380 - $this->loader->add_action('init',$plugin_public,'wpstream_live_streaming_key_for_3rdparty');
381 - $this->loader->add_action('init',$plugin_public,'wpstream_live_streaming_key_vod',10);
382 -
383 - // woo action
384 - $this->loader->add_action( 'woocommerce_before_single_product', $plugin_public,'wpstream_non_image_content_wrapper_start', 20 );
385 - $this->loader->add_action( 'woocommerce_after_single_product', $plugin_public,'wpstream_non_image_content_wrapper_end', 20 );
386 - $this->loader->add_action( 'woocommerce_thankyou_order_received_text', $plugin_public,'wpstream_thankyou_extra', 20,2 );
387 - $this->loader->add_action( 'woocommerce_email_order_details', $plugin_public,'wpstream_email_order_details', 20,4 );
388 -
389 - $this->loader->add_filter( 'woocommerce_account_menu_items', $plugin_public,'wpstream_custom_my_account_menu_items' );
390 - $this->loader->add_action( 'woocommerce_account_event-list_endpoint', $plugin_public,'wpstream_custom_endpoint_content_event_list' );
391 - $this->loader->add_action( 'woocommerce_account_video-list_endpoint', $plugin_public,'wpstream_custom_endpoint_video_list' );
392 -
393 - $this->loader->add_action( 'after_switch_theme', $plugin_public,'wpstream_custom_flush_rewrite_rules' );
394 - $this->loader->add_action('init', $plugin_public,'wpstream_shortcodes');
395 - $this->loader->add_action('vc_before_init', $plugin_public,'wpstream_bakery_shortcodes');
396 -
397 - $this->loader->add_action('wo_before_api', 'wpstream_cors_check_and_response',10,1);
398 -
399 - $this->loader->add_filter( 'wpstream_search_template_item_post_type', $plugin_public, 'wpstream_search_template_add_item_post_type' );
400 - $this->loader->add_filter( 'wpstream_sidebar_id_by_post_type', $plugin_public, 'wpstream_sidebar_id_by_post_type' );
401 - $this->loader->add_filter( 'wpstream_header_search_values', $plugin_public, 'wpstream_header_search_values' );
402 - $this->loader->add_filter( 'wpstream_extend_category_archive_query_filter', $plugin_public, 'wpstream_extend_category_archive_query_filter_callback' );
403 - $this->loader->add_filter( 'wpstream_archives_lists_taxonomy_labels', $plugin_public, 'wpstream_archives_lists_taxonomy_labels_callback' );
404 - $this->loader->add_filter( 'wpstream_author_archive_list_taxonomy_labels', $plugin_public, 'wpstream_author_archive_list_taxonomy_labels_callback' );
405 - $this->loader->add_action( 'wpstream_vod_attached_to_channel', $plugin_public, 'wpstream_vod_attached_to_channel' );
406 - $this->loader->add_action( 'wpstream_additional_content_post_type', $plugin_public, 'wpstream_additional_content_post_type_callback' );
407 - $this->loader->add_action( 'wpstream_post_author_content_post_type_list', $plugin_public, 'wpstream_post_author_content_post_type_list_callback' );
408 - $this->loader->add_action( 'wpstream_author_content_simple_post_type_message', $plugin_public, 'wpstream_author_content_simple_post_type_message_callback', 10, 2 );
409 - $this->loader->add_action( 'wpstream_author_content_post_type_message', $plugin_public, 'wpstream_author_content_post_type_message_callback', 10, 2 );
410 - $this->loader->add_action( 'wpstream_show_sidebar_for_post_type', $plugin_public, 'wpstream_show_sidebar_for_post_type_callback', 10, 2 );
411 - $this->loader->add_action( 'wpstream_video_episodes_post_type', $plugin_public, 'wpstream_video_episodes_post_type_callback' );
412 - $this->loader->add_action( 'wpstream_video_past_broadcast_post_type', $plugin_public, 'wpstream_video_past_broadcast_post_type_callback' );
413 - $this->loader->add_action( 'wpstream_additional_content_post_type_label', $plugin_public, 'wpstream_additional_content_post_type_label_callback', 10, 2 );
322 + $this->loader->add_action( 'after_switch_theme', $plugin_public,'wpstream_custom_flush_rewrite_rules' );
323 + $this->loader->add_action('init', $plugin_public,'wpstream_shortcodes');
324 +
325 + $this->loader->add_action('wo_before_api', 'wpstream_cors_check_and_response',10,1);
326 +
327 +
328 +
414 329 }
415 330
416 331 /**
417 332 * Run the loader to execute all of the hooks with WordPress.
@@ -451,340 +366,27 @@
451 366 */
452 367 public function get_version() {
453 368 return $this->version;
454 369 }
455 -
456 - public function is_plugin_outdated(){
457 - $update_data = get_site_transient('update_plugins');
458 - $plugin_path = 'wpstream/wpstream.php';
459 -
460 - if (isset($update_data->response[$plugin_path])) {
461 - return true;
462 - }
463 -
464 - return false;
465 - }
466 -
467 -
468 -
469 - public function show_user_data($pack_details){
470 - if ( ! isset( $pack_details['use_streaming_hours'] ) || $pack_details['use_streaming_hours'] !== true ) {
471 - if ( isset( $pack_details['available_data_mb'] ) && isset( $pack_details['available_storage_mb'] ) ) {
472 - $wpstream_convert_band = $this->wpstream_convert_band( $pack_details['available_data_mb'] );
473 - if ( $wpstream_convert_band < 0 ) {
474 - $wpstream_convert_band = 0;
475 - }
476 -
477 - $wpstream_convert_storage = $this->wpstream_convert_band( $pack_details['available_storage_mb'] );
478 - if ( $wpstream_convert_storage < 0 ) {
479 - $wpstream_convert_storage = 0;
480 - }
481 -
482 - print '<div class="pack_details_wrapper">'
483 - . '<strong>' . __( 'Your account information: ', 'wpstream' ) . '</strong> '
484 - . __( 'You have ', 'wpstream' ) . '<strong id="wpstream_available_data">' . abs( $wpstream_convert_band ) . ' GB</strong> '
485 - . __( 'available cloud data and ', 'wpstream' )
486 - . '<strong id="wpstream_available_storage">' . abs( $wpstream_convert_storage ) . ' GB</strong> '
487 - . __( 'available cloud storage', 'wpstream' ) . '.';
488 -
489 - print '<a href="https://wpstream.net/pricing/" class="wpstream_upgrade_topbar" target="_blank">' . esc_html__( 'Upgrade Plan', 'wpstream' ) . '</a>';
490 - print '</div>';
491 - print '<input type="hidden" id="wpstream_band" value="' . esc_attr( $pack_details['available_data_mb'] ) . '">';
492 - print '<input type="hidden" id="wpstream_storage" value="' . esc_attr( $pack_details['available_storage_mb'] ) . '">';
493 - }
494 - } else {
495 - if ( isset( $pack_details['available_viewer_hours'] ) && isset( $pack_details['available_broadcast_hours'] ) && isset( $pack_details['available_storage_hours'] ) ) {
496 - $available_viewer_hours = floatval( $pack_details['available_viewer_hours'] );
497 - if ( $available_viewer_hours < 0 ) {
498 - $available_viewer_hours = 0;
499 - }
500 -
501 - $available_broadcast_hours = floatval( $pack_details['available_broadcast_hours'] );
502 - if ( $available_broadcast_hours < 0 ) {
503 - $available_broadcast_hours = 0;
504 - }
505 -
506 - $available_storage_hours = floatval( $pack_details['available_storage_hours'] );
507 - if ( $available_storage_hours < 0 ) {
508 - $available_storage_hours = 0;
509 - }
510 -
511 - $formatted_viewer_hours = $this->wpstream_floor_decimals( $available_viewer_hours, 2 );
512 - $formatted_broadcast_hours = $this->wpstream_floor_decimals( $available_broadcast_hours, 2 );
513 - $formatted_storage_hours = $this->wpstream_floor_decimals( $available_storage_hours, 2 );
514 -
515 - print '<div class="pack_details_wrapper">'
516 - . __( 'Available streaming resources: ', 'wpstream' )
517 - . '<strong id="wpstream_available_viewer_hours">' . abs( $formatted_viewer_hours ) . ' viewer</strong> '
518 - . __( 'hours, ', 'wpstream' )
519 - . '<strong id="wpstream_available_broadcast_hours">' . abs( $formatted_broadcast_hours ) . ' broadcast</strong> '
520 - . __( 'hours, ', 'wpstream' )
521 - . '<strong id="wpstream_available_storage_hours">' . $formatted_storage_hours . ' storage</strong> '
522 - . __( 'hours', 'wpstream' ) . '.';
523 -
524 - print '<a href="https://wpstream.net/pricing/" class="wpstream_upgrade_topbar" target="_blank">' . esc_html__( 'Upgrade Plan', 'wpstream' ) . '</a>';
525 - print '</div>';
526 - print '<input type="hidden" id="wpstream_viewer_hours" value="' . esc_attr( $pack_details['available_viewer_hours'] ) . '">';
527 - print '<input type="hidden" id="wpstream_broadcast_hours" value="' . esc_attr( $pack_details['available_broadcast_hours'] ) . '">';
528 - print '<input type="hidden" id="wpstream_storage_hours" value="' . esc_attr( $pack_details['available_storage_hours'] ) . '">';
529 - }
530 - }
531 - }
532 -
533 370
534 - /**
535 - * help function for media list elementor widget
536 - *
537 - * @since 3.0.1
538 - * @return string
539 - */
540 371
541 - public function wpstream_media_list_elementor_function($attributes, $content = null){
542 -
543 -
544 - $media_number=3;
545 - if ( isset($attributes['media_number']) ){
546 - $media_number=$attributes['media_number'];
547 - }
548 -
549 -
550 - $row_number=3;
551 - if ( isset($attributes['row_number']) ){
552 - $row_number=$attributes['row_number'];
553 - }
554 - if($row_number>4){
555 - $row_number=4;
556 - }
557 -
558 -
559 - ob_start();
560 -
561 - // check if is vod or live stream
562 - $meta_query = array();
563 - $tax_query_array= array();
564 - $tax_query = array();
565 -
566 - // check if the media is paid or free
567 - $event_types = array();
568 - $product_type_free_paid = 0;
569 - if ( isset($attributes['product_type_free_paid']) ){
570 - $product_type_free_paid=$attributes['product_type_free_paid'];
571 -
572 - if($product_type_free_paid==0){
573 - $event_types=array('wpstream_product');
574 -
575 - if ( isset($attributes['product_type']) && intval($attributes['product_type'])==2){
576 - $event_types=array('wpstream_product_vod');
577 - }
578 -
579 - }else{
580 - $event_types=array('product');
581 - if ( isset($attributes['product_type']) ){
582 - $product_type = $attributes['product_type'];
583 - $product_type_slug = 'video_on_demand';
584 - if($product_type==1){
585 - $product_type_slug ='live_stream';
586 - }
587 -
588 - $tax_query_array = array(
589 - 'taxonomy' => 'product_type',
590 - 'field' => 'slug',
591 - 'terms' => $product_type_slug
592 - );
593 -
594 - $tax_query= array(
595 - 'relation' => 'AND',
596 - $tax_query_array
597 - );
598 -
599 - }
600 - }
601 -
602 - }
603 - $see_product='';
604 - if(isset($attributes['free_label'])){
605 - $see_product=$attributes['free_label'];
606 - }
607 -
608 - // pagination
609 - $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
610 - if( is_front_page() ){
611 - $paged= (get_query_var('page')) ? get_query_var('page') : 1;
612 - }
613 -
614 -
615 - //order
616 - $orderby='ID';
617 - $order ='ASC';
618 - if ( isset($attributes['order_by']) ){
619 - $order_by=intval($attributes['order_by']);
620 - switch ($order_by) {
621 - case 0:
622 - $orderby='ID';
623 - $order ='ASC';
624 - break;
625 - case 1:
626 - $orderby='ID';
627 - $order ='DESC';
628 - break;
629 - case 2:
630 - $orderby='title';
631 - $order ='ASC';
632 - break;
633 - case 3:
634 - $orderby='title';
635 - $order ='DESC';
636 - break;
637 - }
638 - }
639 -
640 - // building wp_query arg array
641 - $args = array(
642 - 'post_type' => $event_types,
643 - 'post_status' => 'publish',
644 - 'meta_query' => $meta_query,
645 - 'posts_per_page' => $media_number,
646 - 'paged' => $paged,
647 - 'orderby' => $orderby,
648 - 'order' => $order,
649 - 'tax_query' => $tax_query
650 - );
651 -
652 -
653 -
654 - // show live events
655 - if ( isset($attributes['product_show_live']) && $attributes['product_show_live']=='yes'){
656 - $live_event_for_user = $this->main->wpstream_live_connection->api20_wpstream_request_live_stream_for_user_for_shortcode('shortcode');
657 372
658 -
659 - if( is_array($live_event_for_user) ){
660 - $live_event_for_user[]=0;
661 -
662 - $args['post__in']=$live_event_for_user;
663 - }
664 - }
373 + public function show_user_data($pack_details){
374 + if( isset($pack_details['band']) && isset( $pack_details['storage']) ){
375 + $wpstream_convert_band = $this->wpstream_convert_band($pack_details['band']);
376 + if($wpstream_convert_band<0)$wpstream_convert_band=0;
665 377
666 -
378 + $wpstream_convert_storage = $this->wpstream_convert_band($pack_details['storage']);
379 + if($wpstream_convert_storage<0)$wpstream_convert_storage=0;
667 380
381 + print '<div class="pack_details_wrapper"><strong>'.__('Your account information: ','wpstream').'</strong> '.__('You have','wpstream').'<strong> '.$wpstream_convert_band.' Gb</strong> '.__('available streaming bandwidth and','wpstream').' <strong>'.$wpstream_convert_storage.' Gb</strong> '.__('available media storage','wpstream').'.</div>';
382 + print'<input type="hidden" id="wpstream_band" value="'.$pack_details['band'].'">';
383 + print'<input type="hidden" id="wpstream_storage" value="'.$pack_details['storage'].'">';
668 384
669 - $media_list= new WP_Query($args);
670 - if($media_list->have_posts()){
671 - print '<ul class="wpstream_media_list_wrapper products columns-'.esc_attr($row_number).'" >';
672 - while($media_list->have_posts()):$media_list->the_post();
673 - if($product_type_free_paid==0 ){
674 -
675 - $thumb=wp_get_attachment_image_src(get_post_thumbnail_id(),'medium');
676 -
677 - $thumb_src='';
678 - if( isset($thumb[0]) ){
679 - $thumb_src=$thumb[0];
680 - }
681 -
682 - if(($thumb_src)==''){
683 - $thumb_src= plugin_dir_url( dirname( __FILE__ ) ). 'img/default_300.png';
684 - }
685 - print '<li class="wpstream_product_unit">'
686 - .'<a href="'.get_permalink().'" class="product_title" ><div class="product_image" style="background-image:url('.esc_url($thumb_src).')"></div></a>'
687 - .'<a href="'.get_permalink().'" class="product_title" >'.get_the_title().'</a>';
688 -
689 - if($see_product!=''){
690 - print '<a href="'.get_permalink().'"class="see_product">'.$see_product.'</a>';
691 - }
692 - print '</li>';
693 - }else{
694 - wc_get_template_part( 'content', 'product' );
695 - }
696 - endwhile;
697 - print '</ul>';
698 - }else{
699 - print esc_html__('No media found! ','wpstream');
700 - }
701 -
702 -
703 - wp_reset_query();
704 - wp_reset_postdata();
705 -
706 - $this->wpstream_pagination($media_list->max_num_pages,$range=2);
707 - $return_string= ob_get_contents();
708 - ob_end_clean();
709 -
710 - return $return_string;
711 - }
712 -
713 -
714 -
715 -
716 -
717 -
718 - /*
719 - *
720 - *
721 - * Pagination for media lista
722 - *
723 - *
724 - *
725 - */
726 -
727 -
728 -
729 -
730 - function wpstream_pagination($pages = '', $range = 2){
731 -
732 - $showitems = ($range * 2)+1;
733 - global $paged;
734 - if(empty($paged)) $paged = 1;
735 -
736 -
737 - if($pages == ''){
738 - global $wp_query;
739 - $pages = $wp_query->max_num_pages;
740 - if(!$pages)
741 - {
742 - $pages = 1;
743 385 }
744 386 }
745 387
746 - if(1 != $pages){
747 - print '<ul class="wpstream_pagination ">';
748 - print '<li class="roundleft"><a href="'.get_pagenum_link($paged - 1).'"> < </a></li>';
749 -
750 - for ($i=1; $i <= $pages; $i++)
751 - {
752 - if (1 != $pages &&( !($i >= $paged+$range+1 || $i <= $paged-$range-1) || $pages <= $showitems ))
753 - {
754 - if ($paged == $i){
755 - print '<li class="active"><a href="'.esc_url(get_pagenum_link($i)).'" >'.$i.'</a><li>';
756 - }else{
757 - print '<li><a href="'.esc_url(get_pagenum_link($i)).'" >'.$i.'</a><li>';
758 - }
759 - }
760 - }
761 -
762 - $prev_page= get_pagenum_link($paged + 1);
763 - if ( ($paged +1) > $pages){
764 - $prev_page= get_pagenum_link($paged );
765 - }else{
766 - $prev_page= get_pagenum_link($paged + 1);
767 - }
768 -
769 -
770 - print '<li class="roundright"><a href="'.$prev_page.'"> > </a><li>';
771 - print '</ul>';
772 - }
773 - }
774 -
775 388
776 -
777 -
778 -
779 -
780 -
781 -
782 -
783 -
784 -
785 -
786 -
787 389 /**
788 390 * help function for player elementr widget
789 391 *
790 392 * @since 3.0.1
@@ -815,15 +417,9 @@
815 417
816 418
817 419
818 420 ob_start();
819 - ?>
820 - <div class="wpstream_insert_player_elementor_wrapper">
821 - <?php
822 - $this->main->wpstream_player->wpstream_video_player_shortcode($product_id);
823 - ?>
824 - </div>
825 - <?php
421 + $this->main->wpstream_player->wpstream_video_player_shortcode($product_id);
826 422 $return_string= ob_get_contents();
827 423 ob_end_clean();
828 424
829 425 return $return_string;
@@ -909,10 +505,8 @@
909 505 }
910 506
911 507
912 508 /**
913 - * edited 4.0
914 - *
915 509 * Check if user is allowed to stream
916 510 *
917 511 * @since 3.7
918 512 */
@@ -918,12 +512,12 @@
918 512 */
919 513
920 514 public function wpstream_check_user_can_stream(){
921 515 $current_user = wp_get_current_user();
922 -
516 +
923 517 if( !is_user_logged_in() ){
924 518 return false;
925 - exit('user not logged in');
519 + exit('user not logged in 497');
926 520 }
927 521
928 522 if(current_user_can('administrator')){
929 523 // admins can always brodcast
@@ -930,17 +524,14 @@
930 524 return true;
931 525 }
932 526
933 527 $extra_roles = get_option( 'wpstream_stream_role', true );
934 - $user_role = '';
935 - if( is_array( $current_user->roles) && count( $current_user->roles ) > 0 ){
936 - $user_role = $current_user->roles[0];
937 - }
938 -
939 - if ( is_array($extra_roles) && in_array( $user_role, $extra_roles ) ) {
528 + $user_role = $current_user->roles[0];
529 +
530 + if (in_array($user_role, $extra_roles)){
940 531 return true;
941 532 }
942 -
533 +
943 534 if(function_exists('wpstream_get_option') && intval(wpstream_get_option('allow_streaming_regular_users',''))==1 ){
944 535 return true;
945 536 }
946 537
@@ -960,35 +551,14 @@
960 551 if($item_id == 0){
961 552 //retrive or create channel for front end streamers
962 553 $item_id=$this->wpstream_retrive_front_end_channel();
963 554 }
964 - print'<div class="wpstream_modal_background"></div>';
965 - print '<div class="wpstream_error_modal_notification"><div class="wpstream_error_content">er2</div>
966 - <div class="wpstream_error_ok wpstream_button" type="button">'.esc_html__('Close','wpstream').'</div>
967 - </div>';
555 +
968 556 $this->admin->wpstream_live_stream_unit( $item_id,$type );
969 557 }
970 558
971 559
972 - /**
973 - * Start Streaming wrapper for wpstream theme
974 - *
975 - * @since 3.7
976 - */
977 560
978 - public function wpstream_live_stream_unit_wrapper_for_theme($item_id,$type){
979 - $item_id = intval($item_id);
980 -
981 - if($item_id == 0){
982 - //retrive or create channel for front end streamers
983 - $item_id=$this->wpstream_retrive_front_end_channel();
984 - }
985 - print'<div class="wpstream_modal_background"></div>';
986 - print '<div class="wpstream_error_modal_notification"><div class="wpstream_error_content">er2</div>
987 - <div class="wpstream_error_ok wpstream_button" type="button">'.esc_html__('Close','wpstream').'</div>
988 - </div>';
989 - $this->admin->wpstream_live_stream_unit_for_theme( $item_id,$type );
990 - }
991 561
992 562
993 563 /**
994 564 * retrive channel for front end streaming
@@ -1008,20 +578,11 @@
1008 578 }
1009 579 return $front_end_streamin_channel;
1010 580
1011 581 }
1012 -
1013 - /**
1014 - * create the event from front end
1015 - *
1016 - * @since 3.7
1017 - */
1018 582
583 +
1019 584 public function wpstrea_create_front_end_event($userID,$userLogin,$channel_type,$channel_price){
1020 -
1021 - if( !$this->wpstream_check_user_can_stream() ){
1022 - return;
1023 - }
1024 585
1025 586 $post_type='wpstream_product';
1026 587 if($channel_type=='paid'){
1027 588 $post_type='product';
@@ -1043,9 +604,9 @@
1043 604 // Set the product active price (regular)
1044 605 $product->set_price( $price );
1045 606 $product->set_regular_price( $price ); // To be sure
1046 607 $product->save();
1047 - update_post_meta ($post_id,'event_passed',0);
608 +
1048 609 wp_set_object_terms( $post_id, 'live_stream', 'product_type' );
1049 610 }
1050 611 update_post_meta($post_id,'wpstream_product_type',1);
1051 612
@@ -1070,22 +631,14 @@
1070 631 ;
1071 632 $author_posts = new WP_Query( $args );
1072 633 if( $author_posts->have_posts() ) {
1073 634 $author_posts->the_post();
1074 - $the_id= get_the_ID();
635 + return get_the_ID();
1075 636 }else{
1076 - $the_id= 0;
637 + return 0;
1077 638 }
1078 639
1079 640 wp_reset_query();
1080 641 wp_reset_postdata();
1081 - return $the_id;
1082 642 }
1083 -
1084 - /**
1085 - * Cleanup old logs
1086 - */
1087 - public function cleanup_logs() {
1088 - $logger = new WPStream_Logger();
1089 - $logger->clear_old_logs();
1090 - }
643 +
1091 644 }