ruạṛ
<?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, ) ); } } }
cải xoăn