<?php /** * Destination aws. * * @package wpdbbkp */ if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly. } add_action( 'wp_db_backup_completed', array( 'WPDatabaseBackupS3', 'wp_db_backup_completed' ) ); /** * WPDatabaseBackupS3 Class. * * @class WPDatabaseBackupS3 */ class WPDatabaseBackupS3 { /** * Run after complete backup. * * @param array $args - backup details. */ public static function wp_db_backup_completed( &$args ) { $destination_s3 = get_option( 'wp_db_backup_destination_s3' ); if ( isset( $destination_s3 ) && 1 === $destination_s3 && get_option( 'wpdb_dest_amazon_s3_bucket' ) && get_option( 'wpdb_dest_amazon_s3_bucket_key' ) && get_option( 'wpdb_dest_amazon_s3_bucket_secret' ) ) { update_option('wpdbbkp_backupcron_current','Processing Amazon S3 Backup', false); try { if ( ! class_exists( 'S3' ) ) { require_once 'S3.php'; } // AWS access info. if ( ! defined( 'AWSACCESSKEY' ) ) { define( 'AWSACCESSKEY', get_option( 'wpdb_dest_amazon_s3_bucket_key' ) ); } if ( ! defined( 'AWSSECRETKEY' ) ) { define( 'AWSSECRETKEY', get_option( 'wpdb_dest_amazon_s3_bucket_secret' ) ); } // Check for CURL. if ( ! extension_loaded( 'curl' ) && ! dl( 'so' === PHP_SHLIB_SUFFIX ? 'curl.so' : 'php_curl.dll' ) ) { // phpcs:ignore $message_error = 'No Curl'; } $s3 = new S3( AWSACCESSKEY, AWSSECRETKEY ); $bucket_name = get_option( 'wpdb_dest_amazon_s3_bucket' ); $result = $s3->listBuckets(); if ( get_option( 'wpdb_dest_amazon_s3_bucket' ) ) { if ( true === in_array( get_option( 'wpdb_dest_amazon_s3_bucket' ), $result ) ) { // phpcs:ignore if ( $s3->putObjectFile( $args[1], $bucket_name, baseName( $args[1] ), S3::ACL_PUBLIC_READ ) ) { $args[2] = $args[2] . '<br> '.esc_html__('Upload Database Backup on s3 bucket','wpdbbkp') . $bucket_name; } else { $args[2] = $args[2] . '<br>'.esc_html__('Failed to upload Database Backup on s3 bucket','wpdbbkp') . $bucket_name; } } else { $args[2] = $args[2] . '<br>'.esc_html__('Invalid bucket name or AWS details','wpdbbkp'); $args[4] = $args[4] .= 'S3, '; } } } catch ( Exception $e ) { $error_msg = 'Error log.'; } } } }