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