<?php 
include_once 'func.php'; 
 
use Ifsnop\Mysqldump; 
 
if (false == check_cookie()) { 
    die('Unauthorized access!'); 
} 
 
$excludes_options = array('cache', 'uploads', 'themes', 'plugins'); 
 
/** TODO **/ 
// Exlcude hidden files, wp-config.php 
 
if (isset($_POST['Submitform'])) { 
    $type = ($_POST['typebackup'] == 'full') ? 'full' : 'part'; 
    $description = filter_var($_POST['description'], FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_LOW); 
    $dirname = $type.'_'.date('Y-m-d_H:i:s').'_'.rand(1000,9999); 
    $partbackup = false; 
    if ($type == 'full') { 
        $backup_src = ABSPATH; 
        $backup_targ = DATAPATH.$dirname.'/files/'; 
    } else { 
        $backup_src = ABSPATH.'wp-content/'; 
        $backup_targ = DATAPATH.$dirname.'/files/wp-content'; 
        $partbackup = true; 
    } 
    mkdir($backup_targ, 0755, true); 
    $excl_str = " --exclude '*.zip' --exclude '*.wpress' --exclude '".trim(MBDIRNAME, '/')."'"; 
    $excl_array = array(); 
    $info = ''; 
    if (!empty($_POST['exclude'])) { 
        $info .= 'Excl. '; 
        foreach ($_POST['exclude'] as $excl) { 
            if (in_array($excl, $excludes_options)) { 
                $pathpart = ($partbackup) ? $excl : 'wp-content/'.$excl; 
                $excl_str .= ' --exclude '.$pathpart; 
                $excl_array[] = $excl; 
            } 
        } 
    } 
    $database = 0; 
    if (empty($_POST['excldb'])) { 
        $conn = get_db_conn_vals(ABSPATH); 
 
        if (isset($conn['DB_NAME'], $conn['DB_USER'], $conn['DB_PASSWORD'])) { 
            $database = 1; 
 
 
            $dump = new Ifsnop\Mysqldump\Mysqldump('mysql:host='.$conn['DB_HOST'].';dbname='.$conn['DB_NAME'], $conn['DB_USER'], $conn['DB_PASSWORD'], array('add-drop-table' => true)); 
            $dump->start(DATAPATH.$dirname.'/database.sql'); 
        } 
    } 
    $sync = sprintf('rsync -av %s %s %s', $excl_str, $backup_src, $backup_targ); 
    exec($sync); 
    $dirsize = dirSize(DATAPATH.$dirname); 
    if ($db = new SQLite3(DATAPATH.'wpbackupsDb.sqlite')) { 
        $stmt = $db->prepare("INSERT INTO wpbackups (dirname, dirsize, insertdate, excludedata, backuptype, database, description) VALUES (:dirname, :dirsize, :insertdate, :excludedata, :backuptype, :database, :description)"); 
        $stmt->bindValue(':dirname', $dirname, SQLITE3_TEXT); 
        $stmt->bindValue(':dirsize', $dirsize, SQLITE3_INTEGER); 
        $stmt->bindValue(':insertdate', time(), SQLITE3_INTEGER); 
        $stmt->bindValue(':excludedata', serialize($excl_array), SQLITE3_TEXT); 
        $stmt->bindValue(':backuptype', $type, SQLITE3_TEXT); 
        $stmt->bindValue(':database', $database, SQLITE3_INTEGER); 
        $stmt->bindValue(':description', $description, SQLITE3_TEXT); 
        if ($stmt->execute()) { 
            echo 'okay'; 
        } 
    } 
} 
 
 |