PluginProbe ʕ •ᴥ•ʔ
EmbedPress – PDF Embedder, 3D PDF FlipBook, Google Reviews, YouTube Videos, Upload & Embed PDF documents / 4.2.4
EmbedPress – PDF Embedder, 3D PDF FlipBook, Google Reviews, YouTube Videos, Upload & Embed PDF documents v4.2.4
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 1 year ago templates 1 year ago EmbedpressSettings.php 1 year ago
EmbedpressSettings.php
403 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 $settings ['turn_off_rating_help'] = isset( $_POST['turn_off_rating_help']) ? intval( $_POST['turn_off_rating_help']) : 0;
225
226 $settings ['custom_color'] = isset( $_POST['custom_color']) ? $_POST['custom_color'] : '#333333';
227
228 // Pro will handle g_loading_animation settings and other
229 $settings = apply_filters( 'ep_general_settings_before_save', $settings, $_POST);
230
231 update_option( EMBEDPRESS_PLG_NAME, $settings);
232 do_action( 'ep_general_settings_after_save', $settings, $_POST);
233 }
234
235 public function save_youtube_settings() {
236 $option_name = EMBEDPRESS_PLG_NAME.':youtube';
237 $settings = get_option( $option_name, []);
238 $settings['api_key'] = isset( $_POST['api_key']) ? sanitize_text_field( $_POST['api_key']) : 0;
239 $settings['pagesize'] = isset( $_POST['pagesize']) ? sanitize_text_field( $_POST['pagesize']) : 0;
240 $settings['start_time'] = isset( $_POST['start_time']) ? sanitize_text_field( $_POST['start_time']) : 0;
241 $settings['end_time'] = isset( $_POST['end_time']) ? sanitize_text_field( $_POST['end_time']) : 0;
242 $settings['autoplay'] = isset( $_POST['autoplay']) ? sanitize_text_field( $_POST['autoplay']) : '';
243 $settings['controls'] = isset( $_POST['controls']) ? sanitize_text_field( $_POST['controls']) : '';
244 $settings['fs'] = isset( $_POST['fs']) ? sanitize_text_field( $_POST['fs']) : '';
245 $settings['iv_load_policy'] = isset( $_POST['iv_load_policy']) ? sanitize_text_field( $_POST['iv_load_policy']) : 1;
246 $settings['color'] = isset( $_POST['color']) ? sanitize_text_field( $_POST['color']) : 'red';
247 $settings['rel'] = isset( $_POST['rel']) ? sanitize_text_field( $_POST['rel']) : 1;
248 $settings['license_key'] = 1; // backward compatibility
249
250 // Pro will handle g_loading_animation settings and other
251 $settings = apply_filters( 'ep_youtube_settings_before_save', $settings);
252 update_option( $option_name, $settings);
253 do_action( 'ep_youtube_settings_after_save', $settings);
254
255 }
256
257 public function save_wistia_settings() {
258 $option_name = EMBEDPRESS_PLG_NAME.':wistia';
259 $settings = get_option( $option_name, []);
260 $settings['start_time'] = isset( $_POST['start_time']) ? sanitize_text_field( $_POST['start_time']) : 0;
261 $settings['autoplay'] = isset( $_POST['autoplay']) ? sanitize_text_field( $_POST['autoplay']) : '';
262 $settings['display_fullscreen_button'] = isset( $_POST['display_fullscreen_button']) ? sanitize_text_field( $_POST['display_fullscreen_button']) : '';
263 $settings['small_play_button'] = isset( $_POST['small_play_button']) ? sanitize_text_field( $_POST['small_play_button']) : '';
264 $settings['player_color'] = isset( $_POST['player_color']) ? sanitize_text_field( $_POST['player_color']) : '';
265 $settings['plugin_resumable'] = isset( $_POST['plugin_resumable']) ? sanitize_text_field( $_POST['plugin_resumable']) : '';
266 $settings['plugin_focus'] = isset( $_POST['plugin_focus']) ? sanitize_text_field( $_POST['plugin_focus']) : '';
267 $settings['plugin_rewind'] = isset( $_POST['plugin_rewind']) ? sanitize_text_field( $_POST['plugin_rewind']) : '';
268 $settings['display_playbar'] = isset( $_POST['display_playbar']) ? sanitize_text_field( $_POST['display_playbar']) : 1;
269 $settings['plugin_rewind_time'] = isset( $_POST['plugin_rewind_time']) ? sanitize_text_field( $_POST['plugin_rewind_time']) : 10;
270 $settings['license_key'] = 1; // backward compatibility
271 // Pro will handle g_loading_animation settings and other
272 $settings = apply_filters( 'ep_wistia_settings_before_save', $settings);
273 update_option( $option_name, $settings);
274 do_action( 'ep_wistia_settings_after_save', $settings);
275 }
276
277 public function save_vimeo_settings() {
278 $option_name = EMBEDPRESS_PLG_NAME.':vimeo';
279 $settings = get_option( $option_name, []);
280 $settings['start_time'] = isset( $_POST['start_time']) ? sanitize_text_field( $_POST['start_time']) : 0;
281 $settings['autoplay'] = isset( $_POST['autoplay']) ? sanitize_text_field( $_POST['autoplay']) : '';
282 $settings['color'] = isset( $_POST['color']) ? sanitize_text_field( $_POST['color']) : '#00adef';
283 $settings['display_title'] = isset( $_POST['display_title']) ? sanitize_text_field( $_POST['display_title']) : 1;
284 $settings['display_author'] = isset( $_POST['display_author']) ? sanitize_text_field( $_POST['display_author']) : 1;
285 $settings['display_avatar'] = isset( $_POST['display_avatar']) ? sanitize_text_field( $_POST['display_avatar']) : 1;
286 $settings['license_key'] = 1; // backward compatibility
287 // Pro will handle g_loading_animation settings and other
288 $settings = apply_filters( 'ep_vimeo_settings_before_save', $settings);
289 update_option( $option_name, $settings);
290 do_action( 'ep_vimeo_settings_after_save', $settings);
291 }
292
293 public function save_twitch_settings() {
294 $option_name = EMBEDPRESS_PLG_NAME.':twitch';
295 $settings = get_option( $option_name, []);
296 $settings['embedpress_pro_twitch_autoplay'] = isset( $_POST['autoplay']) ? sanitize_text_field( $_POST['autoplay']) : 'no';
297 $settings['embedpress_pro_fs'] = isset( $_POST['fs']) ? sanitize_text_field( $_POST['fs']) : 'yes';
298 $settings['start_time'] = isset( $_POST['start_time']) ? sanitize_text_field( $_POST['start_time']) : 0;
299 $settings['embedpress_pro_twitch_theme'] = isset( $_POST['theme']) ? sanitize_text_field( $_POST['theme']) : 'dark';
300 $settings['embedpress_pro_twitch_mute'] = isset( $_POST['mute']) ? sanitize_text_field( $_POST['mute']) : 'yes';
301 $settings['license_key'] = 1; // backward compatibility
302 // Pro will handle g_loading_animation settings and other
303 $settings = apply_filters( 'ep_twitch_settings_before_save', $settings);
304 update_option( $option_name, $settings);
305 do_action( 'ep_twitch_settings_after_save', $settings);
306 }
307
308 public function save_spotify_settings() {
309 $option_name = EMBEDPRESS_PLG_NAME.':spotify';
310 $settings = get_option( $option_name, []);
311 $settings['theme'] = isset( $_POST['spotify_theme']) ? sanitize_text_field( $_POST['spotify_theme']) : '1';
312 $settings['license_key'] = 1; // backward compatibility
313
314 $settings = apply_filters( 'ep_spotify_settings_before_save', $settings);
315 update_option( $option_name, $settings);
316 do_action( 'ep_spotify_settings_after_save', $settings);
317 return $settings;
318 }
319
320 public function save_custom_logo_settings() {
321 do_action( 'before_embedpress_branding_save');
322 $settings = (array) get_option( EMBEDPRESS_PLG_NAME, []);
323 $settings['embedpress_document_powered_by'] = isset( $_POST['embedpress_document_powered_by']) ? sanitize_text_field( $_POST['embedpress_document_powered_by']) : 'no';
324 update_option( EMBEDPRESS_PLG_NAME, $settings);
325 do_action( 'after_embedpress_branding_save');
326
327 }
328
329 public function save_dailymotion_settings() {
330 $option_name = EMBEDPRESS_PLG_NAME.':dailymotion';
331 $settings = get_option( $option_name, []);
332 $settings['start_time'] = isset( $_POST['start_time']) ? sanitize_text_field( $_POST['start_time']) : 0;
333 $settings['visual'] = isset( $_POST['visual']) ? sanitize_text_field( $_POST['visual']) : '';
334 $settings['autoplay'] = isset( $_POST['autoplay']) ? sanitize_text_field( $_POST['autoplay']) : '';
335 $settings['play_on_mobile'] = isset( $_POST['play_on_mobile']) ? sanitize_text_field( $_POST['play_on_mobile']) : '';
336 $settings['color'] = isset( $_POST['color']) ? sanitize_text_field( $_POST['color']) : '#dd3333';
337 $settings['controls'] = isset( $_POST['controls']) ? sanitize_text_field( $_POST['controls']) : '';
338 $settings['video_info'] = isset( $_POST['video_info']) ? sanitize_text_field( $_POST['video_info']) : '';
339 $settings['mute'] = isset( $_POST['mute']) ? sanitize_text_field( $_POST['mute']) : '';
340 // Pro will handle g_loading_animation settings and other
341 $settings = apply_filters( 'ep_dailymotion_settings_before_save', $settings);
342 update_option( $option_name, $settings);
343 do_action( 'ep_dailymotion_settings_after_save', $settings);
344 }
345
346 public function save_soundcloud_settings() {
347 $option_name = EMBEDPRESS_PLG_NAME.':soundcloud';
348 $settings = get_option( $option_name, []);
349 $settings['visual'] = isset( $_POST['visual']) ? sanitize_text_field( $_POST['visual']) : '';
350 $settings['autoplay'] = isset( $_POST['autoplay']) ? sanitize_text_field( $_POST['autoplay']) : '';
351 $settings['play_on_mobile'] = isset( $_POST['play_on_mobile']) ? sanitize_text_field( $_POST['play_on_mobile']) : '';
352 $settings['share_button'] = isset( $_POST['share_button']) ? sanitize_text_field( $_POST['share_button']) : '';
353 $settings['comments'] = isset( $_POST['comments']) ? sanitize_text_field( $_POST['comments']) : '';
354 $settings['color'] = isset( $_POST['color']) ? sanitize_text_field( $_POST['color']) : '';
355 $settings['artwork'] = isset( $_POST['artwork']) ? sanitize_text_field( $_POST['artwork']) : '';
356 $settings['play_count'] = isset( $_POST['play_count']) ? sanitize_text_field( $_POST['play_count']) : '';
357 $settings['username'] = isset( $_POST['username']) ? sanitize_text_field( $_POST['username']) : '';
358
359 $settings['license_key'] = 1; // backward compatibility
360 // Pro will handle g_loading_animation settings and other
361 $settings = apply_filters( 'ep_soundcloud_settings_before_save', $settings);
362 update_option( $option_name, $settings);
363 do_action( 'ep_soundcloud_settings_after_save', $settings);
364 }
365
366 public function save_gcalendar_settings() {
367 $client_secret = !empty( $_POST['epgc_client_secret']) ? json_decode( wp_unslash( trim( $_POST['epgc_client_secret'])), true) : [];
368 $epgc_cache_time = !empty( $_POST['epgc_cache_time'] ) ? absint( $_POST['epgc_cache_time']) : 0;
369 $epgc_selected_calendar_ids = !empty( $_POST['epgc_selected_calendar_ids'] ) ? array_map( 'sanitize_text_field', $_POST['epgc_selected_calendar_ids']) : [];
370
371
372 $pretty_client_secret = '';
373 if ( !empty( $client_secret) ) {
374 $pretty_client_secret = $this->get_pretty_json_string( $client_secret);
375 }
376
377 update_option( 'epgc_client_secret', $pretty_client_secret);
378 update_option( 'epgc_cache_time', $epgc_cache_time);
379 update_option( 'epgc_selected_calendar_ids', $epgc_selected_calendar_ids);
380
381 }
382
383 public function save_opensea_settings() {
384 $option_name = EMBEDPRESS_PLG_NAME.':opensea';
385 $settings = get_option( $option_name, []);
386 $settings['api_key'] = isset( $_POST['api_key']) ? sanitize_text_field( $_POST['api_key']) : 0;
387 $settings['limit'] = isset( $_POST['limit']) ? sanitize_text_field( $_POST['limit']) : 0;
388 $settings['orderby'] = isset( $_POST['orderby']) ? sanitize_text_field( $_POST['orderby']) : 0;
389
390 $settings['license_key'] = 1; // backward compatibility
391
392 // Pro will handle g_loading_animation settings and other
393 $settings = apply_filters( 'ep_opensea_settings_before_save', $settings);
394 update_option( $option_name, $settings);
395 do_action( 'ep_opensea_settings_after_save', $settings);
396 }
397
398
399 function get_pretty_json_string($array) {
400 return str_replace(" ", " ", json_encode($array, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES));
401 }
402 }
403