PluginProbe ʕ •ᴥ•ʔ
EmbedPress – PDF Embedder, 3D PDF FlipBook, Google Reviews, YouTube Videos, Upload & Embed PDF documents / 3.0.3
EmbedPress – PDF Embedder, 3D PDF FlipBook, Google Reviews, YouTube Videos, Upload & Embed PDF documents v3.0.3
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
263 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;
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', 'youtube', 'vimeo', 'wistia', 'twitch']);
157 $brand_menu_template_names = apply_filters('ep_brand_menu_templates', ['custom-logo', 'branding',]);
158 $pro_active = is_embedpress_pro_active();
159 $coming_soon = "<span class='ep-coming-soon'>". esc_html__( '(Coming soon)', 'embedpress'). "</span>";
160 $success_message = esc_html__( "Settings Updated", "embedpress" );
161 $error_message = esc_html__( "Ops! Something went wrong.", "embedpress" );
162 include_once EMBEDPRESS_SETTINGS_PATH . 'templates/main-template.php';
163 }
164
165 public function save_settings() {
166 // needs to check for ajax and return response accordingly.
167 if ( !empty( $_POST['ep_settings_nonce']) && wp_verify_nonce( $_POST['ep_settings_nonce'], 'ep_settings_nonce') ) {
168 $submit_type = !empty( $_POST['submit'] ) ? $_POST['submit'] : '';
169 $save_handler_method = "save_{$submit_type}_settings";
170 do_action( "before_{$save_handler_method}");
171 do_action( "before_embedpress_settings_save");
172 if ( method_exists( $this, $save_handler_method ) ) {
173 $this->$save_handler_method();
174 }
175 do_action( "after_embedpress_settings_save");
176 $return_url = isset( $_SERVER['HTTP_REFERER'] ) ? $_SERVER['HTTP_REFERER'] : admin_url();
177 $return_url = add_query_arg( 'success', 1, $return_url );
178 if ( wp_doing_ajax() ) {
179 wp_send_json_success();
180 }
181 wp_safe_redirect( $return_url);
182 exit();
183 }
184 }
185
186 public function save_general_settings() {
187 $settings = (array) get_option( EMBEDPRESS_PLG_NAME);
188 $settings ['enableEmbedResizeWidth'] = isset( $_POST['enableEmbedResizeWidth']) ? intval( $_POST['enableEmbedResizeWidth']) : 600;
189 $settings ['enableEmbedResizeHeight'] = isset( $_POST['enableEmbedResizeHeight']) ? intval( $_POST['enableEmbedResizeHeight']) : 550;
190
191 // Pro will handle g_loading_animation settings and other
192 $settings = apply_filters( 'ep_general_settings_before_save', $settings, $_POST);
193
194 update_option( EMBEDPRESS_PLG_NAME, $settings);
195 do_action( 'ep_general_settings_after_save', $settings, $_POST);
196 }
197
198 public function save_youtube_settings() {
199 $option_name = EMBEDPRESS_PLG_NAME.':youtube';
200 $settings = get_option( $option_name);
201 $settings['autoplay'] = isset( $_POST['autoplay']) ? sanitize_text_field( $_POST['autoplay']) : '';
202 $settings['controls'] = isset( $_POST['controls']) ? sanitize_text_field( $_POST['controls']) : '';
203 $settings['fs'] = isset( $_POST['fs']) ? sanitize_text_field( $_POST['fs']) : '';
204 $settings['iv_load_policy'] = isset( $_POST['iv_load_policy']) ? sanitize_text_field( $_POST['iv_load_policy']) : 1;
205 $settings['license_key'] = 1; // backward compatibility
206
207 // Pro will handle g_loading_animation settings and other
208 $settings = apply_filters( 'ep_youtube_settings_before_save', $settings);
209 update_option( $option_name, $settings);
210 do_action( 'ep_youtube_settings_after_save', $settings);
211
212 }
213
214 public function save_wistia_settings() {
215 $option_name = EMBEDPRESS_PLG_NAME.':wistia';
216 $settings = get_option( $option_name);
217 $settings['autoplay'] = isset( $_POST['autoplay']) ? sanitize_text_field( $_POST['autoplay']) : '';
218 $settings['display_fullscreen_button'] = isset( $_POST['display_fullscreen_button']) ? sanitize_text_field( $_POST['display_fullscreen_button']) : '';
219 $settings['small_play_button'] = isset( $_POST['small_play_button']) ? sanitize_text_field( $_POST['small_play_button']) : '';
220 $settings['player_color'] = isset( $_POST['player_color']) ? sanitize_text_field( $_POST['player_color']) : '';
221 $settings['plugin_resumable'] = isset( $_POST['plugin_resumable']) ? sanitize_text_field( $_POST['plugin_resumable']) : '';
222 $settings['plugin_focus'] = isset( $_POST['plugin_focus']) ? sanitize_text_field( $_POST['plugin_focus']) : '';
223 $settings['license_key'] = 1; // backward compatibility
224 // Pro will handle g_loading_animation settings and other
225 $settings = apply_filters( 'ep_wistia_settings_before_save', $settings);
226 update_option( $option_name, $settings);
227 do_action( 'ep_wistia_settings_after_save', $settings);
228 }
229
230 public function save_vimeo_settings() {
231 $option_name = EMBEDPRESS_PLG_NAME.':vimeo';
232 $settings = get_option( $option_name);
233 $settings['autoplay'] = isset( $_POST['autoplay']) ? sanitize_text_field( $_POST['autoplay']) : '';
234 $settings['color'] = isset( $_POST['color']) ? sanitize_text_field( $_POST['color']) : '#00adef';
235 $settings['display_title'] = isset( $_POST['display_title']) ? sanitize_text_field( $_POST['display_title']) : 1;
236 $settings['license_key'] = 1; // backward compatibility
237 // Pro will handle g_loading_animation settings and other
238 $settings = apply_filters( 'ep_vimeo_settings_before_save', $settings);
239 update_option( $option_name, $settings);
240 do_action( 'ep_vimeo_settings_after_save', $settings);
241 }
242
243 public function save_twitch_settings() {
244 $option_name = EMBEDPRESS_PLG_NAME.':twitch';
245 $settings = get_option( $option_name);
246 $settings['embedpress_pro_twitch_autoplay'] = isset( $_POST['autoplay']) ? sanitize_text_field( $_POST['autoplay']) : 'no';
247 $settings['embedpress_pro_fs'] = isset( $_POST['fs']) ? sanitize_text_field( $_POST['fs']) : 'yes';
248 $settings['license_key'] = 1; // backward compatibility
249 // Pro will handle g_loading_animation settings and other
250 $settings = apply_filters( 'ep_twitch_settings_before_save', $settings);
251 update_option( $option_name, $settings);
252 do_action( 'ep_twitch_settings_after_save', $settings);
253 }
254
255 public function save_custom_logo_settings() {
256 do_action( 'before_embedpress_branding_save');
257 $settings = (array) get_option( EMBEDPRESS_PLG_NAME, []);
258 $settings['embedpress_document_powered_by'] = isset( $_POST['embedpress_document_powered_by']) ? sanitize_text_field( $_POST['embedpress_document_powered_by']) : 'no';
259 update_option( EMBEDPRESS_PLG_NAME, $settings);
260 do_action( 'after_embedpress_branding_save');
261
262 }
263 }