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

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

317 lines 9.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Plugin Name: WpStream - Live Streaming, Video on Demand, Pay Per View
4 * Plugin URI: http://wpstream.net
5 * Description: WpStream is a platform that allows you to live stream, create Video-on-Demand, and offer Pay-Per-View videos. We provide an affordable and user-friendly way for businesses, non-profits, and public institutions to broadcast their content and monetize their work.
6 * Version: 4.11
7 * Author: wpstream
8 * Author URI: http://wpstream.net
9 * Text Domain: wpstream
10 * Domain Path: /languages/
11 */
12
13 // If this file is called directly, abort.
14 if ( ! defined( 'WPINC' ) ) {
15 die;
16 }
17 define('WPSTREAM_PLUGIN_VERSION', '4.11');
18 define('WPSTREAM_CLUBLINK', 'wpstream.net');
19 define('WPSTREAM_CLUBLINKSSL', 'https');
20 define('WPSTREAM_PLUGIN_URL', plugins_url() );
21 define('WPSTREAM_PLUGIN_DIR_URL', plugin_dir_url(__FILE__) );
22 define('WPSTREAM_PLUGIN_PATH', plugin_dir_path(__FILE__) );
23 define('WPSTREAM_PLUGIN_BASE', plugin_basename(__FILE__) );
24 if( !defined('WPSTREAM_API' ) ) {
25 define('WPSTREAM_API', 'https://baker.wpstream.net');
26 }
27 if ( !defined( 'WPSTREAM_CLICK' ) ) {
28 define( 'WPSTREAM_CLICK', 'https://click.wpstream.net' );
29 }
30
31
32 define('WPSTREAM_TIMEOUT_CONST', 20); // in seconds
33
34 function wpstream_cleanup_logs_handler() {
35 $logger = new WpStream_Logger();
36 $logger->clear_old_logs();
37 }
38 add_action('wpstream_log_cleanup', 'wpstream_cleanup_logs_handler');
39
40 /**
41 * The code that runs during plugin activation.
42 * This action is documented in includes/class-wpstream-activator.php
43 */
44 function activate_wpstream() {
45 require_once plugin_dir_path( __FILE__ ) . 'includes/class-wpstream-activator.php';
46 Wpstream_Activator::activate();
47
48 if( !wp_next_scheduled( 'wpstream_log_cleanup' ) ) {
49 wp_schedule_event( time(), 'daily', 'wpstream_log_cleanup' );
50 }
51 }
52
53 /**
54 * The code that runs during plugin deactivation.
55 * This action is documented in includes/class-wpstream-deactivator.php
56 */
57 function deactivate_wpstream() {
58 require_once plugin_dir_path( __FILE__ ) . 'includes/class-wpstream-deactivator.php';
59 Wpstream_Deactivator::deactivate();
60
61 wp_clear_scheduled_hook( 'wpstream_log_cleanup' );
62 }
63
64 register_activation_hook( __FILE__, 'activate_wpstream' );
65 register_deactivation_hook( __FILE__, 'deactivate_wpstream' );
66
67 /**
68 * Wrapper function for wpstream_dashboard_save_channel_data to be called from theme
69 * This provides backward compatibility for the theme
70 */
71 function wpstream_dashboard_save_channel_data_plugin() {
72 global $wpstream_plugin;
73 if (isset($wpstream_plugin) && isset($wpstream_plugin->wpstream_ajax)) {
74 $wpstream_plugin->wpstream_ajax->wpstream_dashboard_save_channel_data();
75 }
76 }
77
78 /**
79 * The core plugin class that is used to define internationalization,
80 * admin-specific hooks, and public-facing site hooks.
81 */
82 require plugin_dir_path( __FILE__ ) . 'includes/class-wpstream.php';
83 require plugin_dir_path( __FILE__ ) . 'wpstream-elementor.php';
84 require plugin_dir_path( __FILE__ ) . 'streamify/streamify.php';
85
86 require plugin_dir_path( __FILE__ ) . 'integrations/integrations.php';
87
88 function wpstream_load_theme_functionality() {
89 define ('WPSTREAM_FRAMEWORK_BASE', plugin_dir_path(__FILE__) . 'hello-wpstream' );
90
91 $core_files = array(
92 '/framework/metaboxes.php',
93 '/framework/query-functions.php',
94 '/framework/wpstream-video-functions.php',
95 '/framework/ajax-functions.php',
96 '/framework/dashboard-functions.php',
97 '/framework/wpstream-help-functions.php',
98 '/framework/video-pages-functions.php',
99 '/framework/comments-functions.php',
100 '/framework/gallery-functions.php',
101 '/framework/shortcodes-functions.php',
102 '/framework/post-types/main.php',
103 '/framework/woocommerce-functions.php',
104 '/framework/ajax-upload.php',
105 '/framework/email-functions.php',
106 '/framework/widgets/class-wpstream-widget-manager.php',
107 '/framework/classes/class-wpstream-login-register.php',
108 '/framework/classes/class-wpstream_theme-social-login.php',
109 );
110
111 // Load core files
112 foreach ( $core_files as $file ) {
113 $file_path = WPSTREAM_FRAMEWORK_BASE . $file;
114 if ( file_exists( $file_path ) ) {
115 require_once $file_path;
116 } else {
117 error_log( 'Missing required file: ' . $file_path );
118 }
119 }
120
121 // Load Elementor integration if the plugin is active
122 if ( defined( 'ELEMENTOR_VERSION' ) ) {
123
124 $elementor_files = array(
125 '/elementor/functions/blog_functions.php',
126 '/elementor/wpstream-elementor.php'
127 );
128
129 foreach ( $elementor_files as $file ) {
130 $file_path = WPSTREAM_FRAMEWORK_BASE . $file;
131 if ( file_exists( $file_path ) ) {
132 require_once $file_path;
133 } else {
134 error_log( 'Missing required file: ' . $file_path );
135 }
136 }
137 }
138 }
139
140 add_action( 'after_setup_theme', 'wpstream_load_theme_functionality' );
141
142 /**
143 * Load js for players
144 *
145 * @return void
146 */
147 if ( ! function_exists( 'wpstream_load_player_js_on_demand' ) ) {
148 function wpstream_load_player_js_on_demand()
149 {
150 $wpstream_unit_card_use_video = get_theme_mod('wpstream_unit_card_use_video');
151 if ($wpstream_unit_card_use_video) {
152 wp_enqueue_script('video.min');
153 wp_enqueue_script('wpstream-player');
154 }
155
156 }
157 }
158
159 /**
160 * Begins execution of the plugin.
161 *
162 * Since everything within the plugin is registered via hooks,
163 * then kicking off the plugin from this point in the file does
164 * not affect the page life cycle.
165 *
166 * @since 3.0.1
167 */
168
169 global $wpstream_plugin;
170 $wpstream_plugin = new Wpstream();
171 $wpstream_plugin->run();
172
173 add_action( 'upgrader_process_complete', 'wpstream_my_upgrate_function',10, 2);
174
175 function wpstream_my_upgrate_function( $upgrader_object, $options ) {
176
177
178 $current_plugin_path_name = plugin_basename( __FILE__ );
179
180 if ($options['action'] == 'update' && $options['type'] == 'plugin' ) {
181 if(is_array($options)):
182 foreach($options['plugins'] as $each_plugin) {
183 if ($each_plugin==$current_plugin_path_name) {
184 delete_transient('wpstream_token_api');
185 update_option('wp_estate_token_expire',0);
186 update_option('wp_estate_curent_token',' ');
187
188 }
189 }
190 endif;
191 }
192
193
194 }
195
196
197
198 add_action('wp_head', 'wpstream_add_custom_meta_to_header');
199
200 function wpstream_add_custom_meta_to_header(){
201 global $post;
202
203
204 if ( is_singular('product') || is_singular('wpstream_product') || is_singular('wpstream_product_vod') ){
205 $image_id = get_post_thumbnail_id();
206 $share_img = wp_get_attachment_image_src( $image_id, 'full');
207 $the_post = get_post($post->ID); ?>
208
209 <meta property='og:title' content="<?php print esc_html(get_the_title($post->ID)); ?>"/>
210 <?php if(isset($share_img[0])){ ?>
211 <meta property="og:image" content="<?php print esc_url($share_img[0]); ?>"/>
212 <meta property="og:image:secure_url" content="<?php print esc_url($share_img[0]); ?>" />
213 <?php }?>
214
215 <meta property="og:description" content=" <?php print wp_strip_all_tags( $the_post->post_content);?>" />
216 <?php }
217
218
219 }
220
221
222 /*
223 *
224 * Check integrations
225 *
226 */
227 require_once plugin_dir_path(__FILE__) . 'integrations/hello-wpstream/theme-import.php';
228 add_filter('pt-ocdi/import_files', 'ocdi_import_files');
229 add_action('pt-ocdi/after_import', 'ocdi_after_import_setup');
230 add_filter('pt-ocdi/plugin_intro_text', 'ocdi_plugin_intro_text');
231
232
233 add_action( 'plugins_loaded', 'wpstream_check_integrations' );
234
235
236 /*
237 *
238 * Redirect on plugin activation
239 *
240 */
241
242 function wpstream_activation_redirect( $plugin ) {
243 if( $plugin == plugin_basename( __FILE__ ) ) {
244 exit( wp_redirect( admin_url( 'admin.php?page=wpstream_onboard' ) ) );
245 }
246 }
247 add_action( 'activated_plugin', 'wpstream_activation_redirect' );
248
249
250
251 /*
252 *
253 * remove the style selectWoo for the theme
254 *
255 */
256 if ( function_exists( 'wpstream_get_author_id' ) ) {
257 // only if wpstream-theme is activated
258
259 remove_filter( 'pre_user_description', 'wp_filter_kses' ); // Removes the filter that applies KSES filtering for user descriptions
260 remove_filter( 'term_description', 'wp_kses_data' ); // Removes the filter that applies KSES data filtering for term descriptions
261
262 if ( ! function_exists( 'wsis_dequeue_stylesandscripts_select2' ) ) {
263 add_action( 'wp_enqueue_scripts', 'wsis_dequeue_stylesandscripts_select2', 100 );
264 /**
265 * Remove CSS and/or JS for Select2 used by WooCommerce
266 */
267 function wsis_dequeue_stylesandscripts_select2() {
268 if ( class_exists( 'woocommerce' ) ) {
269 wp_dequeue_style( 'selectWoo' );
270 wp_deregister_style( 'selectWoo' );
271
272 wp_dequeue_script( 'selectWoo' );
273 wp_deregister_script( 'selectWoo' );
274 }
275 }
276 }
277 }
278
279 /**
280 * Register broadcaster page endpoint
281 */
282 function wpstream_register_broadcaster_endpoint() {
283 add_rewrite_tag('%broadcaster_page%', '([0-1]{1})');
284 add_rewrite_tag('%channel_id%', '([0-9]+)');
285
286 $rewrite_rules = get_option('rewrite_rules');
287 $rule_pattern = 'broadcaster-page/([0-9]+)/?$';
288 $rule_target = 'index.php?broadcaster_page=1&channel_id=$matches[1]';
289
290 add_rewrite_rule($rule_pattern, $rule_target, 'top');
291 if ( !is_array($rewrite_rules) || !key_exists( $rule_pattern, $rewrite_rules ) ) {
292 flush_rewrite_rules();
293 }
294 }
295 add_action('init', 'wpstream_register_broadcaster_endpoint');
296
297 /**
298 * Load broadcaster template when the custom endpoint is accessed
299 */
300 function wpstream_load_broadcaster_template($template) {
301 if (get_query_var('broadcaster_page') == 1) {
302 // Return the path to our broadcaster template
303 return plugin_dir_path(__FILE__) . 'templates/broadcaster-template.php';
304 }
305 return $template;
306 }
307 add_filter('template_include', 'wpstream_load_broadcaster_template');
308
309 /**
310 * Flush rewrite rules on plugin activation to ensure our endpoint works
311 */
312 function wpstream_flush_rewrite_rules() {
313 wpstream_register_broadcaster_endpoint();
314 flush_rewrite_rules();
315 }
316 register_activation_hook(__FILE__, 'wpstream_flush_rewrite_rules');
317