forked from deliciousbrains/wp-migrate-db
-
Notifications
You must be signed in to change notification settings - Fork 0
/
setup-mdb.php
92 lines (70 loc) · 2.28 KB
/
setup-mdb.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
<?php
use DeliciousBrains\WPMDB\Common\Cli\Cli;
use DeliciousBrains\WPMDB\WPMDBDI;
/**
* Populate the $wpmdb global with an instance of the WPMDB class and return it.
*
* @return DeliciousBrains\WPMDB\WPMigrateDB The one true global instance of the WPMDB class.
*/
function wp_migrate_db() {
global $wpmdb;
//Load in front-end code
require_once __DIR__ . '/react-wp-scripts.php';
if ( ! is_null( $wpmdb ) ) {
return $wpmdb;
}
$wpmdb = new DeliciousBrains\WPMDB\Free\WPMigrateDBFree( false );
$wpmdb->register();
return $wpmdb;
}
function wpmdb_cli_loaded() {
// register with wp-cli if it's running, and command hasn't already been defined elsewhere
if ( defined( 'WP_CLI' ) && WP_CLI && class_exists( '\DeliciousBrains\WPMDB\Common\Cli\Command' ) ) {
\DeliciousBrains\WPMDB\Common\Cli\Command::register();
}
}
add_action( 'plugins_loaded', 'wpmdb_cli_loaded', 20 );
function wpmdb_cli() {
global $wpmdb_cli;
if ( ! is_null( $wpmdb_cli ) ) {
return $wpmdb_cli;
}
if ( function_exists( 'wp_migrate_db' ) ) {
wp_migrate_db();
} else {
return false;
}
do_action( 'wp_migrate_db_cli_before_load' );
$wpmdb_cli = WPMDBDI::getInstance()->get( Cli::class );
do_action( 'wp_migrate_db_cli_after_load' );
return $wpmdb_cli;
}
function wpmdb_is_ajax() {
// must be doing AJAX the WordPress way
if ( ! defined( 'DOING_AJAX' ) || ! DOING_AJAX ) {
return false;
}
// must be one of our actions -- e.g. core plugin (wpmdb_*), media files (wpmdbmf_*)
if ( ! isset( $_POST['action'] ) || 0 !== strpos( $_POST['action'], 'wpmdb' ) ) {
return false;
}
// must be on blog #1 (first site) if multisite
if ( is_multisite() && 1 != get_current_site()->id ) {
return false;
}
return true;
}
function wp_migrate_db_loaded()
{
// @TODO revisit since we're reming is_admin()
// exit quickly unless: standalone admin; one of our AJAX calls
if (is_multisite() && !current_user_can('manage_network_options') && !wpmdb_is_ajax()) {
return false;
}
if (function_exists('wp_migrate_db')) {
// Remove the compatibility plugin when the plugin is deactivated
register_deactivation_hook(dirname(__FILE__) . '/wp-migrate-db.php', 'wpmdb_remove_mu_plugin');
wp_migrate_db();
}
}
add_action('plugins_loaded', 'wp_migrate_db_loaded');