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