function as_option($action, $name, $value = false) { // // add the prefix for Admin SSL options // $name = "admin_ssl_{$name}"; if ($action === "get") { // // get the existing option from the database, or set to false if resetting options // $option = RESET ? false : get_option($name); if ($option === false && $value !== false) { update_option($name, $value); return $value; } else { return $option; } } elseif ($action === "update" && as_user_can("manage_options")) { return update_option($name, $value); } elseif ($action === "delete" && as_user_can("manage_options")) { return delete_option($name); } }
function as_conf() { global $use_ssl, $secure_url; global $additional_urls, $ignore_urls, $secure_users_only; global $config_page, $config_parent; global $https_key, $https_value; if (isset($_POST["submit"])) { // // make sure current user can set permissions, // and that the referer was a page from this site // if (!as_user_can("manage_options")) { exit("You don't have permission to change these options!"); } check_admin_referer(); // // get the posted configuration options // $use_ssl = "on" === _post("use_ssl") ? 1 : 0; $additional_urls = _post("additional_urls"); $ignore_urls = _post("ignore_urls"); $secure_users_only = "on" === _post("secure_users_only") ? 1 : 0; $redirect = true; # if different config parent page chosen, need to redirect later if ($config_parent === _post("config_parent")) { $redirect = false; } else { $config_parent = _post("config_parent"); } $https_key = _post("https_key"); $https_value = _post("https_value"); // // verify the selected options // // // $config_parent may only be one of two options // if ($config_parent !== "plugins.php" && $config_parent !== "options-general.php") { $message = "You submitted an invalid value ('{$config_parent}') for config parent."; } // // https key and value cannot be empty // if (trim($https_key) === "") { $https_key = "HTTPS"; } if (trim($https_value) === "") { $https_value = "on"; } // // if there has been an error, reset all the options // if (isset($message)) { $use_ssl = as_option("get", "ssl_use_ssl"); $additional_urls = as_option("get", "additional_urls"); $ignore_urls = as_option("get", "ignore_urls"); $secure_users_only = as_option("get", "secure_users_only"); $config_parent = as_option("get", "config_parent"); $https_key = as_option("get", "https_key"); $https_value = as_option("get", "https_value"); as_log("as_conf()\nError saving options: {$message}\nResetting options to previous values"); } else { as_log("as_conf()\nNew option values will be saved"); } // // update options in database // as_option("update", "use_ssl", $use_ssl); as_option("update", "additional_urls", $additional_urls); as_option("update", "ignore_urls", $ignore_urls); as_option("update", "secure_users_only", $secure_users_only); as_option("update", "config_parent", $config_parent); as_option("update", "https_key", $https_key); as_option("update", "https_value", $https_value); if (!isset($message)) { $message = "Options saved."; } // // if config parent has been changed, redirect // if ($redirect) { $location = $config_parent . "?page=admin-ssl-config"; as_log("as_conf():\nRedirecting to {$location}"); as_redirect($location); } } // // require configuration settings page // require_once $config_page; }