This commit is contained in:
2026-07-02 15:54:39 -06:00
commit 9883323161
17470 changed files with 4470592 additions and 0 deletions
@@ -0,0 +1,229 @@
<?php
/**
* Better Search Replace
*
* This plugin improves upon the database search/replace functionality offered
* by some other plugins, offering serialization support, the ability to
* select specific tables, and the ability to run a dry run.
*
* @since 1.0.0
* @package Better_Search_Replace
*
* @wordpress-plugin
* Plugin Name: Better Search Replace
* Plugin URI: https://bettersearchreplace.com
* Description: A small plugin for running a search/replace on your WordPress database.
* Version: 1.4.11
* Requires at least: 6.2
* Requires PHP: 8.1
* Author: WP Engine
* Author URI: https://bettersearchreplace.com
* License: GPL-3.0
* License URI: http://www.gnu.org/licenses/gpl-3.0.txt
* Text Domain: better-search-replace
* Domain Path: /languages
* Network: true
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
// If this file was called directly, abort.
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
if ( ! defined( 'WPINC' ) ) {
die;
}
if ( ! function_exists( 'run_better_search_replace' ) ) {
// Defines the path to the main plugin file.
define( 'BSR_FILE', __FILE__ );
// Defines the path to be used for includes.
define( 'BSR_PATH', plugin_dir_path( BSR_FILE ) );
// Defines the URL to the plugin.
define( 'BSR_URL', plugin_dir_url( BSR_FILE ) );
// Defines the current version of the plugin.
define( 'BSR_VERSION', '1.4.11' );
// Defines the name of the plugin.
define( 'BSR_NAME', 'Better Search Replace' );
/**
* Get plugin data from plugin header.
*
* @param string $header
*
* @return string
* @since 1.4.11
*/
function bsr_get_plugin_data( $header ) {
$data = get_file_data( __FILE__, array(
'Name' => 'Plugin Name',
'RequiresWP' => 'Requires at least',
'RequiresPHP' => 'Requires PHP',
), 'plugin' );
if ( empty( $data[ $header ] ) ) {
return '';
}
return $data[ $header ];
}
/**
* Check if WordPress version meets minimum requirement.
*
* @return bool True if WordPress version is sufficient, false otherwise.
* @since 1.4.11
*/
function bsr_check_wp_version() {
global $wp_version;
if ( version_compare( $wp_version, bsr_get_plugin_data( 'RequiresWP' ) ) === -1 ) {
add_action( 'admin_notices', 'bsr_wp_version_notice' );
add_action( 'network_admin_notices', 'bsr_wp_version_notice' );
return false;
}
return true;
}
/**
* Check if PHP version meets minimum requirement.
*
* @return bool True if PHP version is sufficient, false otherwise.
* @since 1.4.11
*/
function bsr_check_php_version() {
if ( version_compare( PHP_VERSION, bsr_get_plugin_data( 'RequiresPHP' ) ) === -1 ) {
add_action( 'admin_notices', 'bsr_php_version_notice' );
add_action( 'network_admin_notices', 'bsr_php_version_notice' );
return false;
}
return true;
}
/**
* Display admin notice for insufficient WordPress version.
*
* @since 1.4.11
*/
function bsr_wp_version_notice() {
global $wp_version;
?>
<div class="notice notice-error">
<p>
<?php
echo wp_kses_post(
sprintf(
/* translators: 1: Plugin name, 2: Required WordPress version, 3: Current WordPress version */
__(
'<strong>%1$s</strong> requires WordPress <strong>%2$s</strong> or higher. You are currently running WordPress <strong>%3$s</strong>. Please upgrade WordPress to activate this plugin.',
'better-search-replace'
),
bsr_get_plugin_data( 'Name' ),
bsr_get_plugin_data( 'RequiresWP' ),
esc_html( $wp_version )
)
);
?>
</p>
</div>
<?php
}
/**
* Display admin notice for insufficient PHP version.
*
* @since 1.4.11
*/
function bsr_php_version_notice() {
?>
<div class="notice notice-error">
<p>
<?php
echo wp_kses_post(
sprintf(
/* translators: 1: Plugin name, 2: Required PHP version, 3: Current PHP version */
__(
'<strong>%1$s</strong> requires PHP <strong>%2$s</strong> or higher. You are currently running PHP <strong>%3$s</strong>. Please contact your web host to upgrade PHP to activate this plugin.',
'better-search-replace'
),
bsr_get_plugin_data( 'Name' ),
bsr_get_plugin_data( 'RequiresPHP' ),
esc_html( PHP_VERSION )
)
);
?>
</p>
</div>
<?php
}
/**
* Begins execution of the plugin.
*
* Since everything within the plugin is registered via hooks,
* then kicking off the plugin from this point in the file does
* not affect the page life cycle.
*
* @since 1.0.0
*/
// phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedFunctionFound -- Bootstrap entry; guarded by function_exists in bootstrap.
function run_better_search_replace() {
// Check version requirements before loading the plugin.
if ( ! bsr_check_php_version() || ! bsr_check_wp_version() ) {
return;
}
if ( bsr_enabled_for_user() ) {
/**
* The core plugin class that is used to define internationalization,
* dashboard-specific hooks, and public-facing site hooks.
*/
require BSR_PATH . 'includes/class-bsr-main.php';
$plugin = new Better_Search_Replace();
$plugin->run();
}
}
add_action( 'after_setup_theme', 'run_better_search_replace' );
}
if ( ! function_exists( 'bsr_enabled_for_user' ) ) {
/**
* Is the current user allowed to use BSR?
*
* @return bool
*/
// phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedFunctionFound -- Public helper; guarded by function_exists in bootstrap.
function bsr_enabled_for_user() {
// Allows for overriding the capability required to run the plugin.
// phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound -- Legacy filter name; public API for capability override.
$cap = apply_filters( 'bsr_capability', 'manage_options' );
return current_user_can( $cap );
}
}
if ( file_exists( BSR_PATH . 'ext/bsr-ext-functions.php' ) ) {
require_once BSR_PATH . 'ext/bsr-ext-functions.php';
}