PluginProbe ʕ •ᴥ•ʔ
EmbedPress – PDF Embedder, 3D PDF FlipBook, Google Reviews, YouTube Videos, Upload & Embed PDF documents / 4.1.1
EmbedPress – PDF Embedder, 3D PDF FlipBook, Google Reviews, YouTube Videos, Upload & Embed PDF documents v4.1.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 1 year ago templates 1 year ago EmbedpressSettings.php 1 year ago
EmbedpressSettings.php
402 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_file_name( $_GET['page_type']) : 'general';
185
186 $nonce_field = wp_nonce_field('ep_settings_nonce', 'ep_settings_nonce', true, false);
187 $ep_page = admin_url('admin.php?page='.$this->page_slug);
188 $gen_menu_template_names = apply_filters('ep_general_menu_tmpl_names', ['general', 'shortcode',]);
189 $platform_menu_template_names = apply_filters('ep_platform_menu_tmpl_names', [ 'youtube', 'vimeo', 'wistia', 'twitch','dailymotion', 'soundcloud' ,'spotify','google-calendar','opensea']);
190 $brand_menu_template_names = apply_filters('ep_brand_menu_templates', ['custom-logo', 'branding',]);
191 $pro_active = apply_filters('embedpress/is_allow_rander', false);
192 $coming_soon = "<span class='ep-coming-soon'>". esc_html__( '(Coming soon)', 'embedpress'). "</span>";
193 $success_message = esc_html__( "Settings Updated", "embedpress" );
194 $error_message = esc_html__( "Ops! Something went wrong.", "embedpress" );
195 include_once EMBEDPRESS_SETTINGS_PATH . 'templates/main-template.php';
196 }
197
198 public function save_settings() {
199 // needs to check for ajax and return response accordingly.
200 if ( !empty( $_POST['ep_settings_nonce']) && wp_verify_nonce( $_POST['ep_settings_nonce'], 'ep_settings_nonce') ) {
201 $submit_type = !empty( $_POST['submit'] ) ? $_POST['submit'] : '';
202 $save_handler_method = "save_{$submit_type}_settings";
203 do_action( "before_{$save_handler_method}");
204 do_action( "before_embedpress_settings_save");
205 if ( method_exists( $this, $save_handler_method ) ) {
206 $this->$save_handler_method();
207 }
208 do_action( "after_embedpress_settings_save");
209 $return_url = isset( $_SERVER['HTTP_REFERER'] ) ? $_SERVER['HTTP_REFERER'] : admin_url();
210 $return_url = add_query_arg( 'success', 1, $return_url );
211 if ( wp_doing_ajax() ) {
212 wp_send_json_success();
213 }
214 wp_safe_redirect( $return_url);
215 exit();
216 }
217 }
218
219 public function save_general_settings() {
220 $settings = (array) get_option( EMBEDPRESS_PLG_NAME, []);
221 $settings ['enableEmbedResizeWidth'] = isset( $_POST['enableEmbedResizeWidth']) ? intval( $_POST['enableEmbedResizeWidth']) : 600;
222 $settings ['enableEmbedResizeHeight'] = isset( $_POST['enableEmbedResizeHeight']) ? intval( $_POST['enableEmbedResizeHeight']) : 550;
223 $settings ['pdf_custom_color_settings'] = isset( $_POST['pdf_custom_color_settings']) ? intval( $_POST['pdf_custom_color_settings']) : 0;
224
225 $settings ['custom_color'] = isset( $_POST['custom_color']) ? $_POST['custom_color'] : '#333333';
226
227 // Pro will handle g_loading_animation settings and other
228 $settings = apply_filters( 'ep_general_settings_before_save', $settings, $_POST);
229
230 update_option( EMBEDPRESS_PLG_NAME, $settings);
231 do_action( 'ep_general_settings_after_save', $settings, $_POST);
232 }
233
234 public function save_youtube_settings() {
235 $option_name = EMBEDPRESS_PLG_NAME.':youtube';
236 $settings = get_option( $option_name, []);
237 $settings['api_key'] = isset( $_POST['api_key']) ? sanitize_text_field( $_POST['api_key']) : 0;
238 $settings['pagesize'] = isset( $_POST['pagesize']) ? sanitize_text_field( $_POST['pagesize']) : 0;
239 $settings['start_time'] = isset( $_POST['start_time']) ? sanitize_text_field( $_POST['start_time']) : 0;
240 $settings['end_time'] = isset( $_POST['end_time']) ? sanitize_text_field( $_POST['end_time']) : 0;
241 $settings['autoplay'] = isset( $_POST['autoplay']) ? sanitize_text_field( $_POST['autoplay']) : '';
242 $settings['controls'] = isset( $_POST['controls']) ? sanitize_text_field( $_POST['controls']) : '';
243 $settings['fs'] = isset( $_POST['fs']) ? sanitize_text_field( $_POST['fs']) : '';
244 $settings['iv_load_policy'] = isset( $_POST['iv_load_policy']) ? sanitize_text_field( $_POST['iv_load_policy']) : 1;
245 $settings['color'] = isset( $_POST['color']) ? sanitize_text_field( $_POST['color']) : 'red';
246 $settings['rel'] = isset( $_POST['rel']) ? sanitize_text_field( $_POST['rel']) : 1;
247 $settings['license_key'] = 1; // backward compatibility
248
249 // Pro will handle g_loading_animation settings and other
250 $settings = apply_filters( 'ep_youtube_settings_before_save', $settings);
251 update_option( $option_name, $settings);
252 do_action( 'ep_youtube_settings_after_save', $settings);
253
254 }
255
256 public function save_wistia_settings() {
257 $option_name = EMBEDPRESS_PLG_NAME.':wistia';
258 $settings = get_option( $option_name, []);
259 $settings['start_time'] = isset( $_POST['start_time']) ? sanitize_text_field( $_POST['start_time']) : 0;
260 $settings['autoplay'] = isset( $_POST['autoplay']) ? sanitize_text_field( $_POST['autoplay']) : '';
261 $settings['display_fullscreen_button'] = isset( $_POST['display_fullscreen_button']) ? sanitize_text_field( $_POST['display_fullscreen_button']) : '';
262 $settings['small_play_button'] = isset( $_POST['small_play_button']) ? sanitize_text_field( $_POST['small_play_button']) : '';
263 $settings['player_color'] = isset( $_POST['player_color']) ? sanitize_text_field( $_POST['player_color']) : '';
264 $settings['plugin_resumable'] = isset( $_POST['plugin_resumable']) ? sanitize_text_field( $_POST['plugin_resumable']) : '';
265 $settings['plugin_focus'] = isset( $_POST['plugin_focus']) ? sanitize_text_field( $_POST['plugin_focus']) : '';
266 $settings['plugin_rewind'] = isset( $_POST['plugin_rewind']) ? sanitize_text_field( $_POST['plugin_rewind']) : '';
267 $settings['display_playbar'] = isset( $_POST['display_playbar']) ? sanitize_text_field( $_POST['display_playbar']) : 1;
268 $settings['plugin_rewind_time'] = isset( $_POST['plugin_rewind_time']) ? sanitize_text_field( $_POST['plugin_rewind_time']) : 10;
269 $settings['license_key'] = 1; // backward compatibility
270 // Pro will handle g_loading_animation settings and other
271 $settings = apply_filters( 'ep_wistia_settings_before_save', $settings);
272 update_option( $option_name, $settings);
273 do_action( 'ep_wistia_settings_after_save', $settings);
274 }
275
276 public function save_vimeo_settings() {
277 $option_name = EMBEDPRESS_PLG_NAME.':vimeo';
278 $settings = get_option( $option_name, []);
279 $settings['start_time'] = isset( $_POST['start_time']) ? sanitize_text_field( $_POST['start_time']) : 0;
280 $settings['autoplay'] = isset( $_POST['autoplay']) ? sanitize_text_field( $_POST['autoplay']) : '';
281 $settings['color'] = isset( $_POST['color']) ? sanitize_text_field( $_POST['color']) : '#00adef';
282 $settings['display_title'] = isset( $_POST['display_title']) ? sanitize_text_field( $_POST['display_title']) : 1;
283 $settings['display_author'] = isset( $_POST['display_author']) ? sanitize_text_field( $_POST['display_author']) : 1;
284 $settings['display_avatar'] = isset( $_POST['display_avatar']) ? sanitize_text_field( $_POST['display_avatar']) : 1;
285 $settings['license_key'] = 1; // backward compatibility
286 // Pro will handle g_loading_animation settings and other
287 $settings = apply_filters( 'ep_vimeo_settings_before_save', $settings);
288 update_option( $option_name, $settings);
289 do_action( 'ep_vimeo_settings_after_save', $settings);
290 }
291
292 public function save_twitch_settings() {
293 $option_name = EMBEDPRESS_PLG_NAME.':twitch';
294 $settings = get_option( $option_name, []);
295 $settings['embedpress_pro_twitch_autoplay'] = isset( $_POST['autoplay']) ? sanitize_text_field( $_POST['autoplay']) : 'no';
296 $settings['embedpress_pro_fs'] = isset( $_POST['fs']) ? sanitize_text_field( $_POST['fs']) : 'yes';
297 $settings['start_time'] = isset( $_POST['start_time']) ? sanitize_text_field( $_POST['start_time']) : 0;
298 $settings['embedpress_pro_twitch_theme'] = isset( $_POST['theme']) ? sanitize_text_field( $_POST['theme']) : 'dark';
299 $settings['embedpress_pro_twitch_mute'] = isset( $_POST['mute']) ? sanitize_text_field( $_POST['mute']) : 'yes';
300 $settings['license_key'] = 1; // backward compatibility
301 // Pro will handle g_loading_animation settings and other
302 $settings = apply_filters( 'ep_twitch_settings_before_save', $settings);
303 update_option( $option_name, $settings);
304 do_action( 'ep_twitch_settings_after_save', $settings);
305 }
306
307 public function save_spotify_settings() {
308 $option_name = EMBEDPRESS_PLG_NAME.':spotify';
309 $settings = get_option( $option_name, []);
310 $settings['theme'] = isset( $_POST['spotify_theme']) ? sanitize_text_field( $_POST['spotify_theme']) : '1';
311 $settings['license_key'] = 1; // backward compatibility
312
313 $settings = apply_filters( 'ep_spotify_settings_before_save', $settings);
314 update_option( $option_name, $settings);
315 do_action( 'ep_spotify_settings_after_save', $settings);
316 return $settings;
317 }
318
319 public function save_custom_logo_settings() {
320 do_action( 'before_embedpress_branding_save');
321 $settings = (array) get_option( EMBEDPRESS_PLG_NAME, []);
322 $settings['embedpress_document_powered_by'] = isset( $_POST['embedpress_document_powered_by']) ? sanitize_text_field( $_POST['embedpress_document_powered_by']) : 'no';
323 update_option( EMBEDPRESS_PLG_NAME, $settings);
324 do_action( 'after_embedpress_branding_save');
325
326 }
327
328 public function save_dailymotion_settings() {
329 $option_name = EMBEDPRESS_PLG_NAME.':dailymotion';
330 $settings = get_option( $option_name, []);
331 $settings['start_time'] = isset( $_POST['start_time']) ? sanitize_text_field( $_POST['start_time']) : 0;
332 $settings['visual'] = isset( $_POST['visual']) ? sanitize_text_field( $_POST['visual']) : '';
333 $settings['autoplay'] = isset( $_POST['autoplay']) ? sanitize_text_field( $_POST['autoplay']) : '';
334 $settings['play_on_mobile'] = isset( $_POST['play_on_mobile']) ? sanitize_text_field( $_POST['play_on_mobile']) : '';
335 $settings['color'] = isset( $_POST['color']) ? sanitize_text_field( $_POST['color']) : '#dd3333';
336 $settings['controls'] = isset( $_POST['controls']) ? sanitize_text_field( $_POST['controls']) : '';
337 $settings['video_info'] = isset( $_POST['video_info']) ? sanitize_text_field( $_POST['video_info']) : '';
338 $settings['mute'] = isset( $_POST['mute']) ? sanitize_text_field( $_POST['mute']) : '';
339 // Pro will handle g_loading_animation settings and other
340 $settings = apply_filters( 'ep_dailymotion_settings_before_save', $settings);
341 update_option( $option_name, $settings);
342 do_action( 'ep_dailymotion_settings_after_save', $settings);
343 }
344
345 public function save_soundcloud_settings() {
346 $option_name = EMBEDPRESS_PLG_NAME.':soundcloud';
347 $settings = get_option( $option_name, []);
348 $settings['visual'] = isset( $_POST['visual']) ? sanitize_text_field( $_POST['visual']) : '';
349 $settings['autoplay'] = isset( $_POST['autoplay']) ? sanitize_text_field( $_POST['autoplay']) : '';
350 $settings['play_on_mobile'] = isset( $_POST['play_on_mobile']) ? sanitize_text_field( $_POST['play_on_mobile']) : '';
351 $settings['share_button'] = isset( $_POST['share_button']) ? sanitize_text_field( $_POST['share_button']) : '';
352 $settings['comments'] = isset( $_POST['comments']) ? sanitize_text_field( $_POST['comments']) : '';
353 $settings['color'] = isset( $_POST['color']) ? sanitize_text_field( $_POST['color']) : '';
354 $settings['artwork'] = isset( $_POST['artwork']) ? sanitize_text_field( $_POST['artwork']) : '';
355 $settings['play_count'] = isset( $_POST['play_count']) ? sanitize_text_field( $_POST['play_count']) : '';
356 $settings['username'] = isset( $_POST['username']) ? sanitize_text_field( $_POST['username']) : '';
357
358 $settings['license_key'] = 1; // backward compatibility
359 // Pro will handle g_loading_animation settings and other
360 $settings = apply_filters( 'ep_soundcloud_settings_before_save', $settings);
361 update_option( $option_name, $settings);
362 do_action( 'ep_soundcloud_settings_after_save', $settings);
363 }
364
365 public function save_gcalendar_settings() {
366 $client_secret = !empty( $_POST['epgc_client_secret']) ? json_decode( wp_unslash( trim( $_POST['epgc_client_secret'])), true) : [];
367 $epgc_cache_time = !empty( $_POST['epgc_cache_time'] ) ? absint( $_POST['epgc_cache_time']) : 0;
368 $epgc_selected_calendar_ids = !empty( $_POST['epgc_selected_calendar_ids'] ) ? array_map( 'sanitize_text_field', $_POST['epgc_selected_calendar_ids']) : [];
369
370
371 $pretty_client_secret = '';
372 if ( !empty( $client_secret) ) {
373 $pretty_client_secret = $this->get_pretty_json_string( $client_secret);
374 }
375
376 update_option( 'epgc_client_secret', $pretty_client_secret);
377 update_option( 'epgc_cache_time', $epgc_cache_time);
378 update_option( 'epgc_selected_calendar_ids', $epgc_selected_calendar_ids);
379
380 }
381
382 public function save_opensea_settings() {
383 $option_name = EMBEDPRESS_PLG_NAME.':opensea';
384 $settings = get_option( $option_name, []);
385 $settings['api_key'] = isset( $_POST['api_key']) ? sanitize_text_field( $_POST['api_key']) : 0;
386 $settings['limit'] = isset( $_POST['limit']) ? sanitize_text_field( $_POST['limit']) : 0;
387 $settings['orderby'] = isset( $_POST['orderby']) ? sanitize_text_field( $_POST['orderby']) : 0;
388
389 $settings['license_key'] = 1; // backward compatibility
390
391 // Pro will handle g_loading_animation settings and other
392 $settings = apply_filters( 'ep_opensea_settings_before_save', $settings);
393 update_option( $option_name, $settings);
394 do_action( 'ep_opensea_settings_after_save', $settings);
395 }
396
397
398 function get_pretty_json_string($array) {
399 return str_replace(" ", " ", json_encode($array, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES));
400 }
401 }
402