PluginProbe
Formidable Forms – WordPress Form Builder for Contact Forms, Calculators, Quizzes & More / 5.5.6
Formidable Forms – WordPress Form Builder for Contact Forms, Calculators, Quizzes & More v5.5.6
6.35 6.34 6.33.1 6.33 6.32.1 6.32 6.31 6.25 6.25.1 6.26 6.26.1 6.27 6.28 6.29 6.3 6.3.1 6.3.2 6.30 6.4 6.4.1 6.4.2 6.5 6.5.1 6.5.2 6.5.3 All 141 releases
formidable / classes / controllers / FrmSMTPController.php

FrmSMTPController.php in Formidable Forms – WordPress Form Builder for Contact Forms, Calculators, Quizzes & More 5.5.6, at classes/controllers/FrmSMTPController.php

543 lines 16.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 if ( ! defined( 'ABSPATH' ) ) {
3 die( 'You are not allowed to call this page directly.' );
4 }
5
6 /**
7 * SMTP Sub-page.
8 *
9 * @since 4.04.04
10 */
11 class FrmSMTPController {
12
13 /**
14 * Admin menu page slug.
15 *
16 * @since 4.04.04
17 *
18 * @var string
19 */
20 private $slug = 'formidable-smtp';
21
22 /**
23 * @since 4.04.04
24 *
25 * @var array
26 */
27 private $config = array(
28 'lite_plugin' => 'wp-mail-smtp/wp_mail_smtp.php',
29 'lite_download_url' => 'https://downloads.wordpress.org/plugin/wp-mail-smtp.zip',
30 'pro_plugin' => 'wp-mail-smtp-pro/wp_mail_smtp.php',
31 'smtp_settings' => 'admin.php?page=wp-mail-smtp',
32 );
33
34 /**
35 * Runtime data used for generating page HTML.
36 *
37 * @since 4.04.04
38 *
39 * @var array
40 */
41 private $output_data = array();
42
43 /**
44 * Hooks.
45 *
46 * @since 4.04.04
47 */
48 public static function load_hooks() {
49
50 add_filter( 'wp_mail_smtp_is_white_labeled', '__return_true' );
51
52 $self = new self();
53 if ( wp_doing_ajax() ) {
54 add_action( 'wp_ajax_frm_smtp_page_check_plugin_status', array( $self, 'ajax_check_plugin_status' ) );
55 }
56
57 add_filter( 'wp_mail_smtp_core_get_upgrade_link', array( $self, 'link' ) );
58 add_action( 'admin_menu', array( $self, 'menu' ), 999 );
59 add_action( 'wp_mail_smtp_core_recommendations_plugins', 'FrmSMTPController::remove_wpforms_nag' );
60
61 // Only load if we are actually on the SMTP page.
62 if ( ! FrmAppHelper::is_admin_page( $self->slug ) ) {
63 return;
64 }
65
66 add_action( 'admin_init', array( $self, 'redirect_to_smtp_settings' ) );
67
68 // Hook for addons.
69 do_action( 'frm_admin_pages_smtp_hooks' );
70 }
71
72 /**
73 * Customize the upgrade link.
74 */
75 public function link( $link ) {
76 $new_link = 'formidableforms.com/go-wp-mail-smtp/?urllink=wpmailsmtp%2Ecom%2Flite%2Dupgrade&';
77 $link = str_replace( 'wpmailsmtp.com/lite-upgrade/?', $new_link, $link );
78 return $link;
79 }
80
81 /**
82 * Don't nag people to install WPForms
83 *
84 * @since 4.04.04
85 */
86 public static function remove_wpforms_nag( $upsell ) {
87 if ( is_array( $upsell ) ) {
88 foreach ( $upsell as $k => $plugin ) {
89 if ( strpos( $plugin['slug'], 'wpforms' ) !== false ) {
90 unset( $upsell[ $k ] );
91 }
92 }
93 }
94
95 return $upsell;
96 }
97
98 /**
99 * SMTP submenu page.
100 */
101 public function menu() {
102 add_submenu_page( 'formidable', __( 'SMTP', 'formidable' ) . ' | Formidable', __( 'SMTP', 'formidable' ), 'activate_plugins', $this->slug, array( $this, 'output' ) );
103 }
104
105 /**
106 * Generate and output page HTML.
107 *
108 * @since 4.04.04
109 */
110 public function output() {
111 FrmAppHelper::include_svg();
112 $this->css();
113
114 echo '<div id="frm-admin-smtp" class="wrap frm-wrap frm-admin-plugin-landing">';
115
116 $this->output_section_heading();
117 $this->output_section_screenshot();
118 $this->output_section_step_install();
119 $this->output_section_step_setup();
120
121 echo '</div>';
122 }
123
124 /**
125 * Generate and output heading section HTML.
126 *
127 * @since 4.04.04
128 */
129 protected function output_section_heading() {
130 $size = array(
131 'height' => 90,
132 'width' => 90,
133 );
134
135 // Heading section.
136 ?>
137 <section class="top">
138 <div class="frm-smtp-logos">
139 <?php
140 FrmAppHelper::show_logo( $size );
141 FrmAppHelper::icon_by_class(
142 'frmfont frm_heart_solid_icon',
143 array(
144 'aria-label' => 'Loves',
145 'style' => 'width:30px;height:30px;margin:0 35px;',
146 'color' => '#d11c25',
147 )
148 );
149 $this->stmp_logo();
150 ?>
151 </div>
152 <h1><?php esc_html_e( 'Making Email Deliverability Easy for WordPress', 'formidable' ); ?></h1>
153 <p><?php esc_html_e( 'WP Mail SMTP allows you to easily set up WordPress to use a trusted provider to reliably send emails, including form notifications.', 'formidable' ); ?></p>
154 </section>
155 <?php
156 }
157
158 /**
159 * Generate and output screenshot section HTML.
160 *
161 * @since 4.04.04
162 */
163 protected function output_section_screenshot() {
164
165 printf(
166 '<section class="screenshot">
167 <div class="cont">
168 <img src="%1$s" alt="%2$s"/>
169 </div>
170 <ul>
171 <li>%3$s %4$s</li>
172 <li>%3$s %5$s</li>
173 <li>%3$s %6$s</li>
174 <li>%3$s %7$s</li>
175 </ul>
176 </section>',
177 esc_url( FrmAppHelper::plugin_url() . '/images/smtp-screenshot-tnail.png' ),
178 esc_attr__( 'WP Mail SMTP screenshot', 'formidable' ),
179 '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 492 492" width="14" height="14"><path d="M484 227L306 49a27 27 0 00-38 0l-16 16a27 27 0 000 38l104 105H27c-15 0-27 11-27 26v23c0 15 12 27 27 27h330L252 389a27 27 0 000 38l16 16a27 27 0 0038 0l178-178a27 27 0 000-38z" fill="#5bbfa5"/></svg> &nbsp;',
180 esc_html__( 'Over 1,000,000 websites use WP Mail SMTP.', 'formidable' ),
181 esc_html__( 'Send emails authenticated via trusted parties.', 'formidable' ),
182 esc_html__( 'Transactional Mailers: Pepipost, SendinBlue, Mailgun, SendGrid, Amazon SES.', 'formidable' ),
183 esc_html__( 'Web Mailers: Gmail, G Suite, Office 365, Outlook.com.', 'formidable' )
184 );
185 }
186
187 /**
188 * Generate and output step 'Install' section HTML.
189 *
190 * @since 4.04.04
191 */
192 protected function output_section_step_install() {
193
194 $step = $this->get_data_step_install();
195
196 if ( empty( $step ) ) {
197 return;
198 }
199
200 $icon = FrmAppHelper::icon_by_class(
201 'frmfont ' . $step['icon'],
202 array(
203 'aria-label' => __( 'Step 1', 'formidable' ),
204 'echo' => false,
205 'style' => 'width:50px;height:50px;',
206 )
207 );
208
209 /* translators: %s: Name of the plugin */
210 $label = sprintf( __( 'Install and Activate %s', 'formidable' ), 'WP Mail SMTP' );
211
212 printf(
213 '<section class="step step-install">
214 <aside class="num">
215 %1$s
216 <i class="loader hidden"></i>
217 </aside>
218 <div>
219 <h2>%2$s</h2>
220 <p>%3$s</p>
221 <span><a rel="%4$s" class="button button-primary frm-button-primary %5$s" aria-label="%6$s">%7$s</a></span>
222 </div>
223 </section>',
224 FrmAppHelper::kses( $icon, array( 'a', 'i', 'span', 'use', 'svg' ) ), // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
225 esc_html( $label ),
226 esc_html__( 'Install WP Mail SMTP from the WordPress.org plugin repository.', 'formidable' ),
227 esc_attr( $step['plugin'] ),
228 esc_attr( $step['button_class'] ),
229 esc_attr( $step['button_action'] ),
230 esc_html( $step['button_text'] )
231 );
232 }
233
234 /**
235 * Generate and output step 'Setup' section HTML.
236 *
237 * @since 4.04.04
238 */
239 protected function output_section_step_setup() {
240
241 $step = $this->get_data_step_setup();
242
243 if ( empty( $step ) ) {
244 return;
245 }
246
247 $icon = FrmAppHelper::icon_by_class(
248 'frmfont ' . $step['icon'],
249 array(
250 'aria-label' => __( 'Step 2', 'formidable' ),
251 'echo' => false,
252 'style' => 'width:50px;height:50px;',
253 )
254 );
255
256 printf(
257 '<section class="step step-setup %1$s">
258 <aside class="num">
259 %2$s
260 <i class="loader hidden"></i>
261 </aside>
262 <div>
263 <h2>%3$s</h2>
264 <p>%4$s</p>
265 <span><a href="%5$s" class="button button-primary frm-button-primary %6$s">%7$s</a></span>
266 </div>
267 </section>',
268 esc_attr( $step['section_class'] ),
269 FrmAppHelper::kses( $icon, array( 'a', 'i', 'span', 'use', 'svg' ) ), // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
270 esc_html__( 'Set Up WP Mail SMTP', 'formidable' ),
271 esc_html__( 'Select and configure your mailer.', 'formidable' ),
272 esc_url( admin_url( $this->config['smtp_settings'] ) ),
273 esc_attr( $step['button_class'] ),
274 esc_html( $step['button_text'] )
275 );
276 }
277
278 /**
279 * Step 'Install' data.
280 *
281 * @since 4.04.04
282 *
283 * @return array Step data.
284 */
285 protected function get_data_step_install() {
286
287 $lite_plugin = new FrmInstallPlugin( array( 'plugin_file' => $this->config['lite_plugin'] ) );
288 $pro_plugin = new FrmInstallPlugin( array( 'plugin_file' => $this->config['pro_plugin'] ) );
289
290 $this->output_data['plugin_installed'] = $lite_plugin->is_installed();
291 $this->output_data['pro_plugin_installed'] = $pro_plugin->is_installed();
292 $this->output_data['plugin_activated'] = false;
293 $this->output_data['plugin_setup'] = false;
294
295 $step = array(
296 'icon' => 'frm_step1_icon',
297 'button_action' => '',
298 );
299
300 $is_installed = $this->output_data['plugin_installed'] || $this->output_data['pro_plugin_installed'];
301 if ( ! $is_installed ) {
302 // Return the download url.
303 $step['button_text'] = __( 'Install WP Mail SMTP', 'formidable' );
304 $step['button_class'] = 'frm-install-addon';
305 $step['button_action'] = __( 'Install', 'formidable' );
306 $step['plugin'] = $this->config['lite_download_url'];
307 return $step;
308 }
309
310 $this->output_data['plugin_activated'] = $this->is_smtp_activated();
311 $this->output_data['plugin_setup'] = $this->is_smtp_configured();
312
313 $step['plugin'] = $this->output_data['pro_plugin_installed'] ? $this->config['pro_plugin'] : $this->config['lite_plugin'];
314
315 if ( $this->output_data['plugin_activated'] ) {
316 $step['icon'] = 'frm_step_complete_icon';
317 $step['button_text'] = __( 'WP Mail SMTP Installed & Activated', 'formidable' );
318 $step['button_class'] = 'grey disabled';
319 } else {
320 $step['button_text'] = __( 'Activate WP Mail SMTP', 'formidable' );
321 $step['button_class'] = 'frm-activate-addon';
322 $step['button_action'] = __( 'Activate', 'formidable' );
323 }
324
325 return $step;
326 }
327
328 /**
329 * Step 'Setup' data.
330 *
331 * @since 4.04.04
332 *
333 * @return array Step data.
334 */
335 protected function get_data_step_setup() {
336
337 $step = array();
338
339 $step['icon'] = 'frm_step2_icon';
340 $step['section_class'] = $this->output_data['plugin_activated'] ? '' : 'grey';
341 $step['button_text'] = esc_html__( 'Start Setup', 'formidable' );
342 $step['button_class'] = 'grey disabled';
343
344 if ( $this->output_data['plugin_setup'] ) {
345 $step['icon'] = 'frm_step_complete_icon';
346 $step['section_class'] = '';
347 $step['button_text'] = esc_html__( 'Go to SMTP settings', 'formidable' );
348 } elseif ( $this->output_data['plugin_activated'] ) {
349 $step['button_class'] = '';
350 }
351
352 return $step;
353 }
354
355 /**
356 * Whether WP Mail SMTP plugin configured or not.
357 *
358 * @since 4.04.04
359 *
360 * @return bool True if some mailer is selected and configured properly.
361 */
362 protected function is_smtp_configured() {
363
364 if ( ! $this->is_smtp_activated() ) {
365 return false;
366 }
367
368 $phpmailer = $this->get_phpmailer();
369
370 $mailer = WPMailSMTP\Options::init()->get( 'mail', 'mailer' );
371 $is_mailer_complete = wp_mail_smtp()->get_providers()->get_mailer( $mailer, $phpmailer )->is_mailer_complete();
372
373 return 'mail' !== $mailer && $is_mailer_complete;
374 }
375
376 /**
377 * Whether WP Mail SMTP plugin active or not.
378 *
379 * @since 4.04.04
380 *
381 * @return bool True if SMTP plugin is active.
382 */
383 protected function is_smtp_activated() {
384 return function_exists( 'wp_mail_smtp' ) && ( is_plugin_active( $this->config['lite_plugin'] ) || is_plugin_active( $this->config['pro_plugin'] ) );
385 }
386
387 /**
388 * Get $phpmailer instance.
389 *
390 * @since 4.04.04
391 *
392 * @return \WPMailSMTP\Providers\MailCatcherInterface|PHPMailer Instance of PHPMailer.
393 */
394 protected function get_phpmailer() {
395 global $phpmailer;
396
397 if ( ! is_object( $phpmailer ) || ! is_a( $phpmailer, 'PHPMailer' ) ) {
398 if ( is_callable( array( wp_mail_smtp(), 'generate_mail_catcher' ) ) ) {
399 $phpmailer = wp_mail_smtp()->generate_mail_catcher( true ); // phpcs:ignore
400 } else {
401 require_once ABSPATH . WPINC . '/class-phpmailer.php';
402 $phpmailer = new PHPMailer( true ); // phpcs:ignore
403 }
404 }
405
406 return $phpmailer;
407 }
408
409 /**
410 * Redirect to SMTP settings page if it is activated..
411 *
412 * @since 4.04.04
413 */
414 public function redirect_to_smtp_settings() {
415 if ( $this->is_smtp_configured() ) {
416 wp_safe_redirect( admin_url( $this->config['smtp_settings'] ) );
417 exit;
418 }
419 }
420
421 private function stmp_logo() {
422 ?>
423 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 60 60" height="90" width="90"><defs><style>.cls-11,.cls-12{fill-rule:evenodd}.cls-4{fill:none}.cls-11{fill:#86a196}.cls-12{fill:#fff}</style></defs><path class="cls-4" d="M-6.3 0h60v60h-60z"/><path d="M16.7 8.1a15.4 15.4 0 00-8 10.2 23.5 23.5 0 1030 0 15.4 15.4 0 00-9.3-10.8 3.4 3.4 0 00-2.1-2.7A4.6 4.6 0 0018.4 3a24.4 24.4 0 00-1.7 5z" fill="#395360" fill-rule="evenodd"/><path fill="#fbaa6f" d="M18 26h12v14H18z"/><path d="M25.9 33.2l-.1-.1a1.4 1.4 0 111.6-2.3 1.9 1.9 0 00-1.2.8 1.9 1.9 0 00-.3 1.6zm-4.5 0a1.8 1.8 0 00-.4-1.6 2 2 0 00-1.2-.8 1.4 1.4 0 011.6 2.3zm7.2-3.2h.5l-1 4.8-2.2 6.5h-4.3l-3.2-5.4 1.1-3.2 2.1 2.7c.6.5 2.7.5 3.8-.6a26.2 26.2 0 003.2-4.8z" fill="#dc7f3c" fill-rule="evenodd"/><path d="M9.7 29H15v-9h-4a13 13 0 017.4-10q1.2-5 2.8-6.8l.1-.1.1-.1a2.3 2.3 0 011.1-.5 2.3 2.3 0 012.2 3.8 1.6 1.6 0 01-.4.3A15 15 0 0023 8a5 5 0 013-1.5 1.4 1.4 0 01.7.2 1.3 1.3 0 01.5 1.8 1.3 1.3 0 01-.6.6 13 13 0 0110.1 11l.1.8H33v8h4.8l1.8 13.4q-6.3 4-15.8 4T8 42.4zM25 38.4q3.8-6.4 3.8-7.6c0-2.2-3.2-4-4.8-4s-4.9 1.7-4.9 4q0 1.2 3.8 7.6a1.2 1.2 0 001 .6 1 1 0 001-.6z" fill="#bdcfc8" fill-rule="evenodd"/><path class="cls-4" d="M19 31h9.6L27 47.2h-6.4l-1.6-16z"/><path d="M39.8 48.8a20 20 0 01-32 0l.8-6a2.7 2.7 0 001 .1 2.8 2.8 0 002.8-2.4v1.2a2.8 2.8 0 005.6 0v1.6a2.9 2.9 0 005.7 0 2.8 2.8 0 005.7 0v-1.6a2.8 2.8 0 105.7 0v-1.2A2.8 2.8 0 0038 43a2.9 2.9 0 001-.2l.8 6z" fill="#809eb0" fill-rule="evenodd"/><path d="M8.3 44.6l.3-1.8a2.7 2.7 0 001 .2 2.8 2.8 0 002.8-2.5v1.2a2.8 2.8 0 005.7 0v1.7a2.9 2.9 0 005.6 0 2.8 2.8 0 005.7 0v-1.7a2.8 2.8 0 105.7 0v-1.2A2.8 2.8 0 0038 43a2.9 2.9 0 001-.2l.3 2a2.9 2.9 0 01-4.1-2.2v1.2a2.8 2.8 0 11-5.7 0v1.6a2.8 2.8 0 01-5.7 0 2.9 2.9 0 01-5.7 0v-1.7a2.8 2.8 0 01-5.7 0v-1.2A2.8 2.8 0 019.6 45a2.9 2.9 0 01-1.3-.3z" fill="#738e9e" fill-rule="evenodd"/><path class="cls-11" d="M37.8 22.4c-1-2.9-3-4.7-4.7-4.5-2.2.2-2.8 3.7-2.3 8s1.7 7.5 3.9 7.3 4-3.9 3.6-8c0 1.2-.5 2.3-1.3 2.4-1.2 0-1.5-1.2-1.6-2.9s-.2-3 1-3a1.5 1.5 0 011.4.7z"/><path class="cls-12" d="M37 21.8c-.6-1.3-1.5-2-2.4-1.9-1.5.1-1.9 2.6-1.6 5.5s1.2 5.1 2.7 5c1.1-.2 2-1.5 2.2-3.4a1.2 1.2 0 01-1 .6c-1 0-1.4-1.2-1.5-2.9s-.1-3 1-3a1.6 1.6 0 01.6 0z"/><path class="cls-11" d="M9.6 22.4c1-2.9 3-4.7 4.7-4.5 2.2.2 2.8 3.7 2.3 8s-1.7 7.5-3.9 7.3-4-3.9-3.7-8c.1 1.2.5 2.3 1.4 2.4 1.1 0 1.5-1.2 1.6-2.9s.1-3-1-3a1.5 1.5 0 00-1.4.7z"/><path class="cls-12" d="M10.4 21.8c.6-1.3 1.5-2 2.4-1.9 1.5.1 1.8 2.6 1.5 5.5s-1.1 5.1-2.6 5c-1.1-.2-2-1.5-2.2-3.4a1.2 1.2 0 00.9.6c1.1 0 1.4-1.2 1.6-2.9s.1-3-1-3a1.7 1.7 0 00-.7 0z"/><path d="M19 28.6a5.3 5.3 0 010-.7c0-2.4 1.2-5.2 4.9-5.2s4.8 2.8 4.8 5.2a4.4 4.4 0 010 1c-.9-1.3-2.4-2.1-4.9-2.1-2.4 0-3.9.7-4.8 1.8z" fill="#f4f8ff" fill-rule="evenodd"/><path class="cls-11" d="M26.5 9.2L23.3 9l4-1.2a1.4 1.4 0 01-.8 1.4zm-3.5-1l-1.3 1a16.8 16.8 0 002-3.8 6.6 6.6 0 00.3-2.7A2.4 2.4 0 0125.2 5a2.4 2.4 0 01-.7 1.5A15 15 0 0023 8.1z"/></svg>
424 <?php
425 }
426
427 private function css() {
428 ?>
429 <style>
430 #frm-admin-smtp *, #frm-admin-smtp *::before, #frm-admin-smtpp *::after {
431 -webkit-box-sizing: border-box;
432 -moz-box-sizing: border-box;
433 box-sizing: border-box;
434 }
435 #frm-admin-smtp{
436 width: 700px;
437 margin: 0 auto;
438 }
439 #frm-admin-smtp p {
440 font-size: 15px;
441 }
442 #frm-admin-smtp section{
443 margin: 50px 0;
444 text-align: left;
445 clear: both;
446 }
447 #frm-admin-smtp .top{
448 text-align: center;
449 }
450 .frm-smtp-logos {
451 margin-bottom: 38px;
452 }
453 .frm-smtp-logos svg {
454 vertical-align: middle;
455 }
456 #frm-admin-smtp .top h1 {
457 font-size: 26px;
458 font-weight: 600;
459 margin-bottom: 0;
460 padding: 0;
461 }
462 #frm-admin-smtp .top p {
463 font-size: 17px;
464 color: #777;
465 margin-top: .5em;
466 }
467 #frm-admin-smtp .screenshot ul {
468 display: inline-block;
469 margin: 0 0 0 30px;
470 list-style-type: none;
471 max-width: calc(100% - 350px);
472 }
473 #frm-admin-smtp .screenshot li {
474 margin: 16px 0;
475 padding: 0;
476 font-size: 15px;
477 color: #777;
478 }
479 #frm-admin-smtp .screenshot .cont img {
480 max-width: 100%;
481 display: block;
482 }
483 #frm-admin-smtp .screenshot .cont {
484 display: inline-block;
485 position: relative;
486 width: 315px;
487 padding: 5px;
488 background-color: #fff;
489 border-radius: 3px;
490 }
491 #frm-admin-smtp .step,
492 #frm-admin-smtp .screenshot .cont {
493 -webkit-box-shadow: 0px 2px 5px 0px rgba(0, 0, 0, 0.05);
494 -moz-box-shadow: 0px 2px 5px 0px rgba(0, 0, 0, 0.05);
495 box-shadow: 0px 2px 5px 0px rgba(0, 0, 0, 0.05);
496 }
497 #frm-admin-smtp .step {
498 background-color: #F9F9F9;
499 border: 1px solid #E5E5E5;
500 margin: 0 0 25px;
501 }
502 #frm-admin-smtp .screenshot > *,
503 #frm-admin-smtp .step > * {
504 vertical-align: middle;
505 }
506 #frm-admin-smtp .step p {
507 font-size: 16px;
508 color: #777777;
509 }
510 #frm-admin-smtp .step .num {
511 display: inline-block;
512 position: relative;
513 width: 100px;
514 height: 50px;
515 text-align: center;
516 }
517 #frm-admin-smtp .step div {
518 display: inline-block;
519 width: calc(100% - 104px);
520 background-color: #fff;
521 padding: 30px;
522 border-left: 1px solid #eee;
523 }
524 #frm-admin-smtp .grey {
525 opacity: 0.5;
526 background: #F6F6F6 !important;
527 border-color: #ddd !important;
528 color: #9FA5AA !important;
529 }
530 #frm-admin-smtp .step h2 {
531 font-size: 24px;
532 line-height: 22px;
533 margin-top: 0;
534 margin-bottom: 15px;
535 }
536 #frm-admin-smtp .button.disabled {
537 cursor: default;
538 }
539 </style>
540 <?php
541 }
542 }
543