PluginProbe
WpStream – Live Streaming, Video on Demand, Pay Per View / 3.0.1
WpStream – Live Streaming, Video on Demand, Pay Per View v3.0.1
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 +95 -720 4.12.23.0.1 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,54 +76,45 @@
76 76 */
77 77
78 78 public $wpstream_live_connection;
79 79 public $wpstream_player;
80 - public $quota_manager;
81 80 public $xtest;
82 - public $plugin_admin;
83 81
82 +
84 83 public function __construct() {
85 - $this->main = $this;
86 -
87 - if ( defined( 'WPSTREAM_PLUGIN_VERSION' ) ) {
88 - $this->version = WPSTREAM_PLUGIN_VERSION;
84 + $this->main = $this;
85 + if ( defined( 'WPSTREAM_VERSION' ) ) {
86 + $this->version = WPSTREAM_VERSION;
89 87 } else {
90 - $this->version = '3.0.1';
88 + $this->version = '3.0.1';
91 89 }
92 -
93 90 $this->plugin_name = 'wpstream';
94 91
95 92 $this->load_dependencies();
93 + $this->set_locale();
96 94 $this->define_admin_hooks();
97 95 $this->define_public_hooks();
98 - $this->define_ajax_hooks();
99 - $this->wpstream_load_page_templates();
100 - $this->wpstream_load_theme_notice();
96 +
97 + $this->xtest = "this is test2";
98 + $this->wpstream_conection();
99 + $this->wpstream_player();
101 100
102 - $this->wpstream_conection();
103 - $this->wpstream_player();
104 - $this->wpstream_init_quota_manager();
105 -
106 101 }
107 102
108 -
109 -
110 -
111 -
103 +
104 +
105 +
106 +
112 107 public function wpstream_convert_band($megabits){
113 - $gigabit = $megabits * 0.001;
114 - return floatval( sprintf( '%.1f', $gigabit ) );
108 + $gigabit = $megabits * 0.001;
109 + $gigabit = number_format($gigabit,2);
110 + return $gigabit;
115 111 }
116 112
117 -
118 - public $wpstream_ajax;
119 -
120 - private function define_ajax_hooks() {
121 - require_once plugin_dir_path(dirname(__FILE__)) . 'includes/class-wpstream-ajax.php';
122 - $this->wpstream_ajax = new WpStream_Ajax( $this->main );
123 - }
124 113
125 114
115 +
116 +
126 117 private function wpstream_conection(){
127 118 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'includes/class-wpstream-live-api-connection.php';
128 119 $this->wpstream_live_connection = new Wpstream_Live_Api_Connection();
129 120 }
@@ -132,26 +123,12 @@
132 123 private function wpstream_player(){
133 124 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'includes/class-wpstream-player.php';
134 125 $this->wpstream_player = new Wpstream_Player($this->main);
135 126 }
136 -
137 - private function wpstream_init_quota_manager() {
138 - require_once plugin_dir_path( dirname( __FILE__ ) ) . 'includes/class-wpstream-quota-manager.php';
139 - $this->quota_manager = new Wpstream_Quota_Manager( $this );
140 - }
141 -
142 -
143 - private function wpstream_load_page_templates() {
144 - require_once WPSTREAM_PLUGIN_PATH . 'includes/class-wpstream-templates.php';
145 - new WpStream_Template_Loader();
146 - }
147 -
148 - private function wpstream_load_theme_notice() {
149 - require_once plugin_dir_path( dirname( __FILE__ ) ) . 'includes/class-wpstream-theme-notice.php';
150 - new WPStream_Theme_Notice();
151 - }
152 127
153 128
129 +
130 +
154 131 /**
155 132 * Load the required dependencies for this plugin.
156 133 *
157 134 * Include the following files that make up the plugin:
@@ -190,21 +167,19 @@
190 167 * The class responsible for defining all actions that occur in the public-facing
191 168 * side of the site.
192 169 */
193 170 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'public/class-wpstream-public.php';
194 - /**
171 +
172 + /**
195 173 * The class responsible for custom post type
196 174
197 - */
198 - require_once plugin_dir_path( dirname( __FILE__ ) ) . 'includes/class-wpstream_product.php';
199 - if( class_exists( 'WooCommerce' ) ){
200 - require_once plugin_dir_path( dirname( __FILE__ ) ) . 'includes/class-wc_product_live_stream.php';
201 - require_once plugin_dir_path( dirname( __FILE__ ) ) . 'includes/class-wc_product_video_on_demand.php';
202 - }
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 + }
203 181
204 - require_once plugin_dir_path(__FILE__) . 'Helpers/class-wpstream-log-entry.php';
205 - require_once plugin_dir_path(__FILE__) . 'Logger/class-wpstream-logger.php';
206 -
207 182 $this->loader = new Wpstream_Loader();
208 183
209 184 }
210 185
@@ -220,9 +195,9 @@
220 195 private function set_locale() {
221 196
222 197 $plugin_i18n = new Wpstream_i18n();
223 198
224 - $this->loader->add_action( 'plugins_loaded', $plugin_i18n, 'load_plugin_textdomain', 1 );
199 + $this->loader->add_action( 'plugins_loaded', $plugin_i18n, 'load_plugin_textdomain' );
225 200
226 201 }
227 202
228 203 /**
@@ -234,96 +209,63 @@
234 209 */
235 210 private function define_admin_hooks() {
236 211
237 212 $plugin_admin = new Wpstream_Admin( $this->get_plugin_name(), $this->get_version(), $this->main );
238 -
239 - $this->admin = $plugin_admin;
240 -
241 - $this->loader->add_action( 'admin_enqueue_scripts', $plugin_admin, 'enqueue_styles' );
242 - $this->loader->add_action( 'admin_enqueue_scripts', $plugin_admin, 'enqueue_scripts' );
213 +
214 + $this->loader->add_action( 'admin_enqueue_scripts', $plugin_admin, 'enqueue_styles' );
215 + $this->loader->add_action( 'admin_enqueue_scripts', $plugin_admin, 'enqueue_scripts' );
243 216 $this->loader->add_action( 'admin_menu', $plugin_admin, 'wpstream_manage_admin_menu',999);
244 -
217 +
245 218 $plugin_post_types = new Wpstream_Product();
246 219 $this->loader->add_action( 'init', $plugin_post_types, 'create_custom_post_type', 999 );
247 -
220 +
248 221 // save and render metaboxed
249 - $this->loader->add_action( 'add_meta_boxes', $plugin_admin, 'add_wpstream_product_metaboxes' );
250 - $this->loader->add_action( 'save_post', $plugin_admin, 'wpstream_free_product_update_post',1,2 );
251 - $this->loader->add_action( 'publish_wpstream_product', $plugin_admin, 'wpstream_publish_wpstream_product',1,2 );
252 -
253 -
254 -
255 - // make product virtual
256 - $this->loader->add_action( 'save_post', $plugin_admin, 'wpstream_make_product_virtual', 99999, 2 );
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 +
225 + // show streaming controls on sidebar
226 + $this->loader->add_action('add_meta_boxes', $plugin_admin, 'wpstream_startstreaming_sidebar_meta');
257 227
258 228
229 + $this->loader->add_action( 'admin_notices', $plugin_admin,'wpstream_admin_notice' );
230 + $this->loader->add_action( 'wp_ajax_wpstream_update_cache_notice', $plugin_admin,'wpstream_update_cache_notice' );
259 231
260 - // show streaming controls on sidebar
261 - $this->loader->add_action('add_meta_boxes', $plugin_admin, 'wpstream_startstreaming_sidebar_meta');
262 -
263 - // on boarding actions
264 - $this->loader->add_action('admin_footer',$plugin_admin, 'wpstream_admin_footer_onboarding');
265 - $this->loader->add_action( 'wp_ajax_wpstream_on_board_create_channel', $plugin_admin,'wpstream_on_board_create_channel' );
266 - $this->loader->add_action( 'wp_ajax_wpstream_on_board_create_channel_ppv', $plugin_admin,'wpstream_on_board_create_channel_ppv' );
267 - $this->loader->add_action( 'wp_ajax_wpstream_on_board_create_free_vod', $plugin_admin,'wpstream_on_board_create_free_vod' );
268 - $this->loader->add_action( 'wp_ajax_wpstream_on_board_create_ppv_vod', $plugin_admin,'wpstream_on_board_create_ppv_vod' );
269 -
270 -
271 - $this->loader->add_action( 'wp_ajax_wpstream_on_board_login', $plugin_admin,'wpstream_on_board_login' );
272 - $this->loader->add_action( 'wp_ajax_wpstream_on_board_register', $plugin_admin,'wpstream_on_board_register' );
273 - $this->loader->add_action( 'wp_ajax_wpstream_get_captcha_challenge', $plugin_admin, 'wpstream_get_captcha_challenge' );
274 - $this->loader->add_action( 'wp_ajax_nopriv_wpstream_get_captcha_challenge', $plugin_admin, 'wpstream_get_captcha_challenge' );
275 -
276 - // Register AJAX actions for multipart uploads
277 - $this->loader->add_action( 'wp_ajax_wpstream_initiate_multipart_upload', $plugin_admin, 'handle_initiate_multipart_upload' );
278 - $this->loader->add_action( 'wp_ajax_wpstream_complete_multipart_upload', $plugin_admin, 'handle_complete_multipart_upload' );
279 -
280 - $this->loader->add_action( 'admin_notices', $plugin_admin,'wpstream_admin_notice' );
281 - $this->loader->add_action( 'admin_notices', $plugin_admin,'wpstream_plugin_update_available_notice' );
282 -
283 - $this->loader->add_action( 'wp_ajax_wpstream_update_cache_notice', $plugin_admin,'wpstream_update_cache_notice' );
284 -// $this->loader->add_action( 'wp_ajax_wpstream_get_videos_list', $plugin_admin,'wpstream_get_videos_list' );
285 -
286 -
287 - $this->loader->add_action( 'wp_ajax_wpstream_settings_tab_update_plugin', $plugin_admin, 'wpstream_settings_tab_update_plugin' );
288 -
289 232 // add and save category extra fields
290 233 $this->loader->add_action( 'category_edit_form_fields', $plugin_post_types, 'wpstream_category_callback_function', 10, 2);
291 - $this->loader->add_action( 'category_add_form_fields', $plugin_post_types, 'wpstream_category_callback_add_function' );
234 + $this->loader->add_action( 'category_add_form_fields', $plugin_post_types, 'wpstream_category_callback_add_function', 10, 2 );
292 235 $this->loader->add_action( 'created_category', $plugin_post_types, 'wpstream_category_save_extra_fields_callback', 10, 2);
293 236 $this->loader->add_action( 'edited_category', $plugin_post_types, 'wpstream_category_save_extra_fields_callback', 10, 2);
294 237
295 238 $this->loader->add_action( 'product_cat_edit_form_fields', $plugin_post_types, 'wpstream_category_callback_function', 10, 2);
296 - $this->loader->add_action( 'product_cat_add_form_fields', $plugin_post_types, 'wpstream_category_callback_add_function' );
239 + $this->loader->add_action( 'product_cat_add_form_fields', $plugin_post_types, 'wpstream_category_callback_add_function', 10, 2 );
297 240 $this->loader->add_action( 'created_product_cat', $plugin_post_types, 'wpstream_category_save_extra_fields_callback', 10, 2);
298 241 $this->loader->add_action( 'edited_product_cat', $plugin_post_types, 'wpstream_category_save_extra_fields_callback', 10, 2);
299 242
300 243
301 244 $this->loader->add_action( 'wpstream_category_edit_form_fields', $plugin_post_types, 'wpstream_category_callback_function', 10, 2);
302 - $this->loader->add_action( 'wpstream_category_add_form_fields', $plugin_post_types, 'wpstream_category_callback_add_function' );
245 + $this->loader->add_action( 'wpstream_category_add_form_fields', $plugin_post_types, 'wpstream_category_callback_add_function', 10, 2 );
303 246 $this->loader->add_action( 'created_wpstream_category', $plugin_post_types, 'wpstream_category_save_extra_fields_callback', 10, 2);
304 247 $this->loader->add_action( 'edited_wpstream_category', $plugin_post_types, 'wpstream_category_save_extra_fields_callback', 10, 2);
305 248
306 249
307 250 $this->loader->add_action( 'wpstream_actors_edit_form_fields', $plugin_post_types, 'wpstream_category_callback_function', 10, 2);
308 - $this->loader->add_action( 'wpstream_actors_add_form_fields', $plugin_post_types, 'wpstream_category_callback_add_function' );
251 + $this->loader->add_action( 'wpstream_actors_add_form_fields', $plugin_post_types, 'wpstream_category_callback_add_function', 10, 2 );
309 252 $this->loader->add_action( 'created_wpstream_actors', $plugin_post_types, 'wpstream_category_save_extra_fields_callback', 10, 2);
310 253 $this->loader->add_action( 'edited_wpstream_actors', $plugin_post_types, 'wpstream_category_save_extra_fields_callback', 10, 2);
311 254
312 255 $this->loader->add_action( 'wpstream_movie_rating_edit_form_fields', $plugin_post_types, 'wpstream_category_callback_function', 10, 2);
313 - $this->loader->add_action( 'wpstream_movie_rating_add_form_fields', $plugin_post_types, 'wpstream_category_callback_add_function' );
256 + $this->loader->add_action( 'wpstream_movie_rating_add_form_fields', $plugin_post_types, 'wpstream_category_callback_add_function', 10, 2 );
314 257 $this->loader->add_action( 'created_wpstream_movie_rating', $plugin_post_types, 'wpstream_category_save_extra_fields_callback', 10, 2);
315 258 $this->loader->add_action( 'edited_wpstream_movie_rating', $plugin_post_types, 'wpstream_category_save_extra_fields_callback', 10, 2);
259 +
260 +
316 261
317 262
318 263 if ( in_array( 'woocommerce/woocommerce.php', apply_filters( 'active_plugins', get_option( 'active_plugins' ) ) ) ) {
319 -
320 - $this->loader->add_action( 'init', $plugin_admin, 'wpstream_add_custom_wc_products' );
264 +
321 265 $this->loader->add_filter( 'product_type_selector', $plugin_admin, 'wpstream_add_products' );
322 - $this->loader->add_filter( 'woocommerce_product_class', $plugin_admin, 'wpstream_add_products_class', 10, 2 );
323 266 $this->loader->add_action( 'admin_footer', $plugin_admin, 'wpstream_products_custom_js' );
324 267 $this->loader->add_filter( 'woocommerce_product_data_tabs', $plugin_admin, 'wpstream_hide_attributes_data_panel',10,1 );
325 - $this->loader->add_filter( 'woocommerce_is_purchasable', $plugin_admin, 'wpstream_hide_buy_now_subscription_mode',10,2);
326 268
327 269 $this->loader->add_filter( 'woocommerce_product_options_general_product_data',$plugin_admin, 'wpstream_add_custom_general_fields', 10,1);
328 270 $this->loader->add_filter( 'woocommerce_process_product_meta',$plugin_admin, 'wpstream_add_custom_general_fields_save',10,1 );
329 271 $this->loader->add_action( 'woocommerce_live_stream_add_to_cart', $plugin_admin, 'wpstream_add_to_cart',10,1);
@@ -329,14 +271,16 @@
329 271 $this->loader->add_action( 'woocommerce_live_stream_add_to_cart', $plugin_admin, 'wpstream_add_to_cart',10,1);
330 272 $this->loader->add_action( 'woocommerce_video_on_demand_add_to_cart', $plugin_admin, 'wpstream_add_to_cart',10,1);
331 273 $this->loader->add_filter( 'woocommerce_loop_add_to_cart_link', $plugin_admin,'replacing_add_to_cart_button', 10, 2 );
332 274 }
333 - }
275 +
276 +
277 +
278 +
334 279
335 280
281 + }
336 282
337 -
338 -
339 283 /**
340 284 * Register all of the hooks related to the public-facing functionality
341 285 * of the plugin.
342 286 *
@@ -348,49 +292,43 @@
348 292 $plugin_public = new Wpstream_Public( $this->get_plugin_name(), $this->get_version(), $this->main );
349 293
350 294 $this->loader->add_action( 'wp_enqueue_scripts', $plugin_public, 'enqueue_styles' );
351 295 $this->loader->add_action( 'wp_enqueue_scripts', $plugin_public, 'enqueue_scripts' );
296 +
297 + $this->loader->add_action( 'init', $plugin_public,'wpstream_my_custom_endpoints' );
298 + $this->loader->add_filter( 'query_vars',$plugin_public, 'wpstream_my_custom_query_vars', 0 );
299 +
300 + //live stream action
301 + $this->loader->add_action('init',$plugin_public,'wpstream_live_streaming_key');
302 + $this->loader->add_action('init',$plugin_public,'wpstream_live_streaming_key_for_3rdparty');
303 + $this->loader->add_action('init',$plugin_public,'wpstream_live_streaming_key_vod');
304 + // woo action
305 +
306 + $this->loader->add_action( 'woocommerce_before_single_product', $plugin_public,'wpstream_non_image_content_wrapper_start', 20 );
307 + $this->loader->add_action( 'woocommerce_after_single_product', $plugin_public,'wpstream_non_image_content_wrapper_end', 20 );
308 +
309 + $this->loader->add_filter( 'woocommerce_account_menu_items', $plugin_public,'wpstream_custom_my_account_menu_items' );
310 + $this->loader->add_action( 'woocommerce_account_event-list_endpoint', $plugin_public,'wpstream_custom_endpoint_content_event_list' );
311 + $this->loader->add_action( 'woocommerce_account_video-list_endpoint', $plugin_public,'wpstream_custom_endpoint_video_list' );
312 +
352 313
353 - $this->loader->add_action( 'init', $plugin_public,'wpstream_my_custom_endpoints' );
354 - $this->loader->add_filter( 'query_vars',$plugin_public, 'wpstream_my_custom_query_vars', 0 );
314 + $this->loader->add_action( 'after_switch_theme', $plugin_public,'wpstream_custom_flush_rewrite_rules' );
315 + $this->loader->add_action('init', $plugin_public,'wpstream_shortcodes');
355 316
356 - //live stream action
357 - $this->loader->add_action('init',$plugin_public,'wpstream_set_cookies',0);
358 - $this->loader->add_action('init',$plugin_public,'wpstream_live_streaming_key');
359 - $this->loader->add_action('init',$plugin_public,'wpstream_live_streaming_key_for_3rdparty');
360 - $this->loader->add_action('init',$plugin_public,'wpstream_live_streaming_key_vod',10);
361 -
362 - // woo action
363 - $this->loader->add_action( 'woocommerce_before_single_product', $plugin_public,'wpstream_non_image_content_wrapper_start', 20 );
364 - $this->loader->add_action( 'woocommerce_after_single_product', $plugin_public,'wpstream_non_image_content_wrapper_end', 20 );
365 - $this->loader->add_action( 'woocommerce_thankyou_order_received_text', $plugin_public,'wpstream_thankyou_extra', 20,2 );
366 - $this->loader->add_action( 'woocommerce_email_order_details', $plugin_public,'wpstream_email_order_details', 20,4 );
367 -
368 - $this->loader->add_filter( 'woocommerce_account_menu_items', $plugin_public,'wpstream_custom_my_account_menu_items' );
369 - $this->loader->add_action( 'woocommerce_account_event-list_endpoint', $plugin_public,'wpstream_custom_endpoint_content_event_list' );
370 - $this->loader->add_action( 'woocommerce_account_video-list_endpoint', $plugin_public,'wpstream_custom_endpoint_video_list' );
371 -
372 - $this->loader->add_action( 'after_switch_theme', $plugin_public,'wpstream_custom_flush_rewrite_rules' );
373 - $this->loader->add_action('init', $plugin_public,'wpstream_shortcodes');
374 - $this->loader->add_action('vc_before_init', $plugin_public,'wpstream_bakery_shortcodes');
375 -
376 - $this->loader->add_action('wo_before_api', 'wpstream_cors_check_and_response',10,1);
377 -
378 - $this->loader->add_filter( 'wpstream_search_template_item_post_type', $plugin_public, 'wpstream_search_template_add_item_post_type' );
379 - $this->loader->add_filter( 'wpstream_sidebar_id_by_post_type', $plugin_public, 'wpstream_sidebar_id_by_post_type' );
380 - $this->loader->add_filter( 'wpstream_header_search_values', $plugin_public, 'wpstream_header_search_values' );
381 - $this->loader->add_filter( 'wpstream_extend_category_archive_query_filter', $plugin_public, 'wpstream_extend_category_archive_query_filter_callback' );
382 - $this->loader->add_filter( 'wpstream_archives_lists_taxonomy_labels', $plugin_public, 'wpstream_archives_lists_taxonomy_labels_callback' );
383 - $this->loader->add_filter( 'wpstream_author_archive_list_taxonomy_labels', $plugin_public, 'wpstream_author_archive_list_taxonomy_labels_callback' );
384 - $this->loader->add_action( 'wpstream_vod_attached_to_channel', $plugin_public, 'wpstream_vod_attached_to_channel' );
385 - $this->loader->add_action( 'wpstream_additional_content_post_type', $plugin_public, 'wpstream_additional_content_post_type_callback' );
386 - $this->loader->add_action( 'wpstream_post_author_content_post_type_list', $plugin_public, 'wpstream_post_author_content_post_type_list_callback' );
387 - $this->loader->add_action( 'wpstream_author_content_simple_post_type_message', $plugin_public, 'wpstream_author_content_simple_post_type_message_callback', 10, 2 );
388 - $this->loader->add_action( 'wpstream_author_content_post_type_message', $plugin_public, 'wpstream_author_content_post_type_message_callback', 10, 2 );
389 - $this->loader->add_action( 'wpstream_show_sidebar_for_post_type', $plugin_public, 'wpstream_show_sidebar_for_post_type_callback', 10, 2 );
390 - $this->loader->add_action( 'wpstream_video_episodes_post_type', $plugin_public, 'wpstream_video_episodes_post_type_callback' );
391 - $this->loader->add_action( 'wpstream_video_past_broadcast_post_type', $plugin_public, 'wpstream_video_past_broadcast_post_type_callback' );
392 - $this->loader->add_action( 'wpstream_additional_content_post_type_label', $plugin_public, 'wpstream_additional_content_post_type_label_callback', 10, 2 );
317 +// // rewrite urls
318 +// $this->loader->add_action('init', $plugin_public,'wpstream_custom_rewrite_tag', 10, 0);
319 +// $this->loader->add_action('init', $plugin_public,'wpstream_custom_rewrite_rule', 10, 0);
320 +//
321 +// $this->loader->add_filter( 'page_template',$plugin_public, 'wpstream_userkey_page_template' );
322 +// $this->loader->add_filter( 'page_template',$plugin_public, 'wpstream_vodkey_page_template' );
323 +
324 + //api
325 +
326 +
327 + $this->loader->add_action('wo_before_api', 'wpstream_cors_check_and_response',10,1);
328 +
329 +
330 +
393 331 }
394 332
395 333 /**
396 334 * Run the loader to execute all of the hooks with WordPress.
@@ -430,310 +368,20 @@
430 368 */
431 369 public function get_version() {
432 370 return $this->version;
433 371 }
434 -
435 - public function is_plugin_outdated(){
436 - $update_data = get_site_transient('update_plugins');
437 - $plugin_path = 'wpstream/wpstream.php';
438 -
439 - if (isset($update_data->response[$plugin_path])) {
440 - return true;
441 - }
442 -
443 - return false;
444 - }
445 -
446 -
447 -
448 - public function show_user_data($pack_details){
449 - if( isset($pack_details['available_data_mb']) && isset( $pack_details['available_storage_mb']) ){
450 - $wpstream_convert_band = $this->wpstream_convert_band($pack_details['available_data_mb']);
451 - if( $wpstream_convert_band < 0 ) {
452 - $wpstream_convert_band = 0;
453 - }
454 -
455 - $wpstream_convert_storage = $this->wpstream_convert_band($pack_details['available_storage_mb']);
456 - if( $wpstream_convert_storage < 0 ) {
457 - $wpstream_convert_storage = 0;
458 - }
459 -
460 - print '<div class="pack_details_wrapper">'
461 - . '<strong>' . __('Your account information: ', 'wpstream') . '</strong> '
462 - . __('You have ', 'wpstream') . '<strong id="wpstream_available_data">' . abs( $wpstream_convert_band ) . ' GB</strong> '
463 - . __('available cloud data and ', 'wpstream')
464 - . '<strong id="wpstream_available_storage">' . abs( $wpstream_convert_storage ) . ' GB</strong> '
465 - . __('available cloud storage', 'wpstream') . '.';
466 -
467 - print '<a href="https://wpstream.net/pricing/" class="wpstream_upgrade_topbar" target="_blank">'.esc_html__('Upgrade Plan','wpstream').'</a>';
468 - print '</div>';
469 - print'<input type="hidden" id="wpstream_band" value="'.$pack_details['available_data_mb'].'">';
470 - print'<input type="hidden" id="wpstream_storage" value="'.$pack_details['available_storage_mb'].'">';
471 -
472 - }
473 - }
474 -
475 372
476 - /**
477 - * help function for media list elementor widget
478 - *
479 - * @since 3.0.1
480 - * @return string
481 - */
482 373
483 - public function wpstream_media_list_elementor_function($attributes, $content = null){
484 -
485 -
486 - $media_number=3;
487 - if ( isset($attributes['media_number']) ){
488 - $media_number=$attributes['media_number'];
489 - }
490 -
491 -
492 - $row_number=3;
493 - if ( isset($attributes['row_number']) ){
494 - $row_number=$attributes['row_number'];
495 - }
496 - if($row_number>4){
497 - $row_number=4;
498 - }
499 -
500 -
501 - ob_start();
502 -
503 - // check if is vod or live stream
504 - $meta_query = array();
505 - $tax_query_array= array();
506 - $tax_query = array();
507 -
508 - // check if the media is paid or free
509 - $event_types = array();
510 - $product_type_free_paid = 0;
511 - if ( isset($attributes['product_type_free_paid']) ){
512 - $product_type_free_paid=$attributes['product_type_free_paid'];
513 -
514 - if($product_type_free_paid==0){
515 - $event_types=array('wpstream_product');
516 -
517 - if ( isset($attributes['product_type']) && intval($attributes['product_type'])==2){
518 - $event_types=array('wpstream_product_vod');
519 - }
520 -
521 - }else{
522 - $event_types=array('product');
523 - if ( isset($attributes['product_type']) ){
524 - $product_type = $attributes['product_type'];
525 - $product_type_slug = 'video_on_demand';
526 - if($product_type==1){
527 - $product_type_slug ='live_stream';
528 - }
529 -
530 - $tax_query_array = array(
531 - 'taxonomy' => 'product_type',
532 - 'field' => 'slug',
533 - 'terms' => $product_type_slug
534 - );
535 -
536 - $tax_query= array(
537 - 'relation' => 'AND',
538 - $tax_query_array
539 - );
540 -
541 - }
542 - }
543 -
544 - }
545 - $see_product='';
546 - if(isset($attributes['free_label'])){
547 - $see_product=$attributes['free_label'];
548 - }
549 -
550 - // pagination
551 - $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
552 - if( is_front_page() ){
553 - $paged= (get_query_var('page')) ? get_query_var('page') : 1;
554 - }
555 -
556 -
557 - //order
558 - $orderby='ID';
559 - $order ='ASC';
560 - if ( isset($attributes['order_by']) ){
561 - $order_by=intval($attributes['order_by']);
562 - switch ($order_by) {
563 - case 0:
564 - $orderby='ID';
565 - $order ='ASC';
566 - break;
567 - case 1:
568 - $orderby='ID';
569 - $order ='DESC';
570 - break;
571 - case 2:
572 - $orderby='title';
573 - $order ='ASC';
574 - break;
575 - case 3:
576 - $orderby='title';
577 - $order ='DESC';
578 - break;
579 - }
580 - }
581 -
582 - // building wp_query arg array
583 - $args = array(
584 - 'post_type' => $event_types,
585 - 'post_status' => 'publish',
586 - 'meta_query' => $meta_query,
587 - 'posts_per_page' => $media_number,
588 - 'paged' => $paged,
589 - 'orderby' => $orderby,
590 - 'order' => $order,
591 - 'tax_query' => $tax_query
592 - );
593 -
594 -
595 -
596 - // show live events
597 - if ( isset($attributes['product_show_live']) && $attributes['product_show_live']=='yes'){
598 - $live_event_for_user = $this->main->wpstream_live_connection->api20_wpstream_request_live_stream_for_user_for_shortcode('shortcode');
599 374
600 -
601 - if( is_array($live_event_for_user) ){
602 - $live_event_for_user[]=0;
603 -
604 - $args['post__in']=$live_event_for_user;
605 - }
606 - }
607 -
608 -
609 -
375 + public function show_user_data($pack_details){
376 + if( isset($pack_details['band']) && isset( $pack_details['storage']) ){
377 + print '<div class="pack_details_wrapper"><strong>'.__('Your account information: ','wpstream').'</strong> '.__('You have','wpstream').'<strong> '.$this->wpstream_convert_band($pack_details['band']).' Gb</strong> '.__('available streaming bandwidth and','wpstream').' <strong>'.$this->wpstream_convert_band($pack_details['storage']).' Gb</strong> '.__('available media storage','wpstream').'.</div>';
378 + print'<input type="hidden" id="wpstream_band" value="'.$pack_details['band'].'">';
379 + print'<input type="hidden" id="wpstream_storage" value="'.$pack_details['storage'].'">';
610 380
611 - $media_list= new WP_Query($args);
612 - if($media_list->have_posts()){
613 - print '<ul class="wpstream_media_list_wrapper products columns-'.esc_attr($row_number).'" >';
614 - while($media_list->have_posts()):$media_list->the_post();
615 - if($product_type_free_paid==0 ){
616 -
617 - $thumb=wp_get_attachment_image_src(get_post_thumbnail_id(),'medium');
618 -
619 - $thumb_src='';
620 - if( isset($thumb[0]) ){
621 - $thumb_src=$thumb[0];
622 - }
623 -
624 - if(($thumb_src)==''){
625 - $thumb_src= plugin_dir_url( dirname( __FILE__ ) ). 'img/default_300.png';
626 - }
627 - print '<li class="wpstream_product_unit">'
628 - .'<a href="'.get_permalink().'" class="product_title" ><div class="product_image" style="background-image:url('.esc_url($thumb_src).')"></div></a>'
629 - .'<a href="'.get_permalink().'" class="product_title" >'.get_the_title().'</a>';
630 -
631 - if($see_product!=''){
632 - print '<a href="'.get_permalink().'"class="see_product">'.$see_product.'</a>';
633 - }
634 - print '</li>';
635 - }else{
636 - wc_get_template_part( 'content', 'product' );
637 - }
638 - endwhile;
639 - print '</ul>';
640 - }else{
641 - print esc_html__('No media found! ','wpstream');
642 - }
643 -
644 -
645 - wp_reset_query();
646 - wp_reset_postdata();
647 -
648 - $this->wpstream_pagination($media_list->max_num_pages,$range=2);
649 - $return_string= ob_get_contents();
650 - ob_end_clean();
651 -
652 - return $return_string;
653 - }
654 -
655 -
656 -
657 -
658 -
659 -
660 - /*
661 - *
662 - *
663 - * Pagination for media lista
664 - *
665 - *
666 - *
667 - */
668 -
669 -
670 -
671 -
672 - function wpstream_pagination($pages = '', $range = 2){
673 -
674 - $showitems = ($range * 2)+1;
675 - global $paged;
676 - if(empty($paged)) $paged = 1;
677 -
678 -
679 - if($pages == ''){
680 - global $wp_query;
681 - $pages = $wp_query->max_num_pages;
682 - if(!$pages)
683 - {
684 - $pages = 1;
685 381 }
686 382 }
687 383
688 - if(1 != $pages){
689 - print '<ul class="wpstream_pagination ">';
690 - print '<li class="roundleft"><a href="'.get_pagenum_link($paged - 1).'"> < </a></li>';
691 -
692 - for ($i=1; $i <= $pages; $i++)
693 - {
694 - if (1 != $pages &&( !($i >= $paged+$range+1 || $i <= $paged-$range-1) || $pages <= $showitems ))
695 - {
696 - if ($paged == $i){
697 - print '<li class="active"><a href="'.esc_url(get_pagenum_link($i)).'" >'.$i.'</a><li>';
698 - }else{
699 - print '<li><a href="'.esc_url(get_pagenum_link($i)).'" >'.$i.'</a><li>';
700 - }
701 - }
702 - }
703 -
704 - $prev_page= get_pagenum_link($paged + 1);
705 - if ( ($paged +1) > $pages){
706 - $prev_page= get_pagenum_link($paged );
707 - }else{
708 - $prev_page= get_pagenum_link($paged + 1);
709 - }
710 -
711 -
712 - print '<li class="roundright"><a href="'.$prev_page.'"> > </a><li>';
713 - print '</ul>';
714 - }
715 - }
716 -
717 -
718 -
719 -
720 -
721 -
722 -
723 -
724 -
725 -
726 -
727 -
728 -
729 - /**
730 - * help function for player elementr widget
731 - *
732 - * @since 3.0.1
733 - * @return string
734 - */
735 -
736 384 public function wpstream_insert_player_elementor($attributes, $content = null){
737 385 $product_id = '';
738 386 $return_string = '';
739 387 $attributes = shortcode_atts(
@@ -738,9 +386,8 @@
738 386 $return_string = '';
739 387 $attributes = shortcode_atts(
740 388 array(
741 389 'id' => 0,
742 - 'user_id' => 0,
743 390 ), $attributes) ;
744 391
745 392
746 393 if ( isset($attributes['id']) ){
@@ -745,65 +392,11 @@
745 392
746 393 if ( isset($attributes['id']) ){
747 394 $product_id=$attributes['id'];
748 395 }
749 - if ( isset($attributes['user_id']) ){
750 - $user_id = intval( $attributes['user_id'] );
751 - }
752 -
753 - if(intval($product_id)==0 && $user_id!=0 ){
754 - $product_id= $this->wpstream_player_retrive_first_id($user_id);
755 - }
756 -
757 -
758 -
759 -
760 - ob_start();
761 - ?>
762 - <div class="wpstream_insert_player_elementor_wrapper">
763 - <?php
764 - $this->main->wpstream_player->wpstream_video_player_shortcode($product_id);
765 - ?>
766 - </div>
767 - <?php
768 - $return_string= ob_get_contents();
769 - ob_end_clean();
770 396
771 - return $return_string;
772 - }
773 -
774 - /**
775 - * help function for player low latency elementor widget
776 - *
777 - * @since 3.0.1
778 - * @return string
779 - */
780 -
781 - public function wpstream_insert_player__low_latency_elementor($attributes, $content = null){
782 - $product_id = '';
783 - $return_string = '';
784 - $attributes = shortcode_atts(
785 - array(
786 - 'id' => 0,
787 - 'user_id' => 0,
788 - ), $attributes) ;
789 -
790 -
791 - if ( isset($attributes['id']) ){
792 - $product_id=$attributes['id'];
793 - }
794 -
795 - if ( isset($attributes['user_id']) ){
796 - $user_id = intval( $attributes['user_id'] );
797 - }
798 -
799 - if(intval($product_id)==0 && $user_id!=0){
800 - $product_id= $this->wpstream_player_retrive_first_id($user_id);
801 - }
802 -
803 -
804 397 ob_start();
805 - $this->main->wpstream_player->wpstream_video_player_shortcode_low_latency($product_id);
398 + $this->main->wpstream_player->wpstream_video_player_shortcode($product_id);
806 399 $return_string= ob_get_contents();
807 400 ob_end_clean();
808 401
809 402 return $return_string;
@@ -810,224 +403,6 @@
810 403 }
811 404
812 405
813 406
814 - public function wpstream_player_retrive_first_id($received_user_id=''){
815 - $channel_type = get_option ('wpstream_user_streaming_channel_type');
816 - $product_id = $this->wpstream_get_current_event_per_author($received_user_id,$channel_type);
817 - return $product_id;
818 - }
819 -
820 -
821 -
822 - /**
823 - * help function for chat elementor widget
824 - *
825 - * @since 3.0.1
826 - * @return string
827 - */
828 -
829 - public function wpstream_insert_chat_elementor($attributes, $content = null){
830 - $product_id = '';
831 - $return_string = '';
832 - $attributes = shortcode_atts(
833 - array(
834 - 'id' => 0,
835 - ), $attributes) ;
836 407
837 -
838 - if ( isset($attributes['id']) ){
839 - $product_id=$attributes['id'];
840 - }
841 -
842 - $return_string.= '<div class="wpstream_plugin_chat_wrapper">';
843 - ob_start();
844 - $this->main->wpstream_player->wpstream_chat_wrapper($product_id);
845 - $return_string.= ob_get_contents();
846 - ob_end_clean();
847 - $return_string.='</div>';
848 - $this->main->wpstream_player->wpstream_connect_to_chat($product_id);
849 -
850 - return $return_string;
851 - }
852 -
853 -
854 - /**
855 - * edited 4.0
856 - *
857 - * Check if user is allowed to stream
858 - *
859 - * @since 3.7
860 - */
861 -
862 - public function wpstream_check_user_can_stream(){
863 - $current_user = wp_get_current_user();
864 -
865 - if( !is_user_logged_in() ){
866 - return false;
867 - exit('user not logged in');
868 - }
869 -
870 - if(current_user_can('administrator')){
871 - // admins can always brodcast
872 - return true;
873 - }
874 -
875 - $extra_roles = get_option( 'wpstream_stream_role', true );
876 - $user_role = '';
877 - if( is_array( $current_user->roles) && count( $current_user->roles ) > 0 ){
878 - $user_role = $current_user->roles[0];
879 - }
880 -
881 - if ( is_array($extra_roles) && in_array( $user_role, $extra_roles ) ) {
882 - return true;
883 - }
884 -
885 - if(function_exists('wpstream_get_option') && intval(wpstream_get_option('allow_streaming_regular_users',''))==1 ){
886 - return true;
887 - }
888 -
889 - return false;
890 - }
891 -
892 -
893 - /**
894 - * Start Streaming wrapper
895 - *
896 - * @since 3.7
897 - */
898 -
899 - public function wpstream_live_stream_unit_wrapper($item_id,$type){
900 - $item_id = intval($item_id);
901 -
902 - if($item_id == 0){
903 - //retrive or create channel for front end streamers
904 - $item_id=$this->wpstream_retrive_front_end_channel();
905 - }
906 - print'<div class="wpstream_modal_background"></div>';
907 - print '<div class="wpstream_error_modal_notification"><div class="wpstream_error_content">er2</div>
908 - <div class="wpstream_error_ok wpstream_button" type="button">'.esc_html__('Close','wpstream').'</div>
909 - </div>';
910 - $this->admin->wpstream_live_stream_unit( $item_id,$type );
911 - }
912 -
913 -
914 - /**
915 - * Start Streaming wrapper for wpstream theme
916 - *
917 - * @since 3.7
918 - */
919 -
920 - public function wpstream_live_stream_unit_wrapper_for_theme($item_id,$type){
921 - $item_id = intval($item_id);
922 -
923 - if($item_id == 0){
924 - //retrive or create channel for front end streamers
925 - $item_id=$this->wpstream_retrive_front_end_channel();
926 - }
927 - print'<div class="wpstream_modal_background"></div>';
928 - print '<div class="wpstream_error_modal_notification"><div class="wpstream_error_content">er2</div>
929 - <div class="wpstream_error_ok wpstream_button" type="button">'.esc_html__('Close','wpstream').'</div>
930 - </div>';
931 - $this->admin->wpstream_live_stream_unit_for_theme( $item_id,$type );
932 - }
933 -
934 -
935 - /**
936 - * retrive channel for front end streaming
937 - *
938 - * @since 3.7
939 - */
940 - public function wpstream_retrive_front_end_channel(){
941 -
942 - $current_user = wp_get_current_user();
943 - $channel_type = get_option ('wpstream_user_streaming_channel_type');
944 - $channel_price = floatval( get_option ('wpstream_user_streaming_default_price') );
945 -
946 - $front_end_streamin_channel = $this->wpstream_get_current_event_per_author($current_user->ID,$channel_type);
947 -
948 - if(intval($front_end_streamin_channel) == 0){
949 - $front_end_streamin_channel= $this->wpstrea_create_front_end_event($current_user->ID,$current_user->user_login ,$channel_type,$channel_price);
950 - }
951 - return $front_end_streamin_channel;
952 -
953 - }
954 -
955 - /**
956 - * create the event from front end
957 - *
958 - * @since 3.7
959 - */
960 -
961 - public function wpstrea_create_front_end_event($userID,$userLogin,$channel_type,$channel_price){
962 -
963 - if( !$this->wpstream_check_user_can_stream() ){
964 - return;
965 - }
966 -
967 - $post_type='wpstream_product';
968 - if($channel_type=='paid'){
969 - $post_type='product';
970 - }
971 -
972 - $post = array(
973 - 'post_title' => sprintf( esc_html__('%s Channel','wpstream'),$userLogin),
974 - 'post_content' => '',
975 - 'post_type' => $post_type ,
976 - 'post_author' => $userID,
977 - 'post_status' => 'publish',
978 - );
979 - $post_id = wp_insert_post($post );
980 - if($channel_type=='paid'){
981 - $product = wc_get_product($post_id);
982 - $price = wc_format_decimal($channel_price);
983 -
984 - $product = wc_get_product( $post_id );
985 - // Set the product active price (regular)
986 - $product->set_price( $price );
987 - $product->set_regular_price( $price ); // To be sure
988 - $product->save();
989 - update_post_meta ($post_id,'event_passed',0);
990 - wp_set_object_terms( $post_id, 'live_stream', 'product_type' );
991 - }
992 - update_post_meta($post_id,'wpstream_product_type',1);
993 -
994 - return $post_id;
995 - }
996 -
997 -
998 - public function wpstream_get_current_event_per_author($userID,$channel_type){
999 -
1000 - $post_type='wpstream_product';
1001 - if($channel_type=='paid'){
1002 - $post_type='product';
1003 - }
1004 -
1005 - $args = array(
1006 -
1007 - 'post_type' => $post_type,
1008 - 'author' => $userID,
1009 - 'posts_per_page' => 1,
1010 - 'fields' => 'ids'
1011 - )
1012 - ;
1013 - $author_posts = new WP_Query( $args );
1014 - if( $author_posts->have_posts() ) {
1015 - $author_posts->the_post();
1016 - $the_id= get_the_ID();
1017 - }else{
1018 - $the_id= 0;
1019 - }
1020 -
1021 - wp_reset_query();
1022 - wp_reset_postdata();
1023 - return $the_id;
1024 - }
1025 -
1026 - /**
1027 - * Cleanup old logs
1028 - */
1029 - public function cleanup_logs() {
1030 - $logger = new WPStream_Logger();
1031 - $logger->clear_old_logs();
1032 - }
1033 408 }