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

318 lines 9.9 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.4
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.4');
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 add_action('ocdi/before_content_import', 'wpstream_track_ocdi_import_attempt', 10, 1);
232
233
234 add_action( 'plugins_loaded', 'wpstream_check_integrations' );
235
236
237 /*
238 *
239 * Redirect on plugin activation
240 *
241 */
242
243 function wpstream_activation_redirect( $plugin ) {
244 if( $plugin == plugin_basename( __FILE__ ) ) {
245 exit( wp_redirect( admin_url( 'admin.php?page=wpstream_onboard' ) ) );
246 }
247 }
248 add_action( 'activated_plugin', 'wpstream_activation_redirect' );
249
250
251
252 /*
253 *
254 * remove the style selectWoo for the theme
255 *
256 */
257 if ( function_exists( 'wpstream_get_author_id' ) ) {
258 // only if wpstream-theme is activated
259
260 remove_filter( 'pre_user_description', 'wp_filter_kses' ); // Removes the filter that applies KSES filtering for user descriptions
261 remove_filter( 'term_description', 'wp_kses_data' ); // Removes the filter that applies KSES data filtering for term descriptions
262
263 if ( ! function_exists( 'wsis_dequeue_stylesandscripts_select2' ) ) {
264 add_action( 'wp_enqueue_scripts', 'wsis_dequeue_stylesandscripts_select2', 100 );
265 /**
266 * Remove CSS and/or JS for Select2 used by WooCommerce
267 */
268 function wsis_dequeue_stylesandscripts_select2() {
269 if ( class_exists( 'woocommerce' ) ) {
270 wp_dequeue_style( 'selectWoo' );
271 wp_deregister_style( 'selectWoo' );
272
273 wp_dequeue_script( 'selectWoo' );
274 wp_deregister_script( 'selectWoo' );
275 }
276 }
277 }
278 }
279
280 /**
281 * Register broadcaster page endpoint
282 */
283 function wpstream_register_broadcaster_endpoint() {
284 add_rewrite_tag('%broadcaster_page%', '([0-1]{1})');
285 add_rewrite_tag('%channel_id%', '([0-9]+)');
286
287 $rewrite_rules = get_option('rewrite_rules');
288 $rule_pattern = 'broadcaster-page/([0-9]+)/?$';
289 $rule_target = 'index.php?broadcaster_page=1&channel_id=$matches[1]';
290
291 add_rewrite_rule($rule_pattern, $rule_target, 'top');
292 if ( !is_array($rewrite_rules) || !key_exists( $rule_pattern, $rewrite_rules ) ) {
293 flush_rewrite_rules();
294 }
295 }
296 add_action('init', 'wpstream_register_broadcaster_endpoint');
297
298 /**
299 * Load broadcaster template when the custom endpoint is accessed
300 */
301 function wpstream_load_broadcaster_template($template) {
302 if (get_query_var('broadcaster_page') == 1) {
303 // Return the path to our broadcaster template
304 return plugin_dir_path(__FILE__) . 'templates/broadcaster-template.php';
305 }
306 return $template;
307 }
308 add_filter('template_include', 'wpstream_load_broadcaster_template');
309
310 /**
311 * Flush rewrite rules on plugin activation to ensure our endpoint works
312 */
313 function wpstream_flush_rewrite_rules() {
314 wpstream_register_broadcaster_endpoint();
315 flush_rewrite_rules();
316 }
317 register_activation_hook(__FILE__, 'wpstream_flush_rewrite_rules');
318