: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in
if (!defined('ABSPATH')) exit;
if (!class_exists('BVRecover')) :
public static $default_secret_key = 'bv_default_secret_key';
public static function defaultSecret($settings) {
$secret = self::getDefaultSecret($settings);
$secret = BVRecover::refreshDefaultSecret($settings);
public static function refreshDefaultSecret($settings) {
$key_details["key"] = BVAccount::randString(32);
$key_details["expires_at"] = time() + (24 * 60 * 60);
$settings->updateOption(self::$default_secret_key, $key_details);
return $key_details["key"];
public static function deleteDefaultSecret($settings) {
$settings->deleteOption(self::$default_secret_key);
public static function getDefaultSecret($settings) {
$key_details = $settings->getOption(self::$default_secret_key);
if (is_array($key_details) && $key_details["expires_at"] > time()) {
return $key_details["key"];
public static function getSecretStatus($settings) {
$key_details = $settings->getOption(self::$default_secret_key);
if (!is_array($key_details)) {
} elseif ($key_details["expires_at"] <= time()) {
public static function validate($key) {
return $key && strlen($key) >= 32;
public static function find($settings, $pubkey) {
if (!self::validate($pubkey)) {
$secret = self::getDefaultSecret($settings);
if (!self::validate($secret)) {
$account = new BVAccount($settings, $pubkey, $secret);