PluginProbe
Formidable Forms – WordPress Form Builder for Contact Forms, Calculators, Quizzes & More / 6.26.1
Formidable Forms – WordPress Form Builder for Contact Forms, Calculators, Quizzes & More v6.26.1
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 6.26.1, at classes/controllers/FrmSMTPController.php

571 lines 16.6 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 * @return void
49 */
50 public static function load_hooks() {
51
52 add_filter( 'wp_mail_smtp_is_white_labeled', '__return_true' );
53
54 $self = new self();
55
56 if ( wp_doing_ajax() ) {
57 add_action( 'wp_ajax_frm_smtp_page_check_plugin_status', array( $self, 'ajax_check_plugin_status' ) );
58 }
59
60 add_filter( 'wp_mail_smtp_core_get_upgrade_link', array( $self, 'link' ) );
61 add_action( 'admin_menu', array( $self, 'menu' ), 999 );
62 add_action( 'wp_mail_smtp_core_recommendations_plugins', 'FrmSMTPController::remove_wpforms_nag' );
63
64 // Only load if we are actually on the SMTP page.
65 if ( ! FrmAppHelper::is_admin_page( $self->slug ) ) {
66 return;
67 }
68
69 add_action( 'admin_init', array( $self, 'redirect_to_smtp_settings' ) );
70
71 // Hook for addons.
72 do_action( 'frm_admin_pages_smtp_hooks' );
73 }
74
75 /**
76 * Customize the upgrade link.
77 *
78 * @param string $link
79 *
80 * @return string
81 */
82 public function link( $link ) {
83 $new_link = 'formidableforms.com/go-wp-mail-smtp/?urllink=wpmailsmtp%2Ecom%2Flite%2Dupgrade&';
84 $link = str_replace( 'wpmailsmtp.com/lite-upgrade/?', $new_link, $link );
85 return $link;
86 }
87
88 /**
89 * Don't nag people to install WPForms
90 *
91 * @since 4.04.04
92 *
93 * @param array $upsell
94 *
95 * @return array
96 */
97 public static function remove_wpforms_nag( $upsell ) {
98 if ( is_array( $upsell ) ) {
99 foreach ( $upsell as $k => $plugin ) {
100 if ( strpos( $plugin['slug'], 'wpforms' ) !== false ) {
101 unset( $upsell[ $k ] );
102 }
103 }
104 }
105
106 return $upsell;
107 }
108
109 /**
110 * SMTP submenu page.
111 *
112 * @return void
113 */
114 public function menu() {
115 add_submenu_page( 'formidable', __( 'SMTP', 'formidable' ) . ' | Formidable', __( 'SMTP', 'formidable' ), 'activate_plugins', $this->slug, array( $this, 'output' ) );
116 }
117
118 /**
119 * Generate and output page HTML.
120 *
121 * @since 4.04.04
122 *
123 * @return void
124 */
125 public function output() {
126 FrmAppHelper::include_svg();
127 $this->css();
128
129 echo '<div id="frm-admin-smtp" class="wrap frm-wrap frm-admin-plugin-landing">';
130
131 $this->output_section_heading();
132 $this->output_section_screenshot();
133 $this->output_section_step_install();
134 $this->output_section_step_setup();
135
136 echo '</div>';
137 }
138
139 /**
140 * Generate and output heading section HTML.
141 *
142 * @since 4.04.04
143 *
144 * @return void
145 */
146 protected function output_section_heading() {
147 $size = array(
148 'height' => 90,
149 'width' => 90,
150 );
151
152 // Heading section.
153 ?>
154 <section class="top">
155 <div class="frm-smtp-logos">
156 <?php
157 FrmAppHelper::show_logo( $size );
158 FrmAppHelper::icon_by_class(
159 'frmfont frm_heart_solid_icon',
160 array(
161 'aria-label' => 'Loves',
162 'style' => 'width:30px;height:30px;margin:0 35px;',
163 'color' => '#d11c25',
164 )
165 );
166 $this->stmp_logo();
167 ?>
168 </div>
169 <h1><?php esc_html_e( 'Making Email Deliverability Easy for WordPress', 'formidable' ); ?></h1>
170 <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>
171 </section>
172 <?php
173 }
174
175 /**
176 * Generate and output screenshot section HTML.
177 *
178 * @since 4.04.04
179 *
180 * @return void
181 */
182 protected function output_section_screenshot() {
183
184 printf(
185 '<section class="screenshot">
186 <div class="cont">
187 <img src="%1$s" alt="%2$s"/>
188 </div>
189 <ul>
190 <li>%3$s %4$s</li>
191 <li>%3$s %5$s</li>
192 <li>%3$s %6$s</li>
193 <li>%3$s %7$s</li>
194 </ul>
195 </section>',
196 esc_url( FrmAppHelper::plugin_url() . '/images/smtp-screenshot-tnail.png' ),
197 esc_attr__( 'WP Mail SMTP screenshot', 'formidable' ),
198 '<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;',
199 esc_html__( 'Over 1,000,000 websites use WP Mail SMTP.', 'formidable' ),
200 esc_html__( 'Send emails authenticated via trusted parties.', 'formidable' ),
201 esc_html__( 'Transactional Mailers: Pepipost, SendinBlue, Mailgun, SendGrid, Amazon SES.', 'formidable' ),
202 esc_html__( 'Web Mailers: Gmail, G Suite, Office 365, Outlook.com.', 'formidable' )
203 );
204 }
205
206 /**
207 * Generate and output step 'Install' section HTML.
208 *
209 * @since 4.04.04
210 *
211 * @return void
212 */
213 protected function output_section_step_install() {
214
215 $step = $this->get_data_step_install();
216
217 if ( empty( $step ) ) {
218 return;
219 }
220
221 $icon = FrmAppHelper::icon_by_class(
222 'frmfont ' . $step['icon'],
223 array(
224 'aria-label' => __( 'Step 1', 'formidable' ),
225 'echo' => false,
226 'style' => 'width:50px;height:50px;',
227 )
228 );
229
230 /* translators: %s: Name of the plugin */
231 $label = sprintf( __( 'Install and Activate %s', 'formidable' ), 'WP Mail SMTP' );
232
233 printf(
234 '<section class="step step-install">
235 <aside class="num">
236 %1$s
237 <i class="loader hidden"></i>
238 </aside>
239 <div>
240 <h2>%2$s</h2>
241 <p>%3$s</p>
242 <span><a rel="%4$s" class="button button-primary frm-button-primary %5$s" aria-label="%6$s">%7$s</a></span>
243 </div>
244 </section>',
245 FrmAppHelper::kses( $icon, array( 'a', 'i', 'span', 'use', 'svg' ) ), // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
246 esc_html( $label ),
247 esc_html__( 'Install WP Mail SMTP from the WordPress.org plugin repository.', 'formidable' ),
248 esc_attr( $step['plugin'] ),
249 esc_attr( $step['button_class'] ),
250 esc_attr( $step['button_action'] ),
251 esc_html( $step['button_text'] )
252 );
253 }
254
255 /**
256 * Generate and output step 'Setup' section HTML.
257 *
258 * @since 4.04.04
259 *
260 * @return void
261 */
262 protected function output_section_step_setup() {
263
264 $step = $this->get_data_step_setup();
265
266 if ( empty( $step ) ) {
267 return;
268 }
269
270 $icon = FrmAppHelper::icon_by_class(
271 'frmfont ' . $step['icon'],
272 array(
273 'aria-label' => __( 'Step 2', 'formidable' ),
274 'echo' => false,
275 'style' => 'width:50px;height:50px;',
276 )
277 );
278
279 printf(
280 '<section class="step step-setup %1$s">
281 <aside class="num">
282 %2$s
283 <i class="loader hidden"></i>
284 </aside>
285 <div>
286 <h2>%3$s</h2>
287 <p>%4$s</p>
288 <span><a href="%5$s" class="button button-primary frm-button-primary %6$s">%7$s</a></span>
289 </div>
290 </section>',
291 esc_attr( $step['section_class'] ),
292 FrmAppHelper::kses( $icon, array( 'a', 'i', 'span', 'use', 'svg' ) ), // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
293 esc_html__( 'Set Up WP Mail SMTP', 'formidable' ),
294 esc_html__( 'Select and configure your mailer.', 'formidable' ),
295 esc_url( admin_url( $this->config['smtp_settings'] ) ),
296 esc_attr( $step['button_class'] ),
297 esc_html( $step['button_text'] )
298 );
299 }
300
301 /**
302 * Step 'Install' data.
303 *
304 * @since 4.04.04
305 *
306 * @return array Step data.
307 */
308 protected function get_data_step_install() {
309
310 $lite_plugin = new FrmInstallPlugin( array( 'plugin_file' => $this->config['lite_plugin'] ) );
311 $pro_plugin = new FrmInstallPlugin( array( 'plugin_file' => $this->config['pro_plugin'] ) );
312
313 $this->output_data['plugin_installed'] = $lite_plugin->is_installed();
314 $this->output_data['pro_plugin_installed'] = $pro_plugin->is_installed();
315 $this->output_data['plugin_activated'] = false;
316 $this->output_data['plugin_setup'] = false;
317
318 $step = array(
319 'icon' => 'frm_step1_icon',
320 'button_action' => '',
321 );
322
323 $is_installed = $this->output_data['plugin_installed'] || $this->output_data['pro_plugin_installed'];
324
325 if ( ! $is_installed ) {
326 // Return the download url.
327 $step['button_text'] = __( 'Install WP Mail SMTP', 'formidable' );
328 $step['button_class'] = 'frm-install-addon';
329 $step['button_action'] = __( 'Install', 'formidable' );
330 $step['plugin'] = $this->config['lite_download_url'];
331 return $step;
332 }
333
334 $this->output_data['plugin_activated'] = $this->is_smtp_activated();
335 $this->output_data['plugin_setup'] = $this->is_smtp_configured();
336
337 $step['plugin'] = $this->output_data['pro_plugin_installed'] ? $this->config['pro_plugin'] : $this->config['lite_plugin'];
338
339 if ( $this->output_data['plugin_activated'] ) {
340 $step['icon'] = 'frm_step_complete_icon';
341 $step['button_text'] = __( 'WP Mail SMTP Installed & Activated', 'formidable' );
342 $step['button_class'] = 'grey disabled';
343 } else {
344 $step['button_text'] = __( 'Activate WP Mail SMTP', 'formidable' );
345 $step['button_class'] = 'frm-activate-addon';
346 $step['button_action'] = __( 'Activate', 'formidable' );
347 }
348
349 return $step;
350 }
351
352 /**
353 * Step 'Setup' data.
354 *
355 * @since 4.04.04
356 *
357 * @return array Step data.
358 */
359 protected function get_data_step_setup() {
360
361 $step = array();
362
363 $step['icon'] = 'frm_step2_icon';
364 $step['section_class'] = $this->output_data['plugin_activated'] ? '' : 'grey';
365 $step['button_text'] = esc_html__( 'Start Setup', 'formidable' );
366 $step['button_class'] = 'grey disabled';
367
368 if ( $this->output_data['plugin_setup'] ) {
369 $step['icon'] = 'frm_step_complete_icon';
370 $step['section_class'] = '';
371 $step['button_text'] = esc_html__( 'Go to SMTP settings', 'formidable' );
372 } elseif ( $this->output_data['plugin_activated'] ) {
373 $step['button_class'] = '';
374 }
375
376 return $step;
377 }
378
379 /**
380 * Whether WP Mail SMTP plugin configured or not.
381 *
382 * @since 4.04.04
383 *
384 * @return bool True if some mailer is selected and configured properly.
385 */
386 protected function is_smtp_configured() {
387
388 if ( ! $this->is_smtp_activated() ) {
389 return false;
390 }
391
392 $phpmailer = $this->get_phpmailer();
393
394 $mailer = WPMailSMTP\Options::init()->get( 'mail', 'mailer' );
395 $is_mailer_complete = wp_mail_smtp()->get_providers()->get_mailer( $mailer, $phpmailer )->is_mailer_complete();
396
397 return 'mail' !== $mailer && $is_mailer_complete;
398 }
399
400 /**
401 * Whether WP Mail SMTP plugin active or not.
402 *
403 * @since 4.04.04
404 *
405 * @return bool True if SMTP plugin is active.
406 */
407 protected function is_smtp_activated() {
408 return function_exists( 'wp_mail_smtp' ) && ( is_plugin_active( $this->config['lite_plugin'] ) || is_plugin_active( $this->config['pro_plugin'] ) );
409 }
410
411 /**
412 * Get $phpmailer instance.
413 *
414 * @since 4.04.04
415 *
416 * @return PHPMailer|\WPMailSMTP\Providers\MailCatcherInterface Instance of PHPMailer.
417 */
418 protected function get_phpmailer() {
419 global $phpmailer;
420
421 if ( ! is_object( $phpmailer ) || ! is_a( $phpmailer, 'PHPMailer' ) ) {
422 if ( is_callable( array( wp_mail_smtp(), 'generate_mail_catcher' ) ) ) {
423 $phpmailer = wp_mail_smtp()->generate_mail_catcher( true ); // phpcs:ignore
424 } else {
425 require_once ABSPATH . WPINC . '/class-phpmailer.php';
426 $phpmailer = new PHPMailer( true ); // phpcs:ignore
427 }
428 }
429
430 return $phpmailer;
431 }
432
433 /**
434 * Redirect to SMTP settings page if it is activated..
435 *
436 * @since 4.04.04
437 *
438 * @return void
439 */
440 public function redirect_to_smtp_settings() {
441 if ( $this->is_smtp_configured() ) {
442 wp_safe_redirect( admin_url( $this->config['smtp_settings'] ) );
443 exit;
444 }
445 }
446
447 /**
448 * @return void
449 */
450 private function stmp_logo() {
451 ?>
452 <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>
453 <?php
454 }
455
456 /**
457 * @return void
458 */
459 private function css() {
460 ?>
461 <style>
462 #frm-admin-smtp *, #frm-admin-smtp *::before, #frm-admin-smtpp *::after {
463 box-sizing: border-box;
464 }
465 #frm-admin-smtp{
466 width: 700px;
467 margin: 0 auto;
468 }
469 #frm-admin-smtp p {
470 font-size: 15px;
471 }
472 #frm-admin-smtp section{
473 margin: 50px 0;
474 text-align: left;
475 clear: both;
476 }
477 #frm-admin-smtp .top{
478 text-align: center;
479 }
480 .frm-smtp-logos {
481 margin-bottom: 38px;
482 }
483 .frm-smtp-logos svg {
484 vertical-align: middle;
485 }
486 #frm-admin-smtp .top h1 {
487 font-size: 26px;
488 font-weight: 600;
489 margin-bottom: 0;
490 padding: 0;
491 }
492 #frm-admin-smtp .top p {
493 font-size: 17px;
494 color: #777;
495 margin-top: .5em;
496 }
497 #frm-admin-smtp .screenshot ul {
498 display: inline-block;
499 margin: 0 0 0 30px;
500 list-style-type: none;
501 max-width: calc(100% - 350px);
502 }
503 #frm-admin-smtp .screenshot li {
504 margin: 16px 0;
505 padding: 0;
506 font-size: 15px;
507 color: #777;
508 }
509 #frm-admin-smtp .screenshot .cont img {
510 max-width: 100%;
511 display: block;
512 }
513 #frm-admin-smtp .screenshot .cont {
514 display: inline-block;
515 position: relative;
516 width: 315px;
517 padding: 5px;
518 background-color: #fff;
519 border-radius: 3px;
520 }
521 #frm-admin-smtp .step,
522 #frm-admin-smtp .screenshot .cont {
523 box-shadow: 0px 2px 5px 0px rgba(0, 0, 0, 0.05);
524 }
525 #frm-admin-smtp .step {
526 background-color: #F9F9F9;
527 border: 1px solid #E5E5E5;
528 margin: 0 0 25px;
529 }
530 #frm-admin-smtp .screenshot > *,
531 #frm-admin-smtp .step > * {
532 vertical-align: middle;
533 }
534 #frm-admin-smtp .step p {
535 font-size: 16px;
536 color: #777777;
537 }
538 #frm-admin-smtp .step .num {
539 display: inline-block;
540 position: relative;
541 width: 100px;
542 height: 50px;
543 text-align: center;
544 }
545 #frm-admin-smtp .step div {
546 display: inline-block;
547 width: calc(100% - 104px);
548 background-color: #fff;
549 padding: 30px;
550 border-left: 1px solid #eee;
551 }
552 #frm-admin-smtp .grey {
553 opacity: 0.5;
554 background: #F6F6F6 !important;
555 border-color: #ddd !important;
556 color: #9FA5AA !important;
557 }
558 #frm-admin-smtp .step h2 {
559 font-size: 24px;
560 line-height: 22px;
561 margin-top: 0;
562 margin-bottom: 15px;
563 }
564 #frm-admin-smtp .button.disabled {
565 cursor: default;
566 }
567 </style>
568 <?php
569 }
570 }
571