-
Notifications
You must be signed in to change notification settings - Fork 55
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* Added: Support for the new API Backups providers - cPanel and Plesk
* Updated: Updated the phpSecLib library to enhance security and performance.
- Loading branch information
Showing
40 changed files
with
663 additions
and
225 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,119 @@ | ||
<?php | ||
/** | ||
* MainWP Child Site Api Backups | ||
* | ||
* Manages MainWP API Backups child site actions when needed. | ||
* | ||
* @package MainWP\Child | ||
*/ | ||
|
||
namespace MainWP\Child; | ||
|
||
/** | ||
* Class MainWP_Child_Api_Backups | ||
* | ||
* This class handles all the MainWP API Backups child site actions when needed. | ||
* | ||
* @package MainWP\Child | ||
*/ | ||
class MainWP_Child_Api_Backups { | ||
|
||
/** | ||
* Public variable to state if supported plugin is installed on the child site. | ||
* | ||
* @var bool If supported plugin is installed, return true, if not, return false. | ||
*/ | ||
public $is_plugin_installed = false; | ||
|
||
/** | ||
* Public static variable to hold the single instance of the class. | ||
* | ||
* @var mixed Default null | ||
*/ | ||
protected static $instance = null; | ||
|
||
/** | ||
* Method instance() | ||
* | ||
* Create a public static instance. | ||
* | ||
* @return mixed Class instance. | ||
*/ | ||
public static function instance() { | ||
if ( null === self::$instance ) { | ||
self::$instance = new self(); | ||
} | ||
|
||
return self::$instance; | ||
} | ||
|
||
/** | ||
* MainWP_Child_Api_Backups constructor. | ||
* | ||
* Run any time class is called. | ||
*/ | ||
public function __construct() { | ||
// Constructor. | ||
} | ||
|
||
/** | ||
* Create a backup of the database for the given child site. | ||
* | ||
* @return void | ||
*/ | ||
public function api_backups_mysqldump() { | ||
|
||
// WordPress DB credentials. | ||
$database_name = DB_NAME; | ||
$user = DB_USER; | ||
$pass = DB_PASSWORD; | ||
|
||
// Remove ":" & all numbers from "Localhost:3306". | ||
$host = str_replace( ':', '', preg_replace( '/[0-9]+/', '', DB_HOST ) ); | ||
|
||
// Get Site URL. | ||
$site_url = str_replace( '/', '.', preg_replace( '#^https?://#i', '', get_bloginfo( 'url' ) ) ); | ||
|
||
// Create a timestamp. | ||
$current_date_time = current_datetime(); | ||
$current_date_time = $current_date_time->format( 'm-d-Y_H.i.s.A' ); | ||
|
||
// Build the uploads directory. | ||
$wp_get_upload_dir = wp_get_upload_dir(); | ||
$wp_upload_dir = $wp_get_upload_dir['basedir'] . '/mainwp/api_db_backups/'; | ||
|
||
// Build the full path to the backup file. | ||
$gzip_full_path = $wp_upload_dir . $database_name . '_' . $site_url . '_' . $current_date_time . '.sql.gz'; | ||
|
||
// Create the directory if it doesn't exist. | ||
if ( ! file_exists( $wp_upload_dir ) ) { //phpcs:ignore | ||
mkdir( $wp_upload_dir, 0755, true ); //phpcs:ignore | ||
} | ||
|
||
if ( function_exists( 'exec' ) ) { | ||
// Create the backup file. hide from logs ( password ). | ||
exec( "mysqldump --user={$user} --password='{$pass}' --host={$host} {$database_name} | gzip > {$gzip_full_path}", $output, $result ); //phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.system_calls_exec | ||
} | ||
|
||
// Check if the backup was successful. | ||
if ( 0 === $result ) { | ||
// Success. | ||
MainWP_Helper::write( | ||
array( | ||
'result' => 'GOOD', | ||
'output' => $output, | ||
'res' => $result, | ||
) | ||
); | ||
} else { | ||
// Error. | ||
MainWP_Helper::write( | ||
array( | ||
'result' => 'ERROR', | ||
'output' => $output, | ||
'res' => $result, | ||
) | ||
); | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.