forked from mainwp/mainwp
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmainwp.php
More file actions
169 lines (141 loc) · 6.65 KB
/
Copy pathmainwp.php
File metadata and controls
169 lines (141 loc) · 6.65 KB
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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
<?php
/**
* Plugin Name: MainWP Dashboard
*
* Description: Manage all of your WP sites, even those on different servers, from one central dashboard that runs off of your own self-hosted WordPress install.
*
* Author: MainWP
* Author URI: https://mainwp.com
* Plugin URI: https://mainwp.com/
* Text Domain: mainwp
* Version: 6.0.6
* License: GPLv3 or later
* License URI: https://www.gnu.org/licenses/gpl-3.0.html
*
* @package MainWP/Dashboard
*
* @uses \MainWP\Dashboard\MainWP_System
*/
// Exit if accessed directly.
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
/**
* Ignore cron/bootstrap.php from Plugin Check direct file access protection.
* This file must execute before WordPress loads to locate wp-load.php,
* so the standard ABSPATH check would break functionality.
*/
add_filter(
'wp_plugin_check_ignore_files',
function ( $ignored_files ) {
$ignored_files[] = 'cron/bootstrap.php';
return $ignored_files;
}
);
if ( ! defined( 'MAINWP_PLUGIN_FILE' ) ) {
/**
* Define MainWP Dashboard Plugin absolute full path and filename of this file.
*
* @const ( string ) Defined MainWP dashboard file path.
* @source https://github.com/mainwp/mainwp/blob/master/mainwp.php
*/
define( 'MAINWP_PLUGIN_FILE', __FILE__ );
}
if ( ! defined( 'MAINWP_PLUGIN_DIR' ) ) {
/**
* Define MainWP Dashboard Plugin Directory.
*
* @const ( string ) Defined MainWP Dashboard Plugin Directory.
* @source https://github.com/mainwp/mainwp/blob/master/mainwp.php
*/
define( 'MAINWP_PLUGIN_DIR', plugin_dir_path( MAINWP_PLUGIN_FILE ) );
}
if ( ! defined( 'MAINWP_PLUGIN_URL' ) ) {
/**
* Define MainWP Child Dashboard URL.
*
* @const ( string ) Defined MainWP Dashboard Plugin URL.
* @source https://github.com/mainwp/mainwp/blob/master/mainwp.php
*/
define( 'MAINWP_PLUGIN_URL', plugin_dir_url( MAINWP_PLUGIN_FILE ) );
}
if ( ! defined( 'MAINWP_MODULES_DIR' ) ) {
define( 'MAINWP_MODULES_DIR', MAINWP_PLUGIN_DIR . 'modules' . DIRECTORY_SEPARATOR );
}
if ( ! defined( 'MAINWP_MODULES_URL' ) ) {
define( 'MAINWP_MODULES_URL', MAINWP_PLUGIN_URL . 'modules/' );
}
/**
* Define enable Log Module.
*/
if ( ! defined( 'MAINWP_MODULE_LOG_ENABLED' ) ) {
define( 'MAINWP_MODULE_LOG_ENABLED', true );
}
if ( ! defined( 'MAINWP_MODULE_COST_TRACKER_ENABLED' ) ) {
define( 'MAINWP_MODULE_COST_TRACKER_ENABLED', true );
}
if ( ! defined( 'MAINWP_MODULE_API_BACKUPS_ENABLED' ) ) {
define( 'MAINWP_MODULE_API_BACKUPS_ENABLED', true );
}
// Version information from WordPress.
require_once ABSPATH . 'wp-includes' . DIRECTORY_SEPARATOR . 'version.php'; // NOSONAR - WP compatible.
if ( ! function_exists( 'mainwp_autoload' ) ) {
/**
* Autoloader for all classes, pages & widgets
*
* @param string $class_name Folder name class|pages|widgets.
* @return require_once $autoload_path;
*/
function mainwp_autoload( $class_name ) {
if ( 0 === strpos( $class_name, 'MainWP\Dashboard' ) ) {
// trip the namespace prefix: MainWP\Dashboard\ .
$class_name = substr( $class_name, 17 );
}
if ( 0 !== strpos( $class_name, 'MainWP_' ) ) {
return;
}
$autoload_types = array(
'class' => 'class',
'pages' => 'page',
'widgets' => 'widget',
);
foreach ( $autoload_types as $type => $prefix ) {
$autoload_dir = \trailingslashit( __DIR__ . DIRECTORY_SEPARATOR . $type );
$autoload_path = sprintf( '%s%s-%s.php', $autoload_dir, $prefix, strtolower( str_replace( '_', '-', $class_name ) ) );
if ( file_exists( $autoload_path ) ) {
require_once $autoload_path; // NOSONAR - WP compatible.
break;
}
}
}
}
spl_autoload_register( 'mainwp_autoload' );
require_once MAINWP_PLUGIN_DIR . 'includes' . DIRECTORY_SEPARATOR . 'functions.php'; // NOSONAR -- WP compatible.
require_once MAINWP_PLUGIN_DIR . 'includes' . DIRECTORY_SEPARATOR . 'core-functions.php'; // NOSONAR -- WP compatible.
require_once MAINWP_PLUGIN_DIR . 'includes' . DIRECTORY_SEPARATOR . 'compatible.php'; // NOSONAR -- WP compatible.
require_once MAINWP_PLUGIN_DIR . 'includes' . DIRECTORY_SEPARATOR . 'class-mainwp-includes.php'; // NOSONAR -- WP compatible.
// Load Abilities API integration (feature-gated).
require_once MAINWP_PLUGIN_DIR . 'includes' . DIRECTORY_SEPARATOR . 'abilities' . DIRECTORY_SEPARATOR . 'class-mainwp-abilities-util.php'; // NOSONAR -- WP compatible.
require_once MAINWP_PLUGIN_DIR . 'includes' . DIRECTORY_SEPARATOR . 'abilities' . DIRECTORY_SEPARATOR . 'class-mainwp-abilities-sites.php'; // NOSONAR -- WP compatible.
require_once MAINWP_PLUGIN_DIR . 'includes' . DIRECTORY_SEPARATOR . 'abilities' . DIRECTORY_SEPARATOR . 'class-mainwp-abilities-updates.php'; // NOSONAR -- WP compatible.
require_once MAINWP_PLUGIN_DIR . 'includes' . DIRECTORY_SEPARATOR . 'abilities' . DIRECTORY_SEPARATOR . 'class-mainwp-abilities-clients.php'; // NOSONAR -- WP compatible.
require_once MAINWP_PLUGIN_DIR . 'includes' . DIRECTORY_SEPARATOR . 'abilities' . DIRECTORY_SEPARATOR . 'class-mainwp-abilities-tags.php'; // NOSONAR -- WP compatible.
require_once MAINWP_PLUGIN_DIR . 'includes' . DIRECTORY_SEPARATOR . 'abilities' . DIRECTORY_SEPARATOR . 'class-mainwp-abilities-batch.php'; // NOSONAR -- WP compatible.
require_once MAINWP_PLUGIN_DIR . 'includes' . DIRECTORY_SEPARATOR . 'abilities' . DIRECTORY_SEPARATOR . 'class-mainwp-abilities-cron.php'; // NOSONAR -- WP compatible.
require_once MAINWP_PLUGIN_DIR . 'includes' . DIRECTORY_SEPARATOR . 'abilities' . DIRECTORY_SEPARATOR . 'class-mainwp-abilities.php'; // NOSONAR -- WP compatible.
// Initialize Abilities API integration (does nothing if Abilities API not available).
if ( class_exists( '\MainWP\Dashboard\MainWP_Abilities' ) ) {
\MainWP\Dashboard\MainWP_Abilities::init();
}
// Detect if secupress_scanner is running.
$mainwp_is_secupress_scanning = false;
if ( ! empty( $_GET ) && isset( $_GET['test'] ) && isset( $_GET['action'] ) && 'secupress_scanner' === $_GET['action'] ) { // phpcs:ignore WordPress.Security.NonceVerification,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized.Recommended
$mainwp_is_secupress_scanning = true;
}
// Fix a conflict with SecuPress plugin.
if ( ! $mainwp_is_secupress_scanning ) {
$mainWP = new MainWP\Dashboard\MainWP_System( WP_PLUGIN_DIR . DIRECTORY_SEPARATOR . plugin_basename( __FILE__ ) );
register_activation_hook( __FILE__, array( $mainWP, 'activation' ) );
register_deactivation_hook( __FILE__, array( $mainWP, 'deactivation' ) );
add_action( 'plugins_loaded', array( $mainWP, 'update_install' ) );
}