PluginProbe ʕ •ᴥ•ʔ
EmbedPress – PDF Embedder, 3D PDF FlipBook, Google Reviews, YouTube Videos, Upload & Embed PDF documents / 4.0.2
EmbedPress – PDF Embedder, 3D PDF FlipBook, Google Reviews, YouTube Videos, Upload & Embed PDF documents v4.0.2
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 2 years ago templates 2 years ago EmbedpressSettings.php 2 years ago
EmbedpressSettings.php
395 lines
1 <?php
2 namespace EmbedPress\Ends\Back\Settings;
3
4 use EmbedPress\Includes\Classes\Helper;
5
6 class EmbedpressSettings {
7 var $page_slug = '';
8 /**
9 * @var int|string
10 */
11 protected $file_version;
12
13 public function __construct($page_slug = 'embedpress') {
14 $this->page_slug = $page_slug;
15 $this->file_version = defined( 'WP_DEBUG') && WP_DEBUG ? time() : EMBEDPRESS_VERSION;
16 add_action('admin_enqueue_scripts', [$this, 'handle_scripts_and_styles']);
17 add_action('admin_menu', [$this, 'register_menu']);
18 add_action( 'init', [$this, 'save_settings']);
19
20 // ajax
21 add_action( 'wp_ajax_embedpress_elements_action', [$this, 'update_elements_list']);
22 add_action( 'wp_ajax_embedpress_settings_action', [$this, 'save_settings']);
23
24
25 // Migration
26 $option = 'embedpress_elements_updated'; // to update initially for backward compatibility
27 if ( !get_option( $option, false) ) {
28 $elements_initial_states = [
29 'gutenberg' => [
30 'google-docs-block' => 'google-docs-block',
31 'document' => 'document',
32 'embedpress' => 'embedpress',
33 'embedpress-pdf' => 'embedpress-pdf',
34 'google-sheets-block' => 'google-sheets-block',
35 'google-slides-block' => 'google-slides-block',
36 'youtube-block' => 'youtube-block',
37 'google-forms-block' => 'google-forms-block',
38 'google-drawings-block' => 'google-drawings-block',
39 'google-maps-block' => 'google-maps-block',
40 'twitch-block' => 'twitch-block',
41 'wistia-block' => 'wistia-block',
42 'vimeo-block' => 'vimeo-block',
43 ],
44 'elementor' => [
45 'embedpress-document' => 'embedpress-document',
46 'embedpress' => 'embedpress',
47 'embedpress-pdf' => 'embedpress-pdf',
48 ]
49 ];
50
51 $settings = get_option( EMBEDPRESS_PLG_NAME, [] );
52 $yt = get_option( EMBEDPRESS_PLG_NAME.':youtube' );
53 if ( empty( $settings) && empty( $yt) ) {
54 $settings['need_first_time_redirect'] = true;
55 }
56 if ( !isset( $settings['enablePluginInAdmin']) ) {
57 $settings['enablePluginInAdmin'] = 1;
58 }
59 if ( !isset( $settings['enablePluginInFront']) ) {
60 $settings['enablePluginInFront'] = 1;
61 }
62
63 update_option( EMBEDPRESS_PLG_NAME.":elements", $elements_initial_states);
64 update_option( EMBEDPRESS_PLG_NAME, $settings);
65 update_option( $option, true);
66 }
67 $migration_v_320 = 'embedpress_v_320_migration';
68 if ( !get_option( $migration_v_320, false) ) {
69 $elements = (array) get_option( EMBEDPRESS_PLG_NAME.":elements", []);
70 $elements['gutenberg']['embedpress-pdf'] = 'embedpress-pdf';
71 $elements['elementor']['embedpress-pdf'] = 'embedpress-pdf';
72 update_option( EMBEDPRESS_PLG_NAME.":elements", $elements);
73 update_option( $migration_v_320, true);
74 }
75
76 $migration_v_330 = 'embedpress_v_330_migration';
77 if ( !get_option( $migration_v_330, false) ) {
78 $elements = (array) get_option( EMBEDPRESS_PLG_NAME.":elements", []);
79 $elements['gutenberg']['embedpress-calendar'] = 'embedpress-calendar';
80 $elements['elementor']['embedpress-calendar'] = 'embedpress-calendar';
81 update_option( EMBEDPRESS_PLG_NAME.":elements", $elements);
82 update_option( $migration_v_330, true);
83 }
84
85 add_action( 'admin_init', [$this, 'embedpress_maybe_redirect_to_settings'] );
86
87
88
89
90 }
91 function embedpress_maybe_redirect_to_settings() {
92 $settings = get_option( EMBEDPRESS_PLG_NAME, [] );
93 if ( isset( $settings['need_first_time_redirect']) && $settings['need_first_time_redirect'] ) {
94 if ( get_option( 'embedpress_activation_redirect_done' ) || wp_doing_ajax() ) {
95 return;
96 }
97
98
99 update_option( 'embedpress_activation_redirect_done', true );
100 $settings['need_first_time_redirect'] = false;
101 update_option( EMBEDPRESS_PLG_NAME, $settings);
102
103 if ( is_network_admin() || isset( $_GET['activate-multi'] ) ) {
104 return;
105 }
106
107 wp_safe_redirect( admin_url('admin.php?page='.$this->page_slug) );
108 exit;
109 }
110
111 }
112 public function update_elements_list() {
113 if ( !empty($_POST['_wpnonce'] && wp_verify_nonce( $_POST['_wpnonce'], 'embedpress_elements_action')) ) {
114 $option = EMBEDPRESS_PLG_NAME.":elements";
115 $elements = (array) get_option( $option, []);
116 $settings = (array) get_option( EMBEDPRESS_PLG_NAME, []);
117
118 $type = !empty( $_POST['element_type']) ? sanitize_text_field( $_POST['element_type']) : '';
119 $name = !empty( $_POST['element_name']) ? sanitize_text_field( $_POST['element_name']) : '';
120 $checked = !empty( $_POST['checked']) ? $_POST['checked'] : false;
121 if ( 'false' != $checked ) {
122 $elements[$type][$name] = $name;
123 if ( $type === 'classic' ) {
124 $settings[$name] = 1;
125 }
126 }else{
127 if( isset( $elements[$type]) && isset( $elements[$type][$name])){
128 unset( $elements[$type][$name]);
129 }
130 if ( $type === 'classic' ) {
131 $settings[$name] = 0;
132 }
133 }
134 update_option( EMBEDPRESS_PLG_NAME, $settings);
135 update_option( $option, $elements);
136 wp_send_json_success();
137 }
138 wp_send_json_error();
139 }
140
141 public function register_menu() {
142 add_menu_page( __('EmbedPress Settings', 'embedpress'), 'EmbedPress', 'manage_options', $this->page_slug,
143 [ $this, 'render_settings_page' ], EMBEDPRESS_URL_ASSETS.'images/menu-icon.svg', 64 );
144
145 }
146
147 public function handle_scripts_and_styles() {
148 if ( !empty( $_REQUEST['page']) && $this->page_slug === $_REQUEST['page'] ) {
149 $this->enqueue_styles();
150 $this->enqueue_scripts();
151 }
152 }
153
154 public function enqueue_scripts() {
155 if ( !did_action( 'wp_enqueue_media') ) {
156 wp_enqueue_media();
157 }
158 wp_register_script( 'ep-settings-script', EMBEDPRESS_SETTINGS_ASSETS_URL.'js/settings.js', ['jquery', 'wp-color-picker' ], $this->file_version, true );
159 wp_enqueue_script( 'ep-settings', EMBEDPRESS_URL_ASSETS . 'js/settings.js', ['jquery', 'wp-color-picker' ], $this->file_version, true );
160 wp_localize_script( 'ep-settings-script', 'embedpressObj', array(
161 'nonce' => wp_create_nonce('embedpress_elements_action'),
162 ) );
163
164 wp_enqueue_script( 'ep-settings-script');
165 }
166
167 public function enqueue_styles() {
168 wp_enqueue_style( 'ep-settings-style', EMBEDPRESS_SETTINGS_ASSETS_URL.'css/style.css', null, $this->file_version );
169 wp_enqueue_style( 'ep-settings-icon-style', EMBEDPRESS_SETTINGS_ASSETS_URL.'css/icon/style.css', null, $this->file_version );
170 wp_enqueue_style( 'wp-color-picker' );
171
172 }
173
174 public function render_settings_page( ) {
175 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;
176
177 $page_slug = $this->page_slug; // make this available for included template
178 $template = !empty( $_GET['page_type'] ) ? sanitize_text_field( $_GET['page_type']) : 'general';
179 $nonce_field = wp_nonce_field('ep_settings_nonce', 'ep_settings_nonce', true, false);
180 $ep_page = admin_url('admin.php?page='.$this->page_slug);
181 $gen_menu_template_names = apply_filters('ep_general_menu_tmpl_names', ['general', 'shortcode',]);
182 $platform_menu_template_names = apply_filters('ep_platform_menu_tmpl_names', [ 'youtube', 'vimeo', 'wistia', 'twitch','dailymotion', 'soundcloud' ,'spotify','google-calendar','opensea']);
183 $brand_menu_template_names = apply_filters('ep_brand_menu_templates', ['custom-logo', 'branding',]);
184 $pro_active = is_embedpress_pro_active();
185 $coming_soon = "<span class='ep-coming-soon'>". esc_html__( '(Coming soon)', 'embedpress'). "</span>";
186 $success_message = esc_html__( "Settings Updated", "embedpress" );
187 $error_message = esc_html__( "Ops! Something went wrong.", "embedpress" );
188 include_once EMBEDPRESS_SETTINGS_PATH . 'templates/main-template.php';
189 }
190
191 public function save_settings() {
192 // needs to check for ajax and return response accordingly.
193 if ( !empty( $_POST['ep_settings_nonce']) && wp_verify_nonce( $_POST['ep_settings_nonce'], 'ep_settings_nonce') ) {
194 $submit_type = !empty( $_POST['submit'] ) ? $_POST['submit'] : '';
195 $save_handler_method = "save_{$submit_type}_settings";
196 do_action( "before_{$save_handler_method}");
197 do_action( "before_embedpress_settings_save");
198 if ( method_exists( $this, $save_handler_method ) ) {
199 $this->$save_handler_method();
200 }
201 do_action( "after_embedpress_settings_save");
202 $return_url = isset( $_SERVER['HTTP_REFERER'] ) ? $_SERVER['HTTP_REFERER'] : admin_url();
203 $return_url = add_query_arg( 'success', 1, $return_url );
204 if ( wp_doing_ajax() ) {
205 wp_send_json_success();
206 }
207 wp_safe_redirect( $return_url);
208 exit();
209 }
210 }
211
212 public function save_general_settings() {
213 $settings = (array) get_option( EMBEDPRESS_PLG_NAME, []);
214 $settings ['enableEmbedResizeWidth'] = isset( $_POST['enableEmbedResizeWidth']) ? intval( $_POST['enableEmbedResizeWidth']) : 600;
215 $settings ['enableEmbedResizeHeight'] = isset( $_POST['enableEmbedResizeHeight']) ? intval( $_POST['enableEmbedResizeHeight']) : 550;
216 $settings ['pdf_custom_color_settings'] = isset( $_POST['pdf_custom_color_settings']) ? intval( $_POST['pdf_custom_color_settings']) : 0;
217
218 $settings ['custom_color'] = isset( $_POST['custom_color']) ? $_POST['custom_color'] : '#333333';
219
220 // Pro will handle g_loading_animation settings and other
221 $settings = apply_filters( 'ep_general_settings_before_save', $settings, $_POST);
222
223 update_option( EMBEDPRESS_PLG_NAME, $settings);
224 do_action( 'ep_general_settings_after_save', $settings, $_POST);
225 }
226
227 public function save_youtube_settings() {
228 $option_name = EMBEDPRESS_PLG_NAME.':youtube';
229 $settings = get_option( $option_name, []);
230 $settings['api_key'] = isset( $_POST['api_key']) ? sanitize_text_field( $_POST['api_key']) : 0;
231 $settings['pagesize'] = isset( $_POST['pagesize']) ? sanitize_text_field( $_POST['pagesize']) : 0;
232 $settings['start_time'] = isset( $_POST['start_time']) ? sanitize_text_field( $_POST['start_time']) : 0;
233 $settings['end_time'] = isset( $_POST['end_time']) ? sanitize_text_field( $_POST['end_time']) : 0;
234 $settings['autoplay'] = isset( $_POST['autoplay']) ? sanitize_text_field( $_POST['autoplay']) : '';
235 $settings['controls'] = isset( $_POST['controls']) ? sanitize_text_field( $_POST['controls']) : '';
236 $settings['fs'] = isset( $_POST['fs']) ? sanitize_text_field( $_POST['fs']) : '';
237 $settings['iv_load_policy'] = isset( $_POST['iv_load_policy']) ? sanitize_text_field( $_POST['iv_load_policy']) : 1;
238 $settings['color'] = isset( $_POST['color']) ? sanitize_text_field( $_POST['color']) : 'red';
239 $settings['rel'] = isset( $_POST['rel']) ? sanitize_text_field( $_POST['rel']) : 1;
240 $settings['license_key'] = 1; // backward compatibility
241
242 // Pro will handle g_loading_animation settings and other
243 $settings = apply_filters( 'ep_youtube_settings_before_save', $settings);
244 update_option( $option_name, $settings);
245 do_action( 'ep_youtube_settings_after_save', $settings);
246
247 }
248
249 public function save_wistia_settings() {
250 $option_name = EMBEDPRESS_PLG_NAME.':wistia';
251 $settings = get_option( $option_name, []);
252 $settings['start_time'] = isset( $_POST['start_time']) ? sanitize_text_field( $_POST['start_time']) : 0;
253 $settings['autoplay'] = isset( $_POST['autoplay']) ? sanitize_text_field( $_POST['autoplay']) : '';
254 $settings['display_fullscreen_button'] = isset( $_POST['display_fullscreen_button']) ? sanitize_text_field( $_POST['display_fullscreen_button']) : '';
255 $settings['small_play_button'] = isset( $_POST['small_play_button']) ? sanitize_text_field( $_POST['small_play_button']) : '';
256 $settings['player_color'] = isset( $_POST['player_color']) ? sanitize_text_field( $_POST['player_color']) : '';
257 $settings['plugin_resumable'] = isset( $_POST['plugin_resumable']) ? sanitize_text_field( $_POST['plugin_resumable']) : '';
258 $settings['plugin_focus'] = isset( $_POST['plugin_focus']) ? sanitize_text_field( $_POST['plugin_focus']) : '';
259 $settings['plugin_rewind'] = isset( $_POST['plugin_rewind']) ? sanitize_text_field( $_POST['plugin_rewind']) : '';
260 $settings['display_playbar'] = isset( $_POST['display_playbar']) ? sanitize_text_field( $_POST['display_playbar']) : 1;
261 $settings['plugin_rewind_time'] = isset( $_POST['plugin_rewind_time']) ? sanitize_text_field( $_POST['plugin_rewind_time']) : 10;
262 $settings['license_key'] = 1; // backward compatibility
263 // Pro will handle g_loading_animation settings and other
264 $settings = apply_filters( 'ep_wistia_settings_before_save', $settings);
265 update_option( $option_name, $settings);
266 do_action( 'ep_wistia_settings_after_save', $settings);
267 }
268
269 public function save_vimeo_settings() {
270 $option_name = EMBEDPRESS_PLG_NAME.':vimeo';
271 $settings = get_option( $option_name, []);
272 $settings['start_time'] = isset( $_POST['start_time']) ? sanitize_text_field( $_POST['start_time']) : 0;
273 $settings['autoplay'] = isset( $_POST['autoplay']) ? sanitize_text_field( $_POST['autoplay']) : '';
274 $settings['color'] = isset( $_POST['color']) ? sanitize_text_field( $_POST['color']) : '#00adef';
275 $settings['display_title'] = isset( $_POST['display_title']) ? sanitize_text_field( $_POST['display_title']) : 1;
276 $settings['display_author'] = isset( $_POST['display_author']) ? sanitize_text_field( $_POST['display_author']) : 1;
277 $settings['display_avatar'] = isset( $_POST['display_avatar']) ? sanitize_text_field( $_POST['display_avatar']) : 1;
278 $settings['license_key'] = 1; // backward compatibility
279 // Pro will handle g_loading_animation settings and other
280 $settings = apply_filters( 'ep_vimeo_settings_before_save', $settings);
281 update_option( $option_name, $settings);
282 do_action( 'ep_vimeo_settings_after_save', $settings);
283 }
284
285 public function save_twitch_settings() {
286 $option_name = EMBEDPRESS_PLG_NAME.':twitch';
287 $settings = get_option( $option_name, []);
288 $settings['embedpress_pro_twitch_autoplay'] = isset( $_POST['autoplay']) ? sanitize_text_field( $_POST['autoplay']) : 'no';
289 $settings['embedpress_pro_fs'] = isset( $_POST['fs']) ? sanitize_text_field( $_POST['fs']) : 'yes';
290 $settings['start_time'] = isset( $_POST['start_time']) ? sanitize_text_field( $_POST['start_time']) : 0;
291 $settings['embedpress_pro_twitch_theme'] = isset( $_POST['theme']) ? sanitize_text_field( $_POST['theme']) : 'dark';
292 $settings['embedpress_pro_twitch_mute'] = isset( $_POST['mute']) ? sanitize_text_field( $_POST['mute']) : 'yes';
293 $settings['license_key'] = 1; // backward compatibility
294 // Pro will handle g_loading_animation settings and other
295 $settings = apply_filters( 'ep_twitch_settings_before_save', $settings);
296 update_option( $option_name, $settings);
297 do_action( 'ep_twitch_settings_after_save', $settings);
298 }
299
300 public function save_spotify_settings() {
301 $option_name = EMBEDPRESS_PLG_NAME.':spotify';
302 $settings = get_option( $option_name, []);
303 $settings['theme'] = isset( $_POST['spotify_theme']) ? sanitize_text_field( $_POST['spotify_theme']) : '1';
304 $settings['license_key'] = 1; // backward compatibility
305
306 $settings = apply_filters( 'ep_spotify_settings_before_save', $settings);
307 update_option( $option_name, $settings);
308 do_action( 'ep_spotify_settings_after_save', $settings);
309 return $settings;
310 }
311
312 public function save_custom_logo_settings() {
313 do_action( 'before_embedpress_branding_save');
314 $settings = (array) get_option( EMBEDPRESS_PLG_NAME, []);
315 $settings['embedpress_document_powered_by'] = isset( $_POST['embedpress_document_powered_by']) ? sanitize_text_field( $_POST['embedpress_document_powered_by']) : 'no';
316 update_option( EMBEDPRESS_PLG_NAME, $settings);
317 do_action( 'after_embedpress_branding_save');
318
319 }
320
321 public function save_dailymotion_settings() {
322 $option_name = EMBEDPRESS_PLG_NAME.':dailymotion';
323 $settings = get_option( $option_name, []);
324 $settings['start_time'] = isset( $_POST['start_time']) ? sanitize_text_field( $_POST['start_time']) : 0;
325 $settings['visual'] = isset( $_POST['visual']) ? sanitize_text_field( $_POST['visual']) : '';
326 $settings['autoplay'] = isset( $_POST['autoplay']) ? sanitize_text_field( $_POST['autoplay']) : '';
327 $settings['play_on_mobile'] = isset( $_POST['play_on_mobile']) ? sanitize_text_field( $_POST['play_on_mobile']) : '';
328 $settings['color'] = isset( $_POST['color']) ? sanitize_text_field( $_POST['color']) : '#dd3333';
329 $settings['controls'] = isset( $_POST['controls']) ? sanitize_text_field( $_POST['controls']) : '';
330 $settings['video_info'] = isset( $_POST['video_info']) ? sanitize_text_field( $_POST['video_info']) : '';
331 $settings['mute'] = isset( $_POST['mute']) ? sanitize_text_field( $_POST['mute']) : '';
332 // Pro will handle g_loading_animation settings and other
333 $settings = apply_filters( 'ep_dailymotion_settings_before_save', $settings);
334 update_option( $option_name, $settings);
335 do_action( 'ep_dailymotion_settings_after_save', $settings);
336 }
337
338 public function save_soundcloud_settings() {
339 $option_name = EMBEDPRESS_PLG_NAME.':soundcloud';
340 $settings = get_option( $option_name, []);
341 $settings['visual'] = isset( $_POST['visual']) ? sanitize_text_field( $_POST['visual']) : '';
342 $settings['autoplay'] = isset( $_POST['autoplay']) ? sanitize_text_field( $_POST['autoplay']) : '';
343 $settings['play_on_mobile'] = isset( $_POST['play_on_mobile']) ? sanitize_text_field( $_POST['play_on_mobile']) : '';
344 $settings['share_button'] = isset( $_POST['share_button']) ? sanitize_text_field( $_POST['share_button']) : '';
345 $settings['comments'] = isset( $_POST['comments']) ? sanitize_text_field( $_POST['comments']) : '';
346 $settings['color'] = isset( $_POST['color']) ? sanitize_text_field( $_POST['color']) : '';
347 $settings['artwork'] = isset( $_POST['artwork']) ? sanitize_text_field( $_POST['artwork']) : '';
348 $settings['play_count'] = isset( $_POST['play_count']) ? sanitize_text_field( $_POST['play_count']) : '';
349 $settings['username'] = isset( $_POST['username']) ? sanitize_text_field( $_POST['username']) : '';
350
351 $settings['license_key'] = 1; // backward compatibility
352 // Pro will handle g_loading_animation settings and other
353 $settings = apply_filters( 'ep_soundcloud_settings_before_save', $settings);
354 update_option( $option_name, $settings);
355 do_action( 'ep_soundcloud_settings_after_save', $settings);
356 }
357
358 public function save_gcalendar_settings() {
359 $client_secret = !empty( $_POST['epgc_client_secret']) ? json_decode( wp_unslash( trim( $_POST['epgc_client_secret'])), true) : [];
360 $epgc_cache_time = !empty( $_POST['epgc_cache_time'] ) ? absint( $_POST['epgc_cache_time']) : 0;
361 $epgc_selected_calendar_ids = !empty( $_POST['epgc_selected_calendar_ids'] ) ? array_map( 'sanitize_text_field', $_POST['epgc_selected_calendar_ids']) : [];
362
363
364 $pretty_client_secret = '';
365 if ( !empty( $client_secret) ) {
366 $pretty_client_secret = $this->get_pretty_json_string( $client_secret);
367 }
368
369 update_option( 'epgc_client_secret', $pretty_client_secret);
370 update_option( 'epgc_cache_time', $epgc_cache_time);
371 update_option( 'epgc_selected_calendar_ids', $epgc_selected_calendar_ids);
372
373 }
374
375 public function save_opensea_settings() {
376 $option_name = EMBEDPRESS_PLG_NAME.':opensea';
377 $settings = get_option( $option_name, []);
378 $settings['api_key'] = isset( $_POST['api_key']) ? sanitize_text_field( $_POST['api_key']) : 0;
379 $settings['limit'] = isset( $_POST['limit']) ? sanitize_text_field( $_POST['limit']) : 0;
380 $settings['orderby'] = isset( $_POST['orderby']) ? sanitize_text_field( $_POST['orderby']) : 0;
381
382 $settings['license_key'] = 1; // backward compatibility
383
384 // Pro will handle g_loading_animation settings and other
385 $settings = apply_filters( 'ep_opensea_settings_before_save', $settings);
386 update_option( $option_name, $settings);
387 do_action( 'ep_opensea_settings_after_save', $settings);
388 }
389
390
391 function get_pretty_json_string($array) {
392 return str_replace(" ", " ", json_encode($array, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES));
393 }
394 }
395