165 lines
6.1 KiB
PHP
165 lines
6.1 KiB
PHP
<?php
|
|
defined('ABSPATH') || defined('DUPXABSPATH') || exit;
|
|
$action = isset($_POST['action']) ? sanitize_text_field($_POST['action']) : '';
|
|
$scan_run = ($action == 'duplicator_recursion') ? true : false;
|
|
$ajax_nonce = wp_create_nonce('DUP_CTRL_Tools_runScanValidator');
|
|
?>
|
|
|
|
<style>
|
|
div#hb-result {padding: 10px 5px 0 5px; line-height:20px; font-size: 12px}
|
|
</style>
|
|
|
|
<!-- ==========================================
|
|
THICK-BOX DIALOGS: -->
|
|
<?php
|
|
$confirm1 = new DUP_UI_Dialog();
|
|
$confirm1->title = __('Run Validator', 'duplicator');
|
|
$confirm1->message = __('This will run the scan validation check. This may take several minutes. Do you want to Continue?', 'duplicator');
|
|
$confirm1->progressOn = false;
|
|
$confirm1->jscallback = 'Duplicator.Tools.runScanValidator()';
|
|
$confirm1->initConfirm();
|
|
?>
|
|
|
|
<!-- ==============================
|
|
SCAN VALIDATOR -->
|
|
<div class="dup-box">
|
|
<div class="dup-box-title">
|
|
<i class="far fa-check-square"></i>
|
|
<?php esc_html_e("Scan Validator", 'duplicator'); ?>
|
|
<div class="dup-box-arrow"></div>
|
|
</div>
|
|
<div class="dup-box-panel" style="display: <?php echo $scan_run ? 'block' : 'none'; ?>">
|
|
<?php
|
|
esc_html_e(
|
|
"This utility will help to find unreadable files and sym-links in your environment that can lead to issues during the scan process.
|
|
The utility will also show how many files and directories you have in your system. This process may take several minutes to run.
|
|
If there is a recursive loop on your system then the process has a built in check to stop after a large set of files and directories have been scanned.
|
|
A message will show indicated that a scan depth has been reached. If you have issues with the Backup scanner (step 2) during the build process then try to add
|
|
the paths below to your file filters to allow the scanner to finish.",
|
|
"duplicator"
|
|
);
|
|
?>
|
|
<br/><br/>
|
|
|
|
|
|
<button id="scan-run-btn" type="button" class="button button-large button-primary" onclick="Duplicator.Tools.ConfirmScanValidator()">
|
|
<?php esc_html_e("Run Scan Integrity Validation", "duplicator"); ?>
|
|
</button>
|
|
|
|
<script id="hb-template" type="text/x-handlebars-template">
|
|
<b>Scan Path:</b> <?php echo esc_html(duplicator_get_abs_path()); ?> <br/>
|
|
<b>Scan Results</b><br/>
|
|
<table>
|
|
<tr>
|
|
<td><b>Files:</b></td>
|
|
<td>{{payload.fileCount}} </td>
|
|
<td> </td>
|
|
<td><b>Dirs:</b></td>
|
|
<td>{{payload.dirCount}} </td>
|
|
</tr>
|
|
</table>
|
|
<br/>
|
|
|
|
<b>Unreadable Dirs/Files:</b> <br/>
|
|
{{#if payload.unreadable}}
|
|
{{#each payload.unreadable}}
|
|
{{@index}} : {{this}}<br/>
|
|
{{/each}}
|
|
{{else}}
|
|
<i>No Unreadable items found</i> <br/>
|
|
{{/if}}
|
|
<br/>
|
|
|
|
<b>Symbolic Links:</b> <br/>
|
|
{{#if payload.symLinks}}
|
|
{{#each payload.symLinks}}
|
|
{{@index}} : {{this}}<br/>
|
|
{{/each}}
|
|
{{else}}
|
|
<i>No Sym-links found</i> <br/>
|
|
<small> <?php esc_html_e("Note: Symlinks are not discoverable on Windows OS with PHP", "duplicator"); ?></small> <br/>
|
|
{{/if}}
|
|
<br/>
|
|
|
|
<b>Directory Name Checks:</b> <br/>
|
|
{{#if payload.nameTestDirs}}
|
|
{{#each payload.nameTestDirs}}
|
|
{{@index}} : {{this}}<br/>
|
|
{{/each}}
|
|
{{else}}
|
|
<i>No name check warnings located for directory paths</i> <br/>
|
|
{{/if}}
|
|
<br/>
|
|
|
|
<b>File Name Checks:</b> <br/>
|
|
{{#if payload.nameTestFiles}}
|
|
{{#each payload.nameTestFiles}}
|
|
{{@index}} : {{this}}<br/>
|
|
{{/each}}
|
|
{{else}}
|
|
<i>No name check warnings located for directory paths</i> <br/>
|
|
{{/if}}
|
|
|
|
<br/>
|
|
</script>
|
|
<div id="hb-result"></div>
|
|
|
|
</div>
|
|
</div>
|
|
<br/>
|
|
|
|
<script>
|
|
jQuery(document).ready(function($)
|
|
{
|
|
Duplicator.Tools.ConfirmScanValidator = function()
|
|
{
|
|
<?php $confirm1->showConfirm(); ?>
|
|
}
|
|
|
|
//Run request to: admin-ajax.php?action=DUP_CTRL_Tools_runScanValidator
|
|
Duplicator.Tools.runScanValidator = function()
|
|
{
|
|
tb_remove();
|
|
var data = {
|
|
action : 'DUP_CTRL_Tools_runScanValidator',
|
|
nonce: '<?php echo esc_js($ajax_nonce); ?>',
|
|
recursive_scan: 1
|
|
};
|
|
|
|
$('#hb-result').html('<?php esc_html_e("Scanning Environment... This may take a few minutes.", "duplicator"); ?>');
|
|
$('#scan-run-btn').html('<i class="fas fa-circle-notch fa-spin fa-fw"></i> Running Please Wait...');
|
|
|
|
$.ajax({
|
|
type: "POST",
|
|
dataType: "text",
|
|
url: ajaxurl,
|
|
data: data,
|
|
success: function(respData) {
|
|
try {
|
|
var data = Duplicator.parseJSON(respData);
|
|
} catch(err) {
|
|
console.error(err);
|
|
console.error('JSON parse failed for response data: ' + respData);
|
|
console.log(respData);
|
|
return false;
|
|
}
|
|
Duplicator.Tools.IntScanValidator(data);
|
|
},
|
|
error: function(data) {console.log(data)},
|
|
done: function(data) {console.log(data)}
|
|
});
|
|
}
|
|
|
|
//Process Ajax Template
|
|
Duplicator.Tools.IntScanValidator= function(data)
|
|
{
|
|
var template = $('#hb-template').html();
|
|
var templateScript = Handlebars.compile(template);
|
|
var html = templateScript(data);
|
|
$('#hb-result').html(html);
|
|
$('#scan-run-btn').html('<?php esc_html_e("Run Scan Integrity Validation", "duplicator"); ?>');
|
|
}
|
|
});
|
|
</script>
|
|
|