/**
  * Save settings
  * 
  * @since 2.0.0
  */
 public function save_plugin_settings()
 {
     if (!empty($_POST) && !empty($_POST['tab'])) {
         if (!wp_verify_nonce($_POST['_wpnonce'], 'tab-' . $_POST['tab'])) {
             die(__('Security check.', $this->plugin_slug));
         }
         // DO SOME SANITIZATIONS
         $tab = $_POST['tab'];
         switch ($tab) {
             case 'general':
                 $_POST['options']['general']['status'] = (int) $_POST['options']['general']['status'];
                 if (!empty($_POST['options']['general']['status']) && $_POST['options']['general']['status'] == 1) {
                     $_POST['options']['general']['status_date'] = date('Y-m-d H:i:s');
                 }
                 $_POST['options']['general']['bypass_bots'] = (int) $_POST['options']['general']['bypass_bots'];
                 $_POST['options']['general']['backend_role'] = !empty($_POST['options']['general']['backend_role']) ? $_POST['options']['general']['backend_role'] : array();
                 $_POST['options']['general']['frontend_role'] = !empty($_POST['options']['general']['frontend_role']) ? $_POST['options']['general']['frontend_role'] : array();
                 $_POST['options']['general']['meta_robots'] = (int) $_POST['options']['general']['meta_robots'];
                 $_POST['options']['general']['redirection'] = esc_url($_POST['options']['general']['redirection']);
                 if (!empty($_POST['options']['general']['exclude'])) {
                     $exclude_array = explode("\n", $_POST['options']['general']['exclude']);
                     // we need to be sure that empty lines will not be saved
                     $_POST['options']['general']['exclude'] = array_filter(array_map('trim', $exclude_array));
                 } else {
                     $_POST['options']['general']['exclude'] = array();
                 }
                 $_POST['options']['general']['notice'] = (int) $_POST['options']['general']['notice'];
                 $_POST['options']['general']['admin_link'] = (int) $_POST['options']['general']['admin_link'];
                 // delete cache when is already activated, when is activated and when is deactivated
                 if (isset($this->plugin_settings['general']['status']) && isset($_POST['options']['general']['status']) && ($this->plugin_settings['general']['status'] == 1 && in_array($_POST['options']['general']['status'], array(0, 1)) || $this->plugin_settings['general']['status'] == 0 && $_POST['options']['general']['status'] == 1)) {
                     $this->delete_cache();
                 }
                 break;
             case 'design':
                 $custom_css = array();
                 // CONTENT & CUSTOM CSS
                 $_POST['options']['design']['title'] = sanitize_text_field($_POST['options']['design']['title']);
                 $_POST['options']['design']['heading'] = sanitize_text_field($_POST['options']['design']['heading']);
                 if (!empty($_POST['options']['design']['heading_color'])) {
                     $_POST['options']['design']['heading_color'] = sanitize_text_field($_POST['options']['design']['heading_color']);
                     $custom_css['heading_color'] = '.wrap h1 { color: ' . $_POST['options']['design']['heading_color'] . '; }';
                 }
                 add_filter('safe_style_css', array($this, 'add_safe_style_css'));
                 // add before we save
                 $_POST['options']['design']['text'] = wp_kses_post($_POST['options']['design']['text']);
                 remove_filter('safe_style_css', array($this, 'add_safe_style_css'));
                 // remove after we save
                 if (!empty($_POST['options']['design']['text_color'])) {
                     $_POST['options']['design']['text_color'] = sanitize_text_field($_POST['options']['design']['text_color']);
                     $custom_css['text_color'] = '.wrap h2 { color: ' . $_POST['options']['design']['text_color'] . '; }';
                 }
                 // BACKGROUND & CUSTOM CSS
                 if (!empty($_POST['options']['design']['bg_type'])) {
                     $_POST['options']['design']['bg_type'] = sanitize_text_field($_POST['options']['design']['bg_type']);
                     if ($_POST['options']['design']['bg_type'] == 'color' && !empty($_POST['options']['design']['bg_color'])) {
                         $_POST['options']['design']['bg_color'] = sanitize_text_field($_POST['options']['design']['bg_color']);
                         $custom_css['bg_color'] = 'body { background-color: ' . $_POST['options']['design']['bg_color'] . '; }';
                     }
                     if ($_POST['options']['design']['bg_type'] == 'custom' && !empty($_POST['options']['design']['bg_custom'])) {
                         $_POST['options']['design']['bg_custom'] = esc_url($_POST['options']['design']['bg_custom']);
                         $custom_css['bg_url'] = '.background { background: url(' . $_POST['options']['design']['bg_custom'] . ') no-repeat center top fixed; background-size: cover; }';
                     }
                     if ($_POST['options']['design']['bg_type'] == 'predefined' && !empty($_POST['options']['design']['bg_predefined'])) {
                         $_POST['options']['design']['bg_predefined'] = sanitize_text_field($_POST['options']['design']['bg_predefined']);
                         $custom_css['bg_url'] = '.background { background: url(' . esc_url(WPMM_URL . 'assets/images/backgrounds/' . $_POST['options']['design']['bg_predefined']) . ') no-repeat center top fixed; background-size: cover; }';
                     }
                 }
                 $_POST['options']['design']['custom_css'] = $custom_css;
                 // delete cache when is activated
                 if (!empty($this->plugin_settings['general']['status']) && $this->plugin_settings['general']['status'] == 1) {
                     $this->delete_cache();
                 }
                 break;
             case 'modules':
                 $custom_css = array();
                 // COUNTDOWN & CUSTOM CSS
                 $_POST['options']['modules']['countdown_status'] = (int) $_POST['options']['modules']['countdown_status'];
                 $_POST['options']['modules']['countdown_start'] = sanitize_text_field($_POST['options']['modules']['countdown_start']);
                 $_POST['options']['modules']['countdown_details'] = array_map('trim', $_POST['options']['modules']['countdown_details']);
                 $_POST['options']['modules']['countdown_details']['days'] = isset($_POST['options']['modules']['countdown_details']['days']) && is_numeric($_POST['options']['modules']['countdown_details']['days']) ? $_POST['options']['modules']['countdown_details']['days'] : 0;
                 $_POST['options']['modules']['countdown_details']['hours'] = isset($_POST['options']['modules']['countdown_details']['hours']) && is_numeric($_POST['options']['modules']['countdown_details']['hours']) ? $_POST['options']['modules']['countdown_details']['hours'] : 1;
                 $_POST['options']['modules']['countdown_details']['minutes'] = isset($_POST['options']['modules']['countdown_details']['minutes']) && is_numeric($_POST['options']['modules']['countdown_details']['minutes']) ? $_POST['options']['modules']['countdown_details']['minutes'] : 0;
                 if (!empty($_POST['options']['modules']['countdown_color'])) {
                     $_POST['options']['modules']['countdown_color'] = sanitize_text_field($_POST['options']['modules']['countdown_color']);
                     $custom_css['countdown_color'] = '.wrap .countdown span { color: ' . $_POST['options']['modules']['countdown_color'] . '; }';
                 }
                 // SUBSCRIBE & CUSTOM CSS
                 $_POST['options']['modules']['subscribe_status'] = (int) $_POST['options']['modules']['subscribe_status'];
                 $_POST['options']['modules']['subscribe_text'] = sanitize_text_field($_POST['options']['modules']['subscribe_text']);
                 if (!empty($_POST['options']['modules']['subscribe_text_color'])) {
                     $_POST['options']['modules']['subscribe_text_color'] = sanitize_text_field($_POST['options']['modules']['subscribe_text_color']);
                     $custom_css['subscribe_text_color'] = '.wrap h3, .wrap .subscribe_wrapper { color: ' . $_POST['options']['modules']['subscribe_text_color'] . '; }';
                 }
                 // SOCIAL NETWORKS
                 $_POST['options']['modules']['social_status'] = (int) $_POST['options']['modules']['social_status'];
                 $_POST['options']['modules']['social_target'] = (int) $_POST['options']['modules']['social_target'];
                 $_POST['options']['modules']['social_github'] = sanitize_text_field($_POST['options']['modules']['social_github']);
                 $_POST['options']['modules']['social_dribbble'] = sanitize_text_field($_POST['options']['modules']['social_dribbble']);
                 $_POST['options']['modules']['social_twitter'] = sanitize_text_field($_POST['options']['modules']['social_twitter']);
                 $_POST['options']['modules']['social_facebook'] = sanitize_text_field($_POST['options']['modules']['social_facebook']);
                 $_POST['options']['modules']['social_pinterest'] = sanitize_text_field($_POST['options']['modules']['social_pinterest']);
                 $_POST['options']['modules']['social_google+'] = sanitize_text_field($_POST['options']['modules']['social_google+']);
                 $_POST['options']['modules']['social_linkedin'] = sanitize_text_field($_POST['options']['modules']['social_linkedin']);
                 // CONTACT
                 $_POST['options']['modules']['contact_status'] = (int) $_POST['options']['modules']['contact_status'];
                 $_POST['options']['modules']['contact_email'] = sanitize_text_field($_POST['options']['modules']['contact_email']);
                 $_POST['options']['modules']['contact_effects'] = sanitize_text_field($_POST['options']['modules']['contact_effects']);
                 // GOOGLE ANALYTICS
                 $_POST['options']['modules']['ga_status'] = (int) $_POST['options']['modules']['ga_status'];
                 $_POST['options']['modules']['ga_code'] = wpmm_sanitize_ga_code($_POST['options']['modules']['ga_code']);
                 $_POST['options']['modules']['custom_css'] = $custom_css;
                 // delete cache when is activated
                 if (!empty($this->plugin_settings['general']['status']) && $this->plugin_settings['general']['status'] == 1) {
                     $this->delete_cache();
                 }
                 break;
         }
         $this->plugin_settings[$tab] = $_POST['options'][$tab];
         update_option('wpmm_settings', $this->plugin_settings);
     }
 }
Exemplo n.º 2
0
 /**
  * Google Analytics code
  * 
  * @since 2.0.7
  */
 public function google_analytics_code()
 {
     // check if module is activated and code exists
     if (empty($this->plugin_settings['modules']['ga_status']) || $this->plugin_settings['modules']['ga_status'] != 1 || empty($this->plugin_settings['modules']['ga_code'])) {
         return false;
     }
     // sanitize code
     $ga_code = wpmm_sanitize_ga_code($this->plugin_settings['modules']['ga_code']);
     if (empty($ga_code)) {
         return false;
     }
     // show google analytics javascript snippet
     include_once WPMM_VIEWS_PATH . 'google-analytics.php';
 }