PluginProbe
MainWP Dashboard: Self-hosted WordPress Management for Agencies / 6.1.6
MainWP Dashboard: Self-hosted WordPress Management for Agencies v6.1.6
6.2 6.1.8 6.1.7 6.1.6 6.1.5 6.1.4 6.1.3 6.1.2 6.1.1 6.1 6.0.12 6.0.11 4.6.0.1 5.0 5.0.1 5.0.2 5.0.3 5.0.3.1 5.0.3.2 5.1 5.1.1 5.2 5.2.1 5.2.2 5.3 All 153 releases
mainwp / modules / api-backups / classes / class-api-backups-admin.php

class-api-backups-admin.php in MainWP Dashboard: Self-hosted WordPress Management for Agencies 6.1.6, at modules/api-backups/classes/class-api-backups-admin.php

294 lines 9.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * =======================================
4 * MainWP API Backups Admin
5 * =======================================
6 *
7 * @package MainWP\Dashboard
8 * @version 5.0
9 */
10
11 namespace MainWP\Dashboard\Module\ApiBackups;
12
13 use MainWP\Dashboard\MainWP_Logger;
14 use MainWP\Dashboard\MainWP_UI;
15 use MainWP\Dashboard\MainWP_Menu;
16 use MainWP\Dashboard\MainWP_Utility;
17
18 // Exit if accessed directly.
19 if ( ! defined( 'ABSPATH' ) ) {
20 exit;
21 }
22
23
24 /**
25 * Class Api_Backups_Admin
26 */
27 class Api_Backups_Admin {
28
29 /**
30 * Version string number.
31 *
32 * @var string $version Version.
33 */
34 public $version = '4.2';
35
36 /**
37 * Update version string number.
38 *
39 * @var string $version Update version.
40 */
41 public $update_version = '4.1';
42
43 /**
44 * Current page.
45 *
46 * @static
47 * @var string $page Current page.
48 */
49 public static $page;
50
51 /**
52 * Variable to hold the Sub Pages.
53 *
54 * @static
55 * @var mixed Sub Page, default null.
56 */
57 public static $subPages = null;
58
59 /**
60 * Static variable to hold the single instance of the class.
61 *
62 * @static
63 *
64 * @var mixed Default null
65 */
66 public static $instance = null;
67
68 /**
69 * Get Instance
70 *
71 * Creates public static instance.
72 *
73 * @static
74 *
75 * @return Api_Backups_Admin
76 */
77 public static function get_instance() {
78 if ( null === static::$instance ) {
79 static::$instance = new self();
80 }
81 return static::$instance;
82 }
83
84 /**
85 * Method get_class_name()
86 *
87 * Get Class Name.
88 *
89 * @return string __CLASS__
90 */
91 public static function get_class_name() {
92 return __CLASS__;
93 }
94
95 /**
96 * Constructor
97 *
98 * Runs each time the class is called.
99 */
100 public function __construct() {
101 add_action( 'admin_init', array( &$this, 'admin_init' ) );
102 add_filter( 'mainwp_getprimarybackup_methods', array( &$this, 'hook_getprimarybackup_methods' ) );
103 add_filter( 'mainwp_managesites_getbackuplink', array( &$this, 'hook_managesites_getbackuplink' ), 10, 4 );
104
105 $this->update_check();
106 Api_Backups_Overview::get_instance();
107 Api_Backups_Settings::get_instance();
108 Api_Backups_Handler::get_instance();
109 Api_Backups_Hooks::get_instance();
110 }
111
112 /**
113 * Method admin_init() initiated by init()
114 *
115 * Enqueue scripts and styles.
116 */
117 public function admin_init() {
118 add_filter( 'mainwp_log_specific_actions', array( &$this, 'hook_mainwp_log_specific_actions' ), 10, 2 );
119 Api_Backups_3rd_Party::instance()->init_ajax_actions();
120 $module_url = Api_Backups_Manager::get_location_path( 'url' );
121
122 if ( isset( $_GET['page'] ) && ( 'ManageApiBackups' === $_GET['page'] || 'ManageSitesApiBackups' === $_GET['page'] || 'SettingsApiBackups' === $_GET['page'] ) ) { //phpcs:ignore WordPress.Security.NonceVerification.Recommended
123 // Enqueue needed assets.
124 wp_enqueue_script( 'mainwp-module-api-backups', $module_url . 'assets/js/module-api-backups.js', array(), $this->version, true );
125 wp_enqueue_script( 'mainwp-module-api-backups-manager', $module_url . 'assets/js/module-api-backups-manager.js', array( 'mainwp' ), $this->version, true );
126 wp_enqueue_style( 'mainwp-module-api-backups', $module_url . 'assets/css/module-api-backups.css', array(), $this->version );
127 }
128 }
129
130
131 /**
132 * Method hook_getprimarybackup_methods().
133 *
134 * @param array $input Input values.
135 *
136 * @return array $input
137 */
138 public function hook_getprimarybackup_methods( $input ) {
139 $input[] = array(
140 'value' => 'module-api-backups',
141 'title' => esc_html__( 'API Backups', 'mainwp' ),
142 );
143 return $input;
144 }
145
146 /**
147 * Handle @filter hook_managesites_getbackuplink().
148 *
149 * @param array $input Input values.
150 * @param int $site_id Site id.
151 * @param int $last_primary_backup Last time primary backup.
152 * @param string $primary_backup Primary backup method.
153 *
154 * @return array $input
155 */
156 public function hook_managesites_getbackuplink( $input, $site_id, $last_primary_backup = 0, $primary_backup = '' ) {
157 if ( 'module-api-backups' !== $primary_backup ) {
158 return $input;
159 }
160
161 if ( $site_id ) {
162 $output = '';
163 if ( \mainwp_current_user_can( 'dashboard', 'execute_backups' ) ) {
164 if ( ! empty( $last_primary_backup ) ) {
165 $output = '<span data-tooltip="' . esc_attr__( 'Last backup available: ', 'mainwp' ) . esc_html( MainWP_Utility::time_elapsed_string( $last_primary_backup ) ) . '" data-position="left center" data-inverted=""><a class="ui mini grey icon basic button" href="admin.php?page=ManageSitesApiBackups&id=' . $site_id . '" class="green"><i class="history green icon"></i></a></span>';
166 } else {
167 $output = '<span data-tooltip="' . esc_attr__( 'No backups taken yet. ', 'mainwp' ) . '" data-position="left center" data-inverted=""><a class="ui mini grey icon basic button" href="admin.php?page=ManageSitesApiBackups&id=' . intval( $site_id ) . '" class="grey"><i class="history grey icon"></i></a></span>';
168 }
169 }
170 return $output;
171 } else {
172 return $input;
173 }
174 }
175
176
177 /**
178 * Method hook_mainwp_log_specific_actions().
179 *
180 * @param array $input Input values.
181 *
182 * @return array $input
183 */
184 public function hook_mainwp_log_specific_actions( $input ) {
185 $input[ MainWP_Logger::API_BACKUPS_LOG_PRIORITY ] = 'API Backups';
186 return $input;
187 }
188
189 /**
190 * Method update_check().
191 *
192 * Handle update db values if needed .
193 */
194 public function update_check() {
195
196 $current_update = get_option( 'mainwp_api_backups_update_version' );
197
198 if ( ( false === $current_update && version_compare( $this->version, '4.2', '<=' ) ) || version_compare( $current_update, '4.1', '<' ) ) {
199 $map_names = array(
200 'vultr' => 'mainwp_vultr_api_key',
201 'gridpane' => 'mainwp_gridpane_api_key',
202 'linode' => 'mainwp_linode_api_key',
203 'digitalocean' => 'mainwp_digitalocean_api_key',
204 'cloudways' => 'mainwp_cloudways_api_key',
205 );
206
207 foreach ( $map_names as $api_name => $old_name ) {
208 $data = get_option( $old_name );
209 if ( ! empty( $data ) ) {
210 $encrypted = Api_Backups_Utility::get_instance()->encrypt_api_keys( $data, false, false, $api_name );
211 if ( is_array( $encrypted ) && ! empty( $encrypted['file_key'] ) ) {
212 update_option( 'mainwp_api_backups_' . $api_name . '_api_key', $encrypted );
213 delete_option( $old_name );
214 }
215 }
216 }
217 update_option( 'mainwp_api_backups_update_version', $this->update_version );
218 }
219 }
220
221 /**
222 * Method init_menu()
223 *
224 * Add Insights Overview sub menu "Insights".
225 */
226 public static function init_menu() {
227 static::$page = add_submenu_page(
228 'mainwp_tab',
229 esc_html__( 'API Backups', 'mainwp' ),
230 '<div class="mainwp-hidden" id="mainwp-api-backups">' . esc_html__( 'API Backups', 'mainwp' ) . '</div>',
231 'read',
232 'ManageApiBackups',
233 array(
234 Api_Backups_Overview::get_instance(),
235 'render_backups_list',
236 )
237 );
238
239 /**
240 * This hook allows you to add extra sub pages to the client page via the 'mainwp_getsubpages_cost_tracker' filter.
241 */
242 static::$subPages = apply_filters( 'mainwp_getsubpages_api_backups', array() );
243
244 if ( isset( static::$subPages ) && is_array( static::$subPages ) ) {
245 foreach ( static::$subPages as $subPage ) {
246 if ( empty( $subPage['slug'] ) || empty( $subPage['callback'] ) ) {
247 continue;
248 }
249 if ( MainWP_Menu::is_disable_menu_item( 3, 'ManageApiBackups' . $subPage['slug'] ) ) {
250 continue;
251 }
252 add_submenu_page( 'mainwp_tab', $subPage['title'], '<div class="mainwp-hidden">' . esc_html( $subPage['title'] ) . '</div>', 'read', 'ManageApiBackups' . $subPage['slug'], $subPage['callback'] );
253 }
254 }
255
256 static::init_left_menu( static::$subPages );
257 }
258
259
260
261 /**
262 * Initiates API Backups menu.
263 *
264 * @param array $subPages API Backups sub pages.
265 */
266 public static function init_left_menu( $subPages ) {
267
268 $init_sub_subleftmenu = array();
269
270 MainWP_Menu::init_subpages_left_menu( $subPages, $init_sub_subleftmenu, 'ManageApiBackups', 'ManageApiBackups' );
271
272 foreach ( $init_sub_subleftmenu as $item ) {
273 if ( MainWP_Menu::is_disable_menu_item( 3, $item['slug'] ) ) {
274 continue;
275 }
276 MainWP_Menu::add_left_menu( $item, 2 );
277 }
278 }
279
280 /**
281 * Method render_header()
282 *
283 * Render page header.
284 */
285 public static function render_header() {
286 $params = array(
287 'title' => esc_html__( 'API Backups - BETA', 'mainwp' ),
288 'which' => 'page_api_backups_overview',
289 'wrap_class' => 'mainwp-module-api-backups-content-wrapper',
290 );
291 MainWP_UI::render_top_header( $params );
292 }
293 }
294