PluginProbe
WpStream – Live Streaming, Video on Demand, Pay Per View / 4.12.3
WpStream – Live Streaming, Video on Demand, Pay Per View v4.12.3
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.12.3, at wpstream.php

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