static function display_options() { // This displays the options menu in the admin area $tab_names = array(__('Basic Settings', 'si-contact-form'), __('Fields', 'si-contact-form'), __('Styles', 'si-contact-form'), __('Labels', 'si-contact-form'), __('Security', 'si-contact-form'), __('Advanced', 'si-contact-form'), __('Scheduling', 'si-contact-form'), __('Tools', 'si-contact-form'), __('Newsletter', 'si-contact-form')); $num_tabs = count($tab_names); self::define_ads(); // Process ctf_actions, if any if (!empty($_POST['ctf_action'])) { FSCF_Action::do_ctf_action(); } // Load the options into the options array self::get_options(); // The update_lang function receives the array by ref., so it can be changed FSCF_Util::update_lang(self::$form_options); FSCF_Util::update_lang(self::$form_defaults); self::set_fld_array(); // Create a header in the default WordPress 'wrap' container ?> <div class="wrap"> <script type="text/javascript"> // Set up tabs for options page (selected supports jQuery ui pre-1.9) jQuery(function() { jQuery( "#fscf-tabs" ).tabs({ active: <?php echo esc_js(self::$current_tab) - 1; ?> , selected: <?php echo esc_js(self::$current_tab) - 1; ?> }); }); </script> <?php echo "\n"; ?> <div class="fscf_statbox"> <?php // Display plugin ratings if (function_exists('get_transient')) { require_once ABSPATH . 'wp-admin/includes/plugin-install.php'; // First, try to access the data, check the cache. if (false === ($api = get_transient('si_contact_form_info'))) { // The cache data doesn't exist or it's expired. $api = plugins_api('plugin_information', array('slug' => 'si-contact-form')); if (!is_wp_error($api)) { // cache isn't up to date, write this fresh information to it now to avoid the query for xx time. $myexpire = 60 * 15; // Cache data for 15 minutes set_transient('si_contact_form_info', $api, $myexpire); } } if (!is_wp_error($api)) { $plugins_allowedtags = array('a' => array('href' => array(), 'title' => array(), 'target' => array()), 'abbr' => array('title' => array()), 'acronym' => array('title' => array()), 'code' => array(), 'pre' => array(), 'em' => array(), 'strong' => array(), 'div' => array(), 'p' => array(), 'ul' => array(), 'ol' => array(), 'li' => array(), 'h1' => array(), 'h2' => array(), 'h3' => array(), 'h4' => array(), 'h5' => array(), 'h6' => array(), 'img' => array('src' => array(), 'class' => array(), 'alt' => array())); //Sanitize HTML foreach ((array) $api->sections as $section_name => $content) { $api->sections[$section_name] = wp_kses($content, $plugins_allowedtags); } foreach (array('version', 'author', 'requires', 'tested', 'homepage', 'downloaded', 'slug') as $key) { $api->{$key} = wp_kses($api->{$key}, $plugins_allowedtags); } if (!empty($api->downloaded)) { echo sprintf(__('Downloaded %s times.', 'si-contact-form'), number_format_i18n($api->downloaded)); } ?> <?php if (!empty($api->rating)) { ?> <div class="fcs-star-holder" title="<?php echo esc_attr(sprintf(__('(Average rating based on %s ratings)', 'si-contact-form'), number_format_i18n($api->num_ratings))); ?> "> <div class="fcs-star fcs-star-rating" style="width: <?php echo esc_attr($api->rating); ?> px"></div> <div class="fcs-star fcs-star5"><img src="<?php echo FSCF_URL . 'includes/star.png'; ?> " alt="<?php esc_attr_e('5 stars', 'si-contact-form'); ?> " /></div> <div class="fcs-star fcs-star4"><img src="<?php echo FSCF_URL . 'includes/star.png'; ?> " alt="<?php esc_attr_e('4 stars', 'si-contact-form'); ?> " /></div> <div class="fcs-star fcs-star3"><img src="<?php echo FSCF_URL . 'includes/star.png'; ?> " alt="<?php esc_attr_e('3 stars', 'si-contact-form'); ?> " /></div> <div class="fcs-star fcs-star2"><img src="<?php echo FSCF_URL . 'includes/star.png'; ?> " alt="<?php esc_attr_e('2 stars', 'si-contact-form'); ?> " /></div> <div class="fcs-star fcs-star1"><img src="<?php echo FSCF_URL . 'includes/star.png'; ?> " alt="<?php esc_attr_e('1 star', 'si-contact-form'); ?> " /></div> </div> <small><?php echo sprintf(__('(Average rating based on %s ratings)', 'si-contact-form'), number_format_i18n($api->num_ratings)); ?> <a target="_blank" href="http://wordpress.org/support/view/plugin-reviews/si-contact-form?rate=5#postform"> <?php _e('rate', 'si-contact-form'); ?> </a></small> <br /> <?php } } // if ( !is_wp_error($api) } // end if (function_exists('get_transient' if (isset($api->version)) { if (version_compare($api->version, FSCF_VERSION, '>')) { echo '<div id="message" class="updated">'; echo '<a href="' . admin_url('plugins.php') . '">' . sprintf(__('A newer version of Fast Secure Contact Form is available: %s', 'si-contact-form'), $api->version) . '</a>'; echo "</div>\n"; } else { echo sprintf(__('Version %s (up to date)', 'si-contact-form'), FSCF_VERSION); } } // end div fscf_statbox ?> </div> <p> <a href="http://wordpress.org/extend/plugins/si-contact-form/changelog/" target="_blank"><?php _e('Changelog', 'si-contact-form'); ?> </a> | <a href="http://www.fastsecurecontactform.com/faq-wordpress-version" target="_blank"><?php _e('FAQ', 'si-contact-form'); ?> </a> | <a href="http://wordpress.org/support/plugin/si-contact-form" target="_blank"><?php _e('Support Forum', 'si-contact-form'); ?> </a> | <a href="http://www.fastsecurecontactform.com/support" target="_blank"><?php _e('Support Ticket', 'si-contact-form'); ?> </a> | <a href="http://wordpress.org/support/view/plugin-reviews/si-contact-form?rate=5#postform" target="_blank"><?php _e('Rate This', 'si-contact-form'); ?> </a> | <a href="https://www.fastsecurecontactform.com/donate" target="_blank"><?php _e('Donate', 'si-contact-form'); ?> </a> </p> <?php /* --- vCita Header Error Messages - Start --- */ if (self::$global_options['vcita_show_disable_msg'] == 'true') { // Put visible notification that vCita was removed. echo '<div class="fsc-success">' . __('vCita Meeting Scheduler has been disabled.', 'si-contact-form'); echo '</div><div style="clear:both;display:block"></div>'; self::$global_options = FSCF_Util::get_global_options(); self::$global_options['vcita_show_disable_msg'] = 'false'; update_option('fs_contact_global', self::$global_options); } else { FSCF_Process::vcita_print_admin_page_notification(self::$form_options, self::$global_options); } /* --- vCita Header Error Messages - End --- */ // action hook for database extension menu do_action('fsctf_menu_links'); ?> <h2><?php _e('Fast Secure Contact Form Settings', 'si-contact-form'); ?> </h2> <?php settings_errors(); // Display form select control // Has a preview been selected? $preview = isset($_POST['ctf_action']) && __('Preview Form', 'si-contact-form') == $_POST['ctf_action'] ? true : false; ?> <div class="fscf_left"> <form id="fscf_form_control" action="<?php echo admin_url('plugins.php?page=si-contact-form/si-contact-form.php&fscf_form=' . self::$current_form) . '&fscf_tab=' . self::$current_tab; ?> " method="post" name="previewform"> <?php wp_nonce_field('fs_contact_options-options', 'fs_options'); // The value of the ctf_action field will be set by javascript when needed ?> <input type="hidden" name="ctf_action" id="ctf_action" value="<?php $preview ? _e('Preview Form', 'si-contact-form') : _e('Edit Form', 'si-contact-form'); ?> " /> <div class="fscf_select_form"><strong><?php _e('Select a Form', 'si-contact-form'); ?> : </strong> <select id="form_select" name="<?php echo self::$current_form; ?> " onchange="fscf_set_form('<?php _e('Add Form', 'si-contact-form'); ?> ');"> <?php // above was onchange="setForm(this.form)" // Display forms select list foreach (self::$global_options['form_list'] as $key => $val) { echo '<option value="' . esc_attr($key) . '"'; if ((int) self::$current_form == $key) { echo ' selected="selected"'; } echo '>' . sprintf(__('Form %d: %s', 'si-contact-form'), esc_html($key), esc_html($val)) . "</option>\n"; } echo '<option value="0">' . esc_html(__('Add a New Form', 'si-contact-form')) . "</option>\n"; ?> </select> <span class="submit"> <input id="preview" class="button-primary" type="submit" value="<?php // When submit button is pressed, this will override the value of the hidden field // named ctf_action if ($preview) { _e('Edit Form', 'si-contact-form'); } else { _e('Preview Form', 'si-contact-form'); } ?> " name="ctf_action" /> </span> </div> </form> </div> <div id="ctf-loading"> <?php echo '<img src="' . plugins_url('si-contact-form/includes/ctf-loading.gif') . '" width="32" height="32" alt="' . esc_attr(__('Loading...', 'si-contact-form')) . '" />'; ?> </div> <div class='fscf_clear'></div> <?php // If Preview is selected, preview the form. Otherwise display the settings menu if ($preview) { echo FSCF_Display::process_short_code(array('form' => self::$current_form)); } else { ?> <form id="fscf-optionsform" name="fscf-optionsform" class="fscf_clear" action="options.php" method="post" enctype="multipart/form-data"> <?php wp_nonce_field('fs_contact_options-options', 'fs_options'); ?> <div> <input type="hidden" name="form-changed" id="form-changed" value="0"/> <input type="hidden" id="cur_tab" name="current_tab" value="<?php echo self::$current_tab; ?> "/> <input type="hidden" id="admin_url" value="<?php echo admin_url(); ?> "/> </div><div id="fscf-tabs"> <ul id="fscf-tab-list"> <?php // Display the tab labels $i = 1; for ($i = 1; $i <= $num_tabs; $i++) { echo '<li id="fscf-tab' . $i . '"'; // select the current tab echo '><a href="#fscf-tabs-' . $i . '">' . esc_html($tab_names[$i - 1]) . '</a></li> '; } ?> </ul> <?php // Display the tab contents for ($i = 1; $i <= $num_tabs; $i++) { echo '<div id="fscf-tabs-' . $i . '">'; settings_fields('fs_contact_options'); do_settings_sections('tab_page' . $i); if ($i < $num_tabs) { // submit_button(); // XXX if moving tabs around, you have may have to change 8 to a diff number, also make a change in fscf-scripts-admin.js if (tabId < 8) { if ($i != 8) { // skip tab 8 for the tools tab ?> <p class="submit"> <input id="submit<?php echo $i; ?> " class="button-primary" type="submit" value="<?php esc_attr_e('Save Changes', 'si-contact-form'); ?> " onclick="document.pressed=this.value" name="submit" /> </p> <?php } } echo ' </div>'; } ?> </div> <!-- </form> --> <?php ?> </div> <?php } }
static function set_form_error($fld, $msg) { // Sets a form error for field $fld with message $msg // This is called from FSCF_Process class functions // The key is 'field' plus the field index number, or a special name such as // capctha, f_name, fscf_select, etc. self::$form_errors[$fld] = $msg; self::$contact_error = 1; // Set the error flag }
static function check_captcha() { // begin captcha check if enabled // captcha is optional but recommended to prevent spam bots from spamming your contact form if (FSCF_Display::is_captcha_enabled(self::$form_id_num)) { $captcha_code = FSCF_Util::clean_input($_POST['captcha_code']); if (self::$global_options['enable_php_sessions'] == 'true') { // this feature only works when PHP sessions are enabled //captcha with PHP sessions if (!isset($_SESSION['securimage_code_ctf_' . self::$form_id_num]) || empty($_SESSION['securimage_code_ctf_' . self::$form_id_num])) { self::$form_errors['captcha'] = __('That CAPTCHA was incorrect. Try again.', 'si-contact-form'); } else { if (empty($captcha_code)) { self::$form_errors['captcha'] = self::$form_options['error_captcha_blank'] != '' ? self::$form_options['error_captcha_blank'] : __('Please complete the CAPTCHA.', 'si-contact-form'); } else { require_once FSCF_CAPTCHA_PATH . '/securimage.php'; $img = new Securimage_ctf(); $img->form_num = self::$form_id_num; // makes compatible with multi-forms on same page $valid = $img->check("{$captcha_code}"); // has the right CAPTCHA code has been entered? if ($valid == true) { // ok can continue } else { self::$form_errors['captcha'] = self::$form_options['error_captcha_wrong'] != '' ? self::$form_options['error_captcha_wrong'] : __('That CAPTCHA was incorrect.', 'si-contact-form'); } } } } else { //captcha without PHP sessions if (empty($captcha_code)) { self::$form_errors['captcha'] = self::$form_options['error_captcha_blank'] != '' ? self::$form_options['error_captcha_blank'] : __('Please complete the CAPTCHA.', 'si-contact-form'); } else { if (!isset($_POST['fscf_captcha_prefix' . self::$form_id_num]) || empty($_POST['fscf_captcha_prefix' . self::$form_id_num])) { // this error means PHP session error, or they sat on the page more than 30 min self::$form_errors['captcha'] = __('That CAPTCHA was incorrect. Try again.', 'si-contact-form'); } else { $prefix = 'xxxxxx'; if (isset($_POST['fscf_captcha_prefix' . self::$form_id_num]) && is_string($_POST['fscf_captcha_prefix' . self::$form_id_num]) && preg_match('/^[a-zA-Z0-9]{15,17}$/', $_POST['fscf_captcha_prefix' . self::$form_id_num])) { $prefix = $_POST['fscf_captcha_prefix' . self::$form_id_num]; } if (is_readable(FSCF_CAPTCHA_PATH . '/cache/' . $prefix . '.php')) { include FSCF_CAPTCHA_PATH . '/cache/' . $prefix . '.php'; // has the right CAPTCHA code has been entered? if (0 == strcasecmp($captcha_code, $captcha_word)) { // captcha was matched @unlink(FSCF_CAPTCHA_PATH . '/cache/' . $prefix . '.php'); // ok can continue } else { self::$form_errors['captcha'] = self::$form_options['error_captcha_wrong'] != '' ? self::$form_options['error_captcha_wrong'] : __('That CAPTCHA was incorrect.', 'si-contact-form'); } } else { // this error means cache read error, or they sat on the page more than 30 min self::$form_errors['captcha'] = __('That CAPTCHA was incorrect. Try again.', 'si-contact-form'); } } } } // end if use PHP session } // end if enable captcha }
function si_contact_form_short_code($atts) { // backwards compatibility with manual PHP call from 3.xx echo FSCF_Display::process_short_code($atts); }