OwlCyberSecurity - MANAGER
Edit File: class-settings-save.php
<?php namespace WP_Rplg_Google_Reviews\Includes; class Settings_Save { private $activator; private $reviews_cron; public function __construct(Activator $activator, Reviews_Cron $reviews_cron) { $this->activator = $activator; $this->reviews_cron = $reviews_cron; } public function register() { add_action('admin_post_grw_settings_save', array($this, 'save_from_post_array')); } public function save_from_post_array() { global $wpdb; if (!function_exists('wp_nonce_field')) { function wp_nonce_field() {} } if (!current_user_can('manage_options')) { die('The account you\'re logged in to doesn\'t have permission to access this page.'); } if (!empty($_POST)) { $nonce_result_check = $this->check_nonce(); if ($nonce_result_check === false) { die('Unable to save changes. Make sure you are accessing this page from the Wordpress dashboard.'); } } $notice_code = null; update_option('grw_notice_type', 'success'); if (isset($_POST['active']) && isset($_GET['active'])) { $active = $_GET['active'] == '1' ? '1' : '0'; update_option('grw_active', $active); $notice_code = 'settings_active_' . $active; } if (isset($_POST['save'])) { $notice_code = 'settings_save'; $fields = array('grw_async_css', 'grw_demand_assets', 'grw_freq_revs_upd', 'grw_gpa_old', 'grw_google_api_key'); foreach ($fields as $field) { if (isset($_POST[$field])) { $value = trim(sanitize_text_field(wp_unslash($_POST[$field]))); update_option($field, $value); // If save Google API key automatically enable a reviews update cron if ($field == 'grw_google_api_key' && strlen($value) > 0) { update_option('grw_revupd_cron', '1'); // Test Google API key $gpa_old = get_option('grw_gpa_old'); if ($gpa_old === 'true') { $res = wp_remote_get(GRW_GOOGLE_PLACE_API . 'details/json?placeid=ChIJ3TH9CwFZwokRIvNO1SP0WLg&key=' . $value); } else { $res = wp_remote_get(GRW_GOOGLE_PLACE_API_NEW . 'ChIJ3TH9CwFZwokRIvNO1SP0WLg?fields=rating&key=' . $value); } $body = wp_remote_retrieve_body($res); $body_json = json_decode($body); if ($body_json) { $error = isset($body_json->error) ? $body_json->error->message : (isset($body_json->error_message) ? $body_json->error_message : ''); if (!empty($error)) { update_option('grw_notice_msg', $error); update_option('grw_notice_type', 'error'); $notice_code = 'custom_msg'; } } } // Change reviews update cron frequency if ($field == 'grw_freq_revs_upd' && strlen($value) > 0) { $this->reviews_cron->deactivate(); $this->reviews_cron->activate(); } } } } if (isset($_POST['create_db'])) { $this->activator->create_db(); $notice_code = 'settings_create_db'; } if (isset($_POST['install'])) { $install_multisite = isset($_POST['install_multisite']) ? sanitize_text_field(wp_unslash($_POST['install_multisite'])) : null; $this->activator->drop_db($install_multisite); $this->activator->delete_all_options($install_multisite); $this->activator->delete_all_feeds($install_multisite); $this->activator->activate(); $this->reviews_cron->deactivate(); $notice_code = 'settings_install'; } if (isset($_POST['reset_all'])) { $reset_all_multisite = isset($_POST['reset_all_multisite']) ? sanitize_text_field(wp_unslash($_POST['reset_all_multisite'])) : false; $this->activator->drop_db($reset_all_multisite); $this->activator->delete_all_options($reset_all_multisite); $this->activator->delete_all_feeds($reset_all_multisite); $this->reviews_cron->deactivate(); $notice_code = 'settings_reset_all'; } if (isset($_POST['debug_mode'])) { $debug_mode = $_POST['debug_mode'] == 'Enable' ? '1' : '0'; update_option('grw_debug_mode', $debug_mode); $notice_code = 'settings_debug_mode_' . $debug_mode; } if (isset($_POST['update_db_ver']) && isset($_POST['update_db'])) { $update_db_ver = sanitize_text_field(wp_unslash($_POST['update_db_ver'])); if (strlen($update_db_ver) > 0) { $this->activator->update_db($update_db_ver); $notice_code = 'settings_update_db'; } } if (isset($_POST['del_dup_revs'])) { $this->activator->delete_duplicates(); $notice_code = 'settings_del_dup_revs'; } if (isset($_POST['revupd_cron'])) { $revupd_cron = $_POST['revupd_cron'] == 'Enable' ? '1' : '0'; if ($revupd_cron == '0') { $this->reviews_cron->deactivate(); } update_option('grw_revupd_cron', $revupd_cron); $notice_code = 'settings_revupd_cron_' . $revupd_cron; /*$api_key = get_option('grw_google_api_key'); if ($api_key) { update_option('grw_revupd_cron', $revupd_cron); $notice_code = 'settings_revupd_cron_' . $revupd_cron; } else { update_option('grw_notice_type', 'error'); update_option('grw_notice_msg', 'To make the reviews automatically updated, please create your own Google API key. The extrimly detailed instruction how to do it, you can <a href="' . admin_url('admin.php?page=grw-support&grw_tab=fig#fig_api_key') . '" target="_blank">find here</a>.'); $notice_code = 'custom_msg'; }*/ } $this->redirect_to_tab($notice_code); } public function redirect_to_tab($notice_code = '') { if (empty($_GET['grw_tab'])) { wp_safe_redirect(wp_get_referer()); exit; } $tab = sanitize_text_field(wp_unslash($_GET['grw_tab'])); $query_args = array( 'grw_tab' => $tab, ); if (!empty($notice_code)) { $query_args['grw_notice'] = $notice_code; } wp_safe_redirect(add_query_arg($query_args, wp_get_referer())); exit; } private function check_nonce() { $nonce_actions = array('active', 'save', 'create_db', 'reset', 'reset_all', 'debug_mode', 'update_db', 'del_dup_revs'); $nonce_form_prefix = 'grw-form_nonce_'; $nonce_action_prefix = 'grw-wpnonce_'; foreach ($nonce_actions as $key => $value) { if (isset($_POST[$nonce_form_prefix.$value])) { check_admin_referer($nonce_action_prefix.$value, $nonce_form_prefix.$value); return true; } } return false; } }