PluginProbe
MainWP Dashboard: Self-hosted WordPress Management for Agencies / 5.3
MainWP Dashboard: Self-hosted WordPress Management for Agencies v5.3
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 5.3, at modules/api-backups/classes/class-api-backups-admin.php

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