: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in
if (!defined('ABSPATH')) exit;
if (!class_exists('BVWPAdmin')) :
function __construct($settings, $siteinfo, $bvapi = null) {
$this->settings = $settings;
$this->siteinfo = $siteinfo;
$this->bvapi = new BVWPAPI($settings);
$this->bvinfo = new BVInfo($this->settings);
public function mainUrl($_params = '') {
if (function_exists('network_admin_url')) {
return network_admin_url('admin.php?page='.$this->bvinfo->plugname.$_params);
return admin_url('admin.php?page='.$this->bvinfo->plugname.$_params);
function removeAdminNotices() {
if (array_key_exists('page', $_REQUEST) && $_REQUEST['page'] == $this->bvinfo->plugname) {
remove_all_actions('admin_notices');
remove_all_actions('all_admin_notices');
public function initHandler() {
if (!current_user_can('activate_plugins'))
if (array_key_exists('bvnonce', $_REQUEST) &&
wp_verify_nonce($_REQUEST['bvnonce'], "bvnonce") &&
array_key_exists('blogvaultkey', $_REQUEST) &&
(strlen(BVAccount::sanitizeKey($_REQUEST['blogvaultkey'])) == 64) &&
(array_key_exists('page', $_REQUEST) &&
$_REQUEST['page'] == $this->bvinfo->plugname)) {
$keys = str_split($_REQUEST['blogvaultkey'], 32);
BVAccount::addAccount($this->settings, $keys[0], $keys[1]);
if (array_key_exists('redirect', $_REQUEST)) {
$location = $_REQUEST['redirect'];
wp_redirect($this->bvinfo->appUrl()."/dash/redir?q=".urlencode($location));
if ($this->bvinfo->isActivateRedirectSet()) {
$this->settings->updateOption($this->bvinfo->plug_redirect, 'no');
wp_redirect($this->mainUrl());
public function bvsecAdminMenu($hook) {
if ($hook === 'toplevel_page_bvbackup' || BVHelper::safePregMatch("/bv_add_account$/", $hook) ||
BVHelper::safePregMatch("/bv_account_details$/", $hook)) {
wp_enqueue_style( 'bootstrap', plugins_url('css/bootstrap.min.css', __FILE__));
wp_enqueue_style( 'bvplugin', plugins_url('css/bvplugin.min.css', __FILE__));
$brand = $this->bvinfo->getPluginWhitelabelInfo();
if (!array_key_exists('hide', $brand) && !array_key_exists('hide_from_menu', $brand)) {
$bname = $this->bvinfo->getBrandName();
$icon = $this->bvinfo->getBrandIcon();
add_menu_page($bname, $bname, 'manage_options', $this->bvinfo->plugname,
array($this, 'adminPage'), plugins_url($icon, __FILE__));
public function hidePluginUpdate($plugins) {
if (!$this->bvinfo->canWhiteLabel()) {
$whitelabel_infos = $this->bvinfo->getPluginsWhitelabelInfos();
foreach ($whitelabel_infos as $slug => $brand) {
if ($this->bvinfo->canWhiteLabel($slug) && isset($plugins->response[$slug]) && is_array($brand)) {
if (array_key_exists('hide_from_menu', $brand) || array_key_exists('hide', $brand)) {
unset($plugins->response[$slug]);
public function hidePluginDetails($plugin_metas, $slug) {
if (!is_array($plugin_metas) || !$this->bvinfo->canWhiteLabel($slug)) {
$whitelabel_info = $this->bvinfo->getPluginWhitelabelInfo($slug);
if (array_key_exists('hide_plugin_details', $whitelabel_info)) {
foreach ($plugin_metas as $pluginKey => $pluginValue) {
if (strpos($pluginValue, sprintf('>%s<', translate('View details')))) {
unset($plugin_metas[$pluginKey]);
public function handlePluginHealthInfo($plugins) {
if (!isset($plugins["wp-plugins-active"]) ||
!isset($plugins["wp-plugins-active"]["fields"]) || !$this->bvinfo->canWhiteLabel()) {
$whitelabel_infos_by_title = $this->bvinfo->getPluginsWhitelabelInfoByTitle();
foreach ($whitelabel_infos_by_title as $title => $brand) {
if (is_array($brand) && array_key_exists('slug', $brand) && $this->bvinfo->canWhiteLabel($brand["slug"])) {
if (array_key_exists('hide', $brand)) {
unset($plugins["wp-plugins-active"]["fields"][$title]);
$plugin = $plugins["wp-plugins-active"]["fields"][$title];
$author = $brand['default_author'];
if (array_key_exists('name', $brand)) {
$plugin["label"] = $brand['name'];
if (array_key_exists('author', $brand)) {
$plugin["value"] = str_replace($author, $brand['author'], $plugin["value"]);
if (array_key_exists('description', $brand)) {
$plugin["debug"] = str_replace($author, $brand['author'], $plugin["debug"]);
$plugins["wp-plugins-active"]["fields"][$title] = $plugin;
public function settingsLink($links, $file) {
if ( $file == plugin_basename( dirname(__FILE__).'/blogvault.php' ) ) {
$brand = $this->bvinfo->getPluginWhitelabelInfo();
if (!array_key_exists('hide_plugin_details', $brand)) {
$links[] = '<a href="' . $this->mainUrl() . '">' . __( 'Settings' ) . '</a>';
public function getPluginLogo() {
$brand = $this->bvinfo->getPluginWhitelabelInfo();
if (array_key_exists('logo', $brand)) {
return $this->bvinfo->logo;
public function getWebPage() {
$brand = $this->bvinfo->getPluginWhitelabelInfo();
if (array_key_exists('webpage', $brand)) {
return $brand['webpage'];
return $this->bvinfo->webpage;
public function siteInfoTags() {
require_once dirname( __FILE__ ) . '/recover.php';
$bvnonce = wp_create_nonce("bvnonce");
$public = BVAccount::getApiPublicKey($this->settings);
$secret = BVRecover::defaultSecret($this->settings);
$tags = "<input type='hidden' name='url' value='".esc_attr($this->siteinfo->wpurl())."'/>\n".
"<input type='hidden' name='homeurl' value='".esc_attr($this->siteinfo->homeurl())."'/>\n".
"<input type='hidden' name='siteurl' value='".esc_attr($this->siteinfo->siteurl())."'/>\n".
"<input type='hidden' name='dbsig' value='".esc_attr($this->siteinfo->dbsig(false))."'/>\n".
"<input type='hidden' name='plug' value='".esc_attr($this->bvinfo->plugname)."'/>\n".
"<input type='hidden' name='adminurl' value='".esc_attr($this->mainUrl())."'/>\n".
"<input type='hidden' name='bvversion' value='".esc_attr($this->bvinfo->version)."'/>\n".
"<input type='hidden' name='serverip' value='".esc_attr($_SERVER["SERVER_ADDR"])."'/>\n".
"<input type='hidden' name='abspath' value='".esc_attr(ABSPATH)."'/>\n".
"<input type='hidden' name='secret' value='".esc_attr($secret)."'/>\n".
"<input type='hidden' name='public' value='".esc_attr($public)."'/>\n".
"<input type='hidden' name='bvnonce' value='".esc_attr($bvnonce)."'/>\n";
public function activateWarning() {
if (!BVAccount::isConfigured($this->settings) && $hook_suffix == 'index.php' ) {
<div id="message" class="updated" style="padding: 8px; font-size: 16px; background-color: #dff0d8">
<a class="button-primary" href="<?php echo esc_url($this->mainUrl()); ?>">Activate BlogVault</a>
<b>Almost Done:</b> Activate your BlogVault account to backup & secure your site.
public function showAddAccountPage() {
require_once dirname( __FILE__ ) . "/admin/add_new_account.php";
public function showAccountDetailsPage() {
require_once dirname( __FILE__ ) . "/admin/account_details.php";
public function adminPage() {
if (isset($_REQUEST['bvnonce']) && wp_verify_nonce( $_REQUEST['bvnonce'], 'bvnonce' )) {
$this->siteinfo->basic($info);
$this->bvapi->pingbv('/bvapi/disconnect', $info, BVAccount::sanitizeKey($_REQUEST['pubkey']));
BVAccount::remove($this->settings, BVAccount::sanitizeKey($_REQUEST['pubkey']));
if (BVAccount::isConfigured($this->settings)) {
if (isset($_REQUEST['add_account'])) {
$this->showAddAccountPage();
$this->showAccountDetailsPage();
$this->showAddAccountPage();
public function initWhitelabel($plugins) {
if (!is_array($plugins) || !$this->bvinfo->canWhiteLabel()) {
$whitelabel_infos = $this->bvinfo->getPluginsWhitelabelInfos();
foreach ($whitelabel_infos as $slug => $brand) {
if (!isset($slug) || !$this->bvinfo->canWhiteLabel($slug) || !array_key_exists($slug, $plugins) || !is_array($brand)) {
if (array_key_exists('hide', $brand)) {
if (array_key_exists('name', $brand)) {
$plugins[$slug]['Name'] = $brand['name'];
if (array_key_exists('title', $brand)) {
$plugins[$slug]['Title'] = $brand['title'];
if (array_key_exists('description', $brand)) {
$plugins[$slug]['Description'] = $brand['description'];
if (array_key_exists('authoruri', $brand)) {
$plugins[$slug]['AuthorURI'] = $brand['authoruri'];
if (array_key_exists('author', $brand)) {
$plugins[$slug]['Author'] = $brand['author'];
if (array_key_exists('authorname', $brand)) {
$plugins[$slug]['AuthorName'] = $brand['authorname'];
if (array_key_exists('pluginuri', $brand)) {
$plugins[$slug]['PluginURI'] = $brand['pluginuri'];