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

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