PluginProbe ʕ •ᴥ•ʔ
EmbedPress – PDF Embedder, 3D PDF FlipBook, Google Reviews, YouTube Videos, Upload & Embed PDF documents / 3.1.3
EmbedPress – PDF Embedder, 3D PDF FlipBook, Google Reviews, YouTube Videos, Upload & Embed PDF documents v3.1.3
4.6.5 4.6.4 4.6.3 4.6.2 4.6.1 4.6.0 4.5.6 4.5.5 4.5.4 4.5.3 4.5.2 trunk 1.0.0 1.1.0 1.1.1 1.1.2 1.1.3 1.2.0 1.3.0 1.3.1 1.4.0 1.4.1 1.4.2 1.4.3 1.4.4 1.5.0 1.6.0 1.6.1 1.6.2 1.6.3 1.7.0 1.7.1 1.7.2 1.7.3 1.7.4 1.7.5 2.0.0 2.0.1 2.0.2 2.0.3 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.2.0 2.2.1 2.2.2 2.3.0 2.3.1 2.3.2 2.3.3 2.4.0 2.4.1 2.5.0 2.5.1 2.5.2 2.5.3 2.5.4 2.5.5 2.6.0 2.6.1 2.6.2 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.7.6 2.7.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.1.3 3.2.0 3.2.1 3.3.0 3.3.1 3.3.2 3.3.3 3.3.4 3.3.5 3.3.6 3.3.7 3.4.0 3.4.1 3.4.2 3.4.3 3.5.0 3.5.1 3.5.2 3.5.3 3.6.0 3.6.1 3.6.2 3.6.3 3.6.4 3.6.5 3.6.6 3.6.7 3.6.8 3.7.0 3.7.1 3.7.2 3.7.3 3.8.0 3.8.1 3.8.2 3.8.3 3.8.4 3.8.5 3.9.0 3.9.1 3.9.10 3.9.11 3.9.12 3.9.13 3.9.14 3.9.15 3.9.16 3.9.17 3.9.2 3.9.3 3.9.4 3.9.5 3.9.6 3.9.7 3.9.8 3.9.9 4.0.0 4.0.1 4.0.10 4.0.11 4.0.12 4.0.13 4.0.14 4.0.2 4.0.3 4.0.4 4.0.5 4.0.6 4.0.7 4.0.8 4.0.9 4.1.0 4.1.1 4.1.10 4.1.2 4.1.3 4.1.4 4.1.5 4.1.6 4.1.7 4.1.8 4.1.9 4.2.0 4.2.1 4.2.2 4.2.3 4.2.4 4.2.5 4.2.6 4.2.7 4.2.8 4.2.9 4.3.0 4.3.1 4.4.0 4.4.1 4.4.10 4.4.11 4.4.2 4.4.3 4.4.4 4.4.5 4.4.6 4.4.7 4.4.8 4.4.9 4.5.0 4.5.1
embedpress / EmbedPress / Ends / Back / Settings / EmbedpressSettings.php
embedpress / EmbedPress / Ends / Back / Settings Last commit date
assets 5 years ago templates 4 years ago EmbedpressSettings.php 5 years ago
EmbedpressSettings.php
328 lines
1 <?php
2 namespace EmbedPress\Ends\Back\Settings;
3
4 class EmbedpressSettings {
5 var $page_slug = '';
6 /**
7 * @var int|string
8 */
9 protected $file_version;
10
11 public function __construct($page_slug = 'embedpress') {
12 $this->page_slug = $page_slug;
13 $this->file_version = defined( 'WP_DEBUG') && WP_DEBUG ? time() : EMBEDPRESS_VERSION;
14 add_action('admin_enqueue_scripts', [$this, 'handle_scripts_and_styles']);
15 add_action('admin_menu', [$this, 'register_menu']);
16 add_action( 'init', [$this, 'save_settings']);
17
18 // ajax
19 add_action( 'wp_ajax_embedpress_elements_action', [$this, 'update_elements_list']);
20 add_action( 'wp_ajax_embedpress_settings_action', [$this, 'save_settings']);
21
22 // Migration
23 $option = 'embedpress_elements_updated'; // to update initially for backward compatibility
24 if ( !get_option( $option, false) ) {
25 $elements_initial_states = [
26 'gutenberg' => [
27 'google-docs-block' => 'google-docs-block',
28 'document' => 'document',
29 'embedpress' => 'embedpress',
30 'google-sheets-block' => 'google-sheets-block',
31 'google-slides-block' => 'google-slides-block',
32 'youtube-block' => 'youtube-block',
33 'google-forms-block' => 'google-forms-block',
34 'google-drawings-block' => 'google-drawings-block',
35 'google-maps-block' => 'google-maps-block',
36 'twitch-block' => 'twitch-block',
37 'wistia-block' => 'wistia-block',
38 'vimeo-block' => 'vimeo-block',
39 ],
40 'elementor' => [
41 'embedpress-document' => 'embedpress-document',
42 'embedpress' => 'embedpress',
43 ]
44 ];
45
46 $settings = get_option( EMBEDPRESS_PLG_NAME, [] );
47 $yt = get_option( EMBEDPRESS_PLG_NAME.':youtube' );
48 if ( empty( $settings) && empty( $yt) ) {
49 $settings['need_first_time_redirect'] = true;
50 }
51 if ( !isset( $settings['enablePluginInAdmin']) ) {
52 $settings['enablePluginInAdmin'] = 1;
53 }
54 if ( !isset( $settings['enablePluginInFront']) ) {
55 $settings['enablePluginInFront'] = 1;
56 }
57
58 update_option( EMBEDPRESS_PLG_NAME.":elements", $elements_initial_states);
59 update_option( EMBEDPRESS_PLG_NAME, $settings);
60 update_option( $option, true);
61 }
62 add_action( 'admin_init', [$this, 'embedpress_maybe_redirect_to_settings'] );
63
64
65 }
66 function embedpress_maybe_redirect_to_settings() {
67 $settings = get_option( EMBEDPRESS_PLG_NAME, [] );
68 if ( isset( $settings['need_first_time_redirect']) && $settings['need_first_time_redirect'] ) {
69 if ( get_option( 'embedpress_activation_redirect_done' ) || wp_doing_ajax() ) {
70 return;
71 }
72
73
74 update_option( 'embedpress_activation_redirect_done', true );
75 $settings['need_first_time_redirect'] = false;
76 update_option( EMBEDPRESS_PLG_NAME, $settings);
77
78 if ( is_network_admin() || isset( $_GET['activate-multi'] ) ) {
79 return;
80 }
81
82 wp_safe_redirect( admin_url('admin.php?page='.$this->page_slug) );
83 exit;
84 }
85
86 }
87 public function update_elements_list() {
88 if ( !empty($_POST['_wpnonce'] && wp_verify_nonce( $_POST['_wpnonce'], 'embedpress_elements_action')) ) {
89 $option = EMBEDPRESS_PLG_NAME.":elements";
90 $elements = (array) get_option( $option, []);
91 $settings = (array) get_option( EMBEDPRESS_PLG_NAME, []);
92
93 $type = !empty( $_POST['element_type']) ? sanitize_text_field( $_POST['element_type']) : '';
94 $name = !empty( $_POST['element_name']) ? sanitize_text_field( $_POST['element_name']) : '';
95 $checked = !empty( $_POST['checked']) ? $_POST['checked'] : false;
96 if ( 'false' != $checked ) {
97 $elements[$type][$name] = $name;
98 if ( $type === 'classic' ) {
99 $settings[$name] = 1;
100 }
101 }else{
102 if( isset( $elements[$type]) && isset( $elements[$type][$name])){
103 unset( $elements[$type][$name]);
104 }
105 if ( $type === 'classic' ) {
106 $settings[$name] = 0;
107 }
108 }
109 update_option( EMBEDPRESS_PLG_NAME, $settings);
110 update_option( $option, $elements);
111 wp_send_json_success();
112 }
113 wp_send_json_error();
114 }
115
116 public function register_menu() {
117 add_menu_page( __('EmbedPress Settings', 'embedpress'), 'EmbedPress', 'manage_options', $this->page_slug,
118 [ $this, 'render_settings_page' ], EMBEDPRESS_URL_ASSETS.'images/menu-icon.svg', 64 );
119
120 }
121
122 public function handle_scripts_and_styles() {
123 if ( !empty( $_REQUEST['page']) && $this->page_slug === $_REQUEST['page'] ) {
124 $this->enqueue_styles();
125 $this->enqueue_scripts();
126 }
127 }
128
129 public function enqueue_scripts() {
130 if ( !did_action( 'wp_enqueue_media') ) {
131 wp_enqueue_media();
132 }
133 wp_register_script( 'ep-settings-script', EMBEDPRESS_SETTINGS_ASSETS_URL.'js/settings.js', ['jquery', 'wp-color-picker' ], $this->file_version, true );
134 wp_enqueue_script( 'ep-settings', EMBEDPRESS_URL_ASSETS . 'js/settings.js', ['jquery', 'wp-color-picker' ], $this->file_version, true );
135 wp_localize_script( 'ep-settings-script', 'embedpressObj', array(
136 'nonce' => wp_create_nonce('embedpress_elements_action'),
137 ) );
138
139 wp_enqueue_script( 'ep-settings-script');
140 }
141
142 public function enqueue_styles() {
143 wp_enqueue_style( 'ep-settings-style', EMBEDPRESS_SETTINGS_ASSETS_URL.'css/style.css', null, $this->file_version );
144 wp_enqueue_style( 'ep-settings-icon-style', EMBEDPRESS_SETTINGS_ASSETS_URL.'css/icon/style.css', null, $this->file_version );
145 wp_enqueue_style( 'wp-color-picker' );
146
147 }
148
149 public function render_settings_page( ) {
150 global $template, $page_slug, $nonce_field, $ep_page, $gen_menu_template_names, $brand_menu_template_names, $pro_active, $coming_soon, $success_message, $error_message, $platform_menu_template_names;
151
152 $page_slug = $this->page_slug; // make this available for included template
153 $template = !empty( $_GET['page_type'] ) ? sanitize_text_field( $_GET['page_type']) : 'general';
154 $nonce_field = wp_nonce_field('ep_settings_nonce', 'ep_settings_nonce', true, false);
155 $ep_page = admin_url('admin.php?page='.$this->page_slug);
156 $gen_menu_template_names = apply_filters('ep_general_menu_tmpl_names', ['general', 'shortcode',]);
157 $platform_menu_template_names = apply_filters('ep_platform_menu_tmpl_names', [ 'youtube', 'vimeo', 'wistia', 'twitch','dailymotion', 'soundcloud' ,'spotify']);
158 $brand_menu_template_names = apply_filters('ep_brand_menu_templates', ['custom-logo', 'branding',]);
159 $pro_active = is_embedpress_pro_active();
160 $coming_soon = "<span class='ep-coming-soon'>". esc_html__( '(Coming soon)', 'embedpress'). "</span>";
161 $success_message = esc_html__( "Settings Updated", "embedpress" );
162 $error_message = esc_html__( "Ops! Something went wrong.", "embedpress" );
163 include_once EMBEDPRESS_SETTINGS_PATH . 'templates/main-template.php';
164 }
165
166 public function save_settings() {
167 // needs to check for ajax and return response accordingly.
168 if ( !empty( $_POST['ep_settings_nonce']) && wp_verify_nonce( $_POST['ep_settings_nonce'], 'ep_settings_nonce') ) {
169 $submit_type = !empty( $_POST['submit'] ) ? $_POST['submit'] : '';
170 $save_handler_method = "save_{$submit_type}_settings";
171 do_action( "before_{$save_handler_method}");
172 do_action( "before_embedpress_settings_save");
173 if ( method_exists( $this, $save_handler_method ) ) {
174 $this->$save_handler_method();
175 }
176 do_action( "after_embedpress_settings_save");
177 $return_url = isset( $_SERVER['HTTP_REFERER'] ) ? $_SERVER['HTTP_REFERER'] : admin_url();
178 $return_url = add_query_arg( 'success', 1, $return_url );
179 if ( wp_doing_ajax() ) {
180 wp_send_json_success();
181 }
182 wp_safe_redirect( $return_url);
183 exit();
184 }
185 }
186
187 public function save_general_settings() {
188 $settings = (array) get_option( EMBEDPRESS_PLG_NAME, []);
189 $settings ['enableEmbedResizeWidth'] = isset( $_POST['enableEmbedResizeWidth']) ? intval( $_POST['enableEmbedResizeWidth']) : 600;
190 $settings ['enableEmbedResizeHeight'] = isset( $_POST['enableEmbedResizeHeight']) ? intval( $_POST['enableEmbedResizeHeight']) : 550;
191
192 // Pro will handle g_loading_animation settings and other
193 $settings = apply_filters( 'ep_general_settings_before_save', $settings, $_POST);
194
195 update_option( EMBEDPRESS_PLG_NAME, $settings);
196 do_action( 'ep_general_settings_after_save', $settings, $_POST);
197 }
198
199 public function save_youtube_settings() {
200 $option_name = EMBEDPRESS_PLG_NAME.':youtube';
201 $settings = get_option( $option_name, []);
202 $settings['start_time'] = isset( $_POST['start_time']) ? sanitize_text_field( $_POST['start_time']) : 0;
203 $settings['end_time'] = isset( $_POST['end_time']) ? sanitize_text_field( $_POST['end_time']) : 0;
204 $settings['autoplay'] = isset( $_POST['autoplay']) ? sanitize_text_field( $_POST['autoplay']) : '';
205 $settings['controls'] = isset( $_POST['controls']) ? sanitize_text_field( $_POST['controls']) : '';
206 $settings['fs'] = isset( $_POST['fs']) ? sanitize_text_field( $_POST['fs']) : '';
207 $settings['iv_load_policy'] = isset( $_POST['iv_load_policy']) ? sanitize_text_field( $_POST['iv_load_policy']) : 1;
208 $settings['color'] = isset( $_POST['color']) ? sanitize_text_field( $_POST['color']) : 'red';
209 $settings['rel'] = isset( $_POST['rel']) ? sanitize_text_field( $_POST['rel']) : 1;
210 $settings['license_key'] = 1; // backward compatibility
211
212 // Pro will handle g_loading_animation settings and other
213 $settings = apply_filters( 'ep_youtube_settings_before_save', $settings);
214 update_option( $option_name, $settings);
215 do_action( 'ep_youtube_settings_after_save', $settings);
216
217 }
218
219 public function save_wistia_settings() {
220 $option_name = EMBEDPRESS_PLG_NAME.':wistia';
221 $settings = get_option( $option_name, []);
222 $settings['start_time'] = isset( $_POST['start_time']) ? sanitize_text_field( $_POST['start_time']) : 0;
223 $settings['autoplay'] = isset( $_POST['autoplay']) ? sanitize_text_field( $_POST['autoplay']) : '';
224 $settings['display_fullscreen_button'] = isset( $_POST['display_fullscreen_button']) ? sanitize_text_field( $_POST['display_fullscreen_button']) : '';
225 $settings['small_play_button'] = isset( $_POST['small_play_button']) ? sanitize_text_field( $_POST['small_play_button']) : '';
226 $settings['player_color'] = isset( $_POST['player_color']) ? sanitize_text_field( $_POST['player_color']) : '';
227 $settings['plugin_resumable'] = isset( $_POST['plugin_resumable']) ? sanitize_text_field( $_POST['plugin_resumable']) : '';
228 $settings['plugin_focus'] = isset( $_POST['plugin_focus']) ? sanitize_text_field( $_POST['plugin_focus']) : '';
229 $settings['plugin_rewind'] = isset( $_POST['plugin_rewind']) ? sanitize_text_field( $_POST['plugin_rewind']) : '';
230 $settings['display_playbar'] = isset( $_POST['display_playbar']) ? sanitize_text_field( $_POST['display_playbar']) : 1;
231 $settings['plugin_rewind_time'] = isset( $_POST['plugin_rewind_time']) ? sanitize_text_field( $_POST['plugin_rewind_time']) : 10;
232 $settings['license_key'] = 1; // backward compatibility
233 // Pro will handle g_loading_animation settings and other
234 $settings = apply_filters( 'ep_wistia_settings_before_save', $settings);
235 update_option( $option_name, $settings);
236 do_action( 'ep_wistia_settings_after_save', $settings);
237 }
238
239 public function save_vimeo_settings() {
240 $option_name = EMBEDPRESS_PLG_NAME.':vimeo';
241 $settings = get_option( $option_name, []);
242 $settings['start_time'] = isset( $_POST['start_time']) ? sanitize_text_field( $_POST['start_time']) : 0;
243 $settings['autoplay'] = isset( $_POST['autoplay']) ? sanitize_text_field( $_POST['autoplay']) : '';
244 $settings['color'] = isset( $_POST['color']) ? sanitize_text_field( $_POST['color']) : '#00adef';
245 $settings['display_title'] = isset( $_POST['display_title']) ? sanitize_text_field( $_POST['display_title']) : 1;
246 $settings['display_author'] = isset( $_POST['display_author']) ? sanitize_text_field( $_POST['display_author']) : 1;
247 $settings['display_avatar'] = isset( $_POST['display_avatar']) ? sanitize_text_field( $_POST['display_avatar']) : 1;
248 $settings['license_key'] = 1; // backward compatibility
249 // Pro will handle g_loading_animation settings and other
250 $settings = apply_filters( 'ep_vimeo_settings_before_save', $settings);
251 update_option( $option_name, $settings);
252 do_action( 'ep_vimeo_settings_after_save', $settings);
253 }
254
255 public function save_twitch_settings() {
256 $option_name = EMBEDPRESS_PLG_NAME.':twitch';
257 $settings = get_option( $option_name, []);
258 $settings['embedpress_pro_twitch_autoplay'] = isset( $_POST['autoplay']) ? sanitize_text_field( $_POST['autoplay']) : 'no';
259 $settings['embedpress_pro_fs'] = isset( $_POST['fs']) ? sanitize_text_field( $_POST['fs']) : 'yes';
260 $settings['start_time'] = isset( $_POST['start_time']) ? sanitize_text_field( $_POST['start_time']) : 0;
261 $settings['embedpress_pro_twitch_theme'] = isset( $_POST['theme']) ? sanitize_text_field( $_POST['theme']) : 'dark';
262 $settings['embedpress_pro_twitch_mute'] = isset( $_POST['mute']) ? sanitize_text_field( $_POST['mute']) : 'yes';
263 $settings['license_key'] = 1; // backward compatibility
264 // Pro will handle g_loading_animation settings and other
265 $settings = apply_filters( 'ep_twitch_settings_before_save', $settings);
266 update_option( $option_name, $settings);
267 do_action( 'ep_twitch_settings_after_save', $settings);
268 }
269
270 public function save_spotify_settings() {
271 $option_name = EMBEDPRESS_PLG_NAME.':spotify';
272 $settings = get_option( $option_name, []);
273 $settings['theme'] = isset( $_POST['spotify_theme']) ? sanitize_text_field( $_POST['spotify_theme']) : '1';
274 $settings['license_key'] = 1; // backward compatibility
275
276 // Pro will handle g_loading_animation settings and other
277 $settings = apply_filters( 'ep_spotify_settings_before_save', $settings);
278 update_option( $option_name, $settings);
279 do_action( 'ep_spotify_settings_after_save', $settings);
280 return $settings;
281 }
282
283 public function save_custom_logo_settings() {
284 do_action( 'before_embedpress_branding_save');
285 $settings = (array) get_option( EMBEDPRESS_PLG_NAME, []);
286 $settings['embedpress_document_powered_by'] = isset( $_POST['embedpress_document_powered_by']) ? sanitize_text_field( $_POST['embedpress_document_powered_by']) : 'no';
287 update_option( EMBEDPRESS_PLG_NAME, $settings);
288 do_action( 'after_embedpress_branding_save');
289
290 }
291
292 public function save_dailymotion_settings() {
293 $option_name = EMBEDPRESS_PLG_NAME.':dailymotion';
294 $settings = get_option( $option_name, []);
295 $settings['start_time'] = isset( $_POST['start_time']) ? sanitize_text_field( $_POST['start_time']) : 0;
296 $settings['visual'] = isset( $_POST['visual']) ? sanitize_text_field( $_POST['visual']) : '';
297 $settings['autoplay'] = isset( $_POST['autoplay']) ? sanitize_text_field( $_POST['autoplay']) : '';
298 $settings['play_on_mobile'] = isset( $_POST['play_on_mobile']) ? sanitize_text_field( $_POST['play_on_mobile']) : '';
299 $settings['color'] = isset( $_POST['color']) ? sanitize_text_field( $_POST['color']) : '#dd3333';
300 $settings['controls'] = isset( $_POST['controls']) ? sanitize_text_field( $_POST['controls']) : '';
301 $settings['video_info'] = isset( $_POST['video_info']) ? sanitize_text_field( $_POST['video_info']) : '';
302 $settings['mute'] = isset( $_POST['mute']) ? sanitize_text_field( $_POST['mute']) : '';
303 // Pro will handle g_loading_animation settings and other
304 $settings = apply_filters( 'ep_dailymotion_settings_before_save', $settings);
305 update_option( $option_name, $settings);
306 do_action( 'ep_dailymotion_settings_after_save', $settings);
307 }
308
309 public function save_soundcloud_settings() {
310 $option_name = EMBEDPRESS_PLG_NAME.':soundcloud';
311 $settings = get_option( $option_name, []);
312 $settings['visual'] = isset( $_POST['visual']) ? sanitize_text_field( $_POST['visual']) : '';
313 $settings['autoplay'] = isset( $_POST['autoplay']) ? sanitize_text_field( $_POST['autoplay']) : '';
314 $settings['play_on_mobile'] = isset( $_POST['play_on_mobile']) ? sanitize_text_field( $_POST['play_on_mobile']) : '';
315 $settings['share_button'] = isset( $_POST['share_button']) ? sanitize_text_field( $_POST['share_button']) : '';
316 $settings['comments'] = isset( $_POST['comments']) ? sanitize_text_field( $_POST['comments']) : '';
317 $settings['color'] = isset( $_POST['color']) ? sanitize_text_field( $_POST['color']) : '';
318 $settings['artwork'] = isset( $_POST['artwork']) ? sanitize_text_field( $_POST['artwork']) : '';
319 $settings['play_count'] = isset( $_POST['play_count']) ? sanitize_text_field( $_POST['play_count']) : '';
320 $settings['username'] = isset( $_POST['username']) ? sanitize_text_field( $_POST['username']) : '';
321
322 $settings['license_key'] = 1; // backward compatibility
323 // Pro will handle g_loading_animation settings and other
324 $settings = apply_filters( 'ep_soundcloud_settings_before_save', $settings);
325 update_option( $option_name, $settings);
326 do_action( 'ep_soundcloud_settings_after_save', $settings);
327 }
328 }