PluginProbe ʕ •ᴥ•ʔ
EmbedPress – PDF Embedder, 3D PDF FlipBook, Google Reviews, YouTube Videos, Upload & Embed PDF documents / 4.0.5
EmbedPress – PDF Embedder, 3D PDF FlipBook, Google Reviews, YouTube Videos, Upload & Embed PDF documents v4.0.5
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
401 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
114 if (!current_user_can('manage_options')) {
115 wp_send_json_error(array('message' => 'You do not have sufficient permissions to access this functionality.'));
116 return;
117 }
118
119 if ( !empty($_POST['_wpnonce'] && wp_verify_nonce( $_POST['_wpnonce'], 'embedpress_elements_action')) ) {
120 $option = EMBEDPRESS_PLG_NAME.":elements";
121 $elements = (array) get_option( $option, []);
122 $settings = (array) get_option( EMBEDPRESS_PLG_NAME, []);
123
124 $type = !empty( $_POST['element_type']) ? sanitize_text_field( $_POST['element_type']) : '';
125 $name = !empty( $_POST['element_name']) ? sanitize_text_field( $_POST['element_name']) : '';
126 $checked = !empty( $_POST['checked']) ? $_POST['checked'] : false;
127 if ( 'false' != $checked ) {
128 $elements[$type][$name] = $name;
129 if ( $type === 'classic' ) {
130 $settings[$name] = 1;
131 }
132 }else{
133 if( isset( $elements[$type]) && isset( $elements[$type][$name])){
134 unset( $elements[$type][$name]);
135 }
136 if ( $type === 'classic' ) {
137 $settings[$name] = 0;
138 }
139 }
140 update_option( EMBEDPRESS_PLG_NAME, $settings);
141 update_option( $option, $elements);
142 wp_send_json_success();
143 }
144 wp_send_json_error();
145 }
146
147 public function register_menu() {
148 add_menu_page( __('EmbedPress Settings', 'embedpress'), 'EmbedPress', 'manage_options', $this->page_slug,
149 [ $this, 'render_settings_page' ], EMBEDPRESS_URL_ASSETS.'images/menu-icon.svg', 64 );
150
151 }
152
153 public function handle_scripts_and_styles() {
154 if ( !empty( $_REQUEST['page']) && $this->page_slug === $_REQUEST['page'] ) {
155 $this->enqueue_styles();
156 $this->enqueue_scripts();
157 }
158 }
159
160 public function enqueue_scripts() {
161 if ( !did_action( 'wp_enqueue_media') ) {
162 wp_enqueue_media();
163 }
164 wp_register_script( 'ep-settings-script', EMBEDPRESS_SETTINGS_ASSETS_URL.'js/settings.js', ['jquery', 'wp-color-picker' ], $this->file_version, true );
165 wp_enqueue_script( 'ep-settings', EMBEDPRESS_URL_ASSETS . 'js/settings.js', ['jquery', 'wp-color-picker' ], $this->file_version, true );
166 wp_localize_script( 'ep-settings-script', 'embedpressObj', array(
167 'nonce' => wp_create_nonce('embedpress_elements_action'),
168 ) );
169
170 wp_enqueue_script( 'ep-settings-script');
171 }
172
173 public function enqueue_styles() {
174 wp_enqueue_style( 'ep-settings-style', EMBEDPRESS_SETTINGS_ASSETS_URL.'css/style.css', null, $this->file_version );
175 wp_enqueue_style( 'ep-settings-icon-style', EMBEDPRESS_SETTINGS_ASSETS_URL.'css/icon/style.css', null, $this->file_version );
176 wp_enqueue_style( 'wp-color-picker' );
177
178 }
179
180 public function render_settings_page( ) {
181 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;
182
183 $page_slug = $this->page_slug; // make this available for included template
184 $template = !empty( $_GET['page_type'] ) ? sanitize_text_field( $_GET['page_type']) : 'general';
185 $nonce_field = wp_nonce_field('ep_settings_nonce', 'ep_settings_nonce', true, false);
186 $ep_page = admin_url('admin.php?page='.$this->page_slug);
187 $gen_menu_template_names = apply_filters('ep_general_menu_tmpl_names', ['general', 'shortcode',]);
188 $platform_menu_template_names = apply_filters('ep_platform_menu_tmpl_names', [ 'youtube', 'vimeo', 'wistia', 'twitch','dailymotion', 'soundcloud' ,'spotify','google-calendar','opensea']);
189 $brand_menu_template_names = apply_filters('ep_brand_menu_templates', ['custom-logo', 'branding',]);
190 $pro_active = is_embedpress_pro_active();
191 $coming_soon = "<span class='ep-coming-soon'>". esc_html__( '(Coming soon)', 'embedpress'). "</span>";
192 $success_message = esc_html__( "Settings Updated", "embedpress" );
193 $error_message = esc_html__( "Ops! Something went wrong.", "embedpress" );
194 include_once EMBEDPRESS_SETTINGS_PATH . 'templates/main-template.php';
195 }
196
197 public function save_settings() {
198 // needs to check for ajax and return response accordingly.
199 if ( !empty( $_POST['ep_settings_nonce']) && wp_verify_nonce( $_POST['ep_settings_nonce'], 'ep_settings_nonce') ) {
200 $submit_type = !empty( $_POST['submit'] ) ? $_POST['submit'] : '';
201 $save_handler_method = "save_{$submit_type}_settings";
202 do_action( "before_{$save_handler_method}");
203 do_action( "before_embedpress_settings_save");
204 if ( method_exists( $this, $save_handler_method ) ) {
205 $this->$save_handler_method();
206 }
207 do_action( "after_embedpress_settings_save");
208 $return_url = isset( $_SERVER['HTTP_REFERER'] ) ? $_SERVER['HTTP_REFERER'] : admin_url();
209 $return_url = add_query_arg( 'success', 1, $return_url );
210 if ( wp_doing_ajax() ) {
211 wp_send_json_success();
212 }
213 wp_safe_redirect( $return_url);
214 exit();
215 }
216 }
217
218 public function save_general_settings() {
219 $settings = (array) get_option( EMBEDPRESS_PLG_NAME, []);
220 $settings ['enableEmbedResizeWidth'] = isset( $_POST['enableEmbedResizeWidth']) ? intval( $_POST['enableEmbedResizeWidth']) : 600;
221 $settings ['enableEmbedResizeHeight'] = isset( $_POST['enableEmbedResizeHeight']) ? intval( $_POST['enableEmbedResizeHeight']) : 550;
222 $settings ['pdf_custom_color_settings'] = isset( $_POST['pdf_custom_color_settings']) ? intval( $_POST['pdf_custom_color_settings']) : 0;
223
224 $settings ['custom_color'] = isset( $_POST['custom_color']) ? $_POST['custom_color'] : '#333333';
225
226 // Pro will handle g_loading_animation settings and other
227 $settings = apply_filters( 'ep_general_settings_before_save', $settings, $_POST);
228
229 update_option( EMBEDPRESS_PLG_NAME, $settings);
230 do_action( 'ep_general_settings_after_save', $settings, $_POST);
231 }
232
233 public function save_youtube_settings() {
234 $option_name = EMBEDPRESS_PLG_NAME.':youtube';
235 $settings = get_option( $option_name, []);
236 $settings['api_key'] = isset( $_POST['api_key']) ? sanitize_text_field( $_POST['api_key']) : 0;
237 $settings['pagesize'] = isset( $_POST['pagesize']) ? sanitize_text_field( $_POST['pagesize']) : 0;
238 $settings['start_time'] = isset( $_POST['start_time']) ? sanitize_text_field( $_POST['start_time']) : 0;
239 $settings['end_time'] = isset( $_POST['end_time']) ? sanitize_text_field( $_POST['end_time']) : 0;
240 $settings['autoplay'] = isset( $_POST['autoplay']) ? sanitize_text_field( $_POST['autoplay']) : '';
241 $settings['controls'] = isset( $_POST['controls']) ? sanitize_text_field( $_POST['controls']) : '';
242 $settings['fs'] = isset( $_POST['fs']) ? sanitize_text_field( $_POST['fs']) : '';
243 $settings['iv_load_policy'] = isset( $_POST['iv_load_policy']) ? sanitize_text_field( $_POST['iv_load_policy']) : 1;
244 $settings['color'] = isset( $_POST['color']) ? sanitize_text_field( $_POST['color']) : 'red';
245 $settings['rel'] = isset( $_POST['rel']) ? sanitize_text_field( $_POST['rel']) : 1;
246 $settings['license_key'] = 1; // backward compatibility
247
248 // Pro will handle g_loading_animation settings and other
249 $settings = apply_filters( 'ep_youtube_settings_before_save', $settings);
250 update_option( $option_name, $settings);
251 do_action( 'ep_youtube_settings_after_save', $settings);
252
253 }
254
255 public function save_wistia_settings() {
256 $option_name = EMBEDPRESS_PLG_NAME.':wistia';
257 $settings = get_option( $option_name, []);
258 $settings['start_time'] = isset( $_POST['start_time']) ? sanitize_text_field( $_POST['start_time']) : 0;
259 $settings['autoplay'] = isset( $_POST['autoplay']) ? sanitize_text_field( $_POST['autoplay']) : '';
260 $settings['display_fullscreen_button'] = isset( $_POST['display_fullscreen_button']) ? sanitize_text_field( $_POST['display_fullscreen_button']) : '';
261 $settings['small_play_button'] = isset( $_POST['small_play_button']) ? sanitize_text_field( $_POST['small_play_button']) : '';
262 $settings['player_color'] = isset( $_POST['player_color']) ? sanitize_text_field( $_POST['player_color']) : '';
263 $settings['plugin_resumable'] = isset( $_POST['plugin_resumable']) ? sanitize_text_field( $_POST['plugin_resumable']) : '';
264 $settings['plugin_focus'] = isset( $_POST['plugin_focus']) ? sanitize_text_field( $_POST['plugin_focus']) : '';
265 $settings['plugin_rewind'] = isset( $_POST['plugin_rewind']) ? sanitize_text_field( $_POST['plugin_rewind']) : '';
266 $settings['display_playbar'] = isset( $_POST['display_playbar']) ? sanitize_text_field( $_POST['display_playbar']) : 1;
267 $settings['plugin_rewind_time'] = isset( $_POST['plugin_rewind_time']) ? sanitize_text_field( $_POST['plugin_rewind_time']) : 10;
268 $settings['license_key'] = 1; // backward compatibility
269 // Pro will handle g_loading_animation settings and other
270 $settings = apply_filters( 'ep_wistia_settings_before_save', $settings);
271 update_option( $option_name, $settings);
272 do_action( 'ep_wistia_settings_after_save', $settings);
273 }
274
275 public function save_vimeo_settings() {
276 $option_name = EMBEDPRESS_PLG_NAME.':vimeo';
277 $settings = get_option( $option_name, []);
278 $settings['start_time'] = isset( $_POST['start_time']) ? sanitize_text_field( $_POST['start_time']) : 0;
279 $settings['autoplay'] = isset( $_POST['autoplay']) ? sanitize_text_field( $_POST['autoplay']) : '';
280 $settings['color'] = isset( $_POST['color']) ? sanitize_text_field( $_POST['color']) : '#00adef';
281 $settings['display_title'] = isset( $_POST['display_title']) ? sanitize_text_field( $_POST['display_title']) : 1;
282 $settings['display_author'] = isset( $_POST['display_author']) ? sanitize_text_field( $_POST['display_author']) : 1;
283 $settings['display_avatar'] = isset( $_POST['display_avatar']) ? sanitize_text_field( $_POST['display_avatar']) : 1;
284 $settings['license_key'] = 1; // backward compatibility
285 // Pro will handle g_loading_animation settings and other
286 $settings = apply_filters( 'ep_vimeo_settings_before_save', $settings);
287 update_option( $option_name, $settings);
288 do_action( 'ep_vimeo_settings_after_save', $settings);
289 }
290
291 public function save_twitch_settings() {
292 $option_name = EMBEDPRESS_PLG_NAME.':twitch';
293 $settings = get_option( $option_name, []);
294 $settings['embedpress_pro_twitch_autoplay'] = isset( $_POST['autoplay']) ? sanitize_text_field( $_POST['autoplay']) : 'no';
295 $settings['embedpress_pro_fs'] = isset( $_POST['fs']) ? sanitize_text_field( $_POST['fs']) : 'yes';
296 $settings['start_time'] = isset( $_POST['start_time']) ? sanitize_text_field( $_POST['start_time']) : 0;
297 $settings['embedpress_pro_twitch_theme'] = isset( $_POST['theme']) ? sanitize_text_field( $_POST['theme']) : 'dark';
298 $settings['embedpress_pro_twitch_mute'] = isset( $_POST['mute']) ? sanitize_text_field( $_POST['mute']) : 'yes';
299 $settings['license_key'] = 1; // backward compatibility
300 // Pro will handle g_loading_animation settings and other
301 $settings = apply_filters( 'ep_twitch_settings_before_save', $settings);
302 update_option( $option_name, $settings);
303 do_action( 'ep_twitch_settings_after_save', $settings);
304 }
305
306 public function save_spotify_settings() {
307 $option_name = EMBEDPRESS_PLG_NAME.':spotify';
308 $settings = get_option( $option_name, []);
309 $settings['theme'] = isset( $_POST['spotify_theme']) ? sanitize_text_field( $_POST['spotify_theme']) : '1';
310 $settings['license_key'] = 1; // backward compatibility
311
312 $settings = apply_filters( 'ep_spotify_settings_before_save', $settings);
313 update_option( $option_name, $settings);
314 do_action( 'ep_spotify_settings_after_save', $settings);
315 return $settings;
316 }
317
318 public function save_custom_logo_settings() {
319 do_action( 'before_embedpress_branding_save');
320 $settings = (array) get_option( EMBEDPRESS_PLG_NAME, []);
321 $settings['embedpress_document_powered_by'] = isset( $_POST['embedpress_document_powered_by']) ? sanitize_text_field( $_POST['embedpress_document_powered_by']) : 'no';
322 update_option( EMBEDPRESS_PLG_NAME, $settings);
323 do_action( 'after_embedpress_branding_save');
324
325 }
326
327 public function save_dailymotion_settings() {
328 $option_name = EMBEDPRESS_PLG_NAME.':dailymotion';
329 $settings = get_option( $option_name, []);
330 $settings['start_time'] = isset( $_POST['start_time']) ? sanitize_text_field( $_POST['start_time']) : 0;
331 $settings['visual'] = isset( $_POST['visual']) ? sanitize_text_field( $_POST['visual']) : '';
332 $settings['autoplay'] = isset( $_POST['autoplay']) ? sanitize_text_field( $_POST['autoplay']) : '';
333 $settings['play_on_mobile'] = isset( $_POST['play_on_mobile']) ? sanitize_text_field( $_POST['play_on_mobile']) : '';
334 $settings['color'] = isset( $_POST['color']) ? sanitize_text_field( $_POST['color']) : '#dd3333';
335 $settings['controls'] = isset( $_POST['controls']) ? sanitize_text_field( $_POST['controls']) : '';
336 $settings['video_info'] = isset( $_POST['video_info']) ? sanitize_text_field( $_POST['video_info']) : '';
337 $settings['mute'] = isset( $_POST['mute']) ? sanitize_text_field( $_POST['mute']) : '';
338 // Pro will handle g_loading_animation settings and other
339 $settings = apply_filters( 'ep_dailymotion_settings_before_save', $settings);
340 update_option( $option_name, $settings);
341 do_action( 'ep_dailymotion_settings_after_save', $settings);
342 }
343
344 public function save_soundcloud_settings() {
345 $option_name = EMBEDPRESS_PLG_NAME.':soundcloud';
346 $settings = get_option( $option_name, []);
347 $settings['visual'] = isset( $_POST['visual']) ? sanitize_text_field( $_POST['visual']) : '';
348 $settings['autoplay'] = isset( $_POST['autoplay']) ? sanitize_text_field( $_POST['autoplay']) : '';
349 $settings['play_on_mobile'] = isset( $_POST['play_on_mobile']) ? sanitize_text_field( $_POST['play_on_mobile']) : '';
350 $settings['share_button'] = isset( $_POST['share_button']) ? sanitize_text_field( $_POST['share_button']) : '';
351 $settings['comments'] = isset( $_POST['comments']) ? sanitize_text_field( $_POST['comments']) : '';
352 $settings['color'] = isset( $_POST['color']) ? sanitize_text_field( $_POST['color']) : '';
353 $settings['artwork'] = isset( $_POST['artwork']) ? sanitize_text_field( $_POST['artwork']) : '';
354 $settings['play_count'] = isset( $_POST['play_count']) ? sanitize_text_field( $_POST['play_count']) : '';
355 $settings['username'] = isset( $_POST['username']) ? sanitize_text_field( $_POST['username']) : '';
356
357 $settings['license_key'] = 1; // backward compatibility
358 // Pro will handle g_loading_animation settings and other
359 $settings = apply_filters( 'ep_soundcloud_settings_before_save', $settings);
360 update_option( $option_name, $settings);
361 do_action( 'ep_soundcloud_settings_after_save', $settings);
362 }
363
364 public function save_gcalendar_settings() {
365 $client_secret = !empty( $_POST['epgc_client_secret']) ? json_decode( wp_unslash( trim( $_POST['epgc_client_secret'])), true) : [];
366 $epgc_cache_time = !empty( $_POST['epgc_cache_time'] ) ? absint( $_POST['epgc_cache_time']) : 0;
367 $epgc_selected_calendar_ids = !empty( $_POST['epgc_selected_calendar_ids'] ) ? array_map( 'sanitize_text_field', $_POST['epgc_selected_calendar_ids']) : [];
368
369
370 $pretty_client_secret = '';
371 if ( !empty( $client_secret) ) {
372 $pretty_client_secret = $this->get_pretty_json_string( $client_secret);
373 }
374
375 update_option( 'epgc_client_secret', $pretty_client_secret);
376 update_option( 'epgc_cache_time', $epgc_cache_time);
377 update_option( 'epgc_selected_calendar_ids', $epgc_selected_calendar_ids);
378
379 }
380
381 public function save_opensea_settings() {
382 $option_name = EMBEDPRESS_PLG_NAME.':opensea';
383 $settings = get_option( $option_name, []);
384 $settings['api_key'] = isset( $_POST['api_key']) ? sanitize_text_field( $_POST['api_key']) : 0;
385 $settings['limit'] = isset( $_POST['limit']) ? sanitize_text_field( $_POST['limit']) : 0;
386 $settings['orderby'] = isset( $_POST['orderby']) ? sanitize_text_field( $_POST['orderby']) : 0;
387
388 $settings['license_key'] = 1; // backward compatibility
389
390 // Pro will handle g_loading_animation settings and other
391 $settings = apply_filters( 'ep_opensea_settings_before_save', $settings);
392 update_option( $option_name, $settings);
393 do_action( 'ep_opensea_settings_after_save', $settings);
394 }
395
396
397 function get_pretty_json_string($array) {
398 return str_replace(" ", " ", json_encode($array, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES));
399 }
400 }
401