first commit

This commit is contained in:
Roman Pyrih
2026-04-21 15:48:41 +02:00
commit 7483681901
10216 changed files with 3236626 additions and 0 deletions

View File

@@ -0,0 +1,148 @@
<?php
/**
* @package Duplicator
*/
use Duplicator\Ajax\ServicesActivityLog;
use Duplicator\Models\ActivityLog\LogUtils;
use Duplicator\Models\DynamicGlobalEntity;
use Duplicator\Models\GlobalEntity;
defined("ABSPATH") or die("");
/**
* Variables
*
* @var Duplicator\Core\Controllers\ControllersManager $ctrlMng
* @var Duplicator\Core\Views\TplMng $tplMng
* @var array<string, mixed> $tplData
*/
$global = GlobalEntity::getInstance();
$dGlobal = DynamicGlobalEntity::getInstance();
$retentionMonths = $dGlobal->getValInt('activity_log_retention', LogUtils::DEFAULT_RETENTION_MONTHS) / MONTH_IN_SECONDS;
?>
<div class="dup-accordion-wrapper display-separators close">
<div class="accordion-header">
<h3 class="title" id="advanced-section-header">
<?php esc_html_e('Advanced', 'duplicator-pro') ?>
</h3>
</div>
<div class="accordion-content">
<label class="lbl-larger">
<?php esc_html_e('Settings', 'duplicator-pro'); ?>
</label>
<div class="margin-bottom-1">
<button
id="dupli-reset-all"
class="button secondary hollow small margin-0"
onclick="DupliJs.Pack.ConfirmResetAll(); return false">
<i class="fas fa-redo fa-sm"></i> <?php esc_html_e('Reset All Settings', 'duplicator-pro'); ?>
</button>
<p class="description">
<?php
esc_html_e("Reset all settings to their defaults.", 'duplicator-pro');
$tContent = __(
'Resets standard settings to defaults. Does not affect capabilities, license key, storage or schedules.',
'duplicator-pro'
);
?>
<i
class="fa-solid fa-question-circle fa-sm dark-gray-color"
data-tooltip-title="<?php esc_attr_e("Reset Settings", 'duplicator-pro'); ?>"
data-tooltip="<?php echo esc_attr($tContent); ?>">
</i>
</p>
</div>
<label class="lbl-larger">
<?php esc_html_e("Foreign JavaScript", 'duplicator-pro'); ?>
</label>
<div class="margin-bottom-1">
<input
type="checkbox"
name="_unhook_third_party_js"
id="_unhook_third_party_js"
value="1"
class="margin-0"
<?php checked($global->unhook_third_party_js); ?>>
<label for="_unhook_third_party_js"><?php esc_html_e("Disable", 'duplicator-pro'); ?></label> <br />
<p class="description">
<?php
esc_html_e("Check this option if JavaScript from the theme or other plugins conflicts with Duplicator Pro pages.", 'duplicator-pro');
?>
<br>
<?php
esc_html_e("Do not modify this setting unless you know the expected result or have talked to support.", 'duplicator-pro');
?>
</p>
</div>
<label class="lbl-larger">
<?php esc_html_e("Foreign CSS", 'duplicator-pro'); ?>
</label>
<div class="margin-bottom-1">
<input
type="checkbox"
name="_unhook_third_party_css"
id="unhook_third_party_css"
value="1"
class="margin-0"
<?php checked($global->unhook_third_party_css); ?>>
<label for="unhook_third_party_css"><?php esc_html_e("Disable", 'duplicator-pro'); ?></label> <br />
<p class="description">
<?php
esc_html_e("Check this option if CSS from the theme or other plugins conflicts with Duplicator Pro pages.", 'duplicator-pro');
?>
<br>
<?php
esc_html_e("Do not modify this setting unless you know the expected result or have talked to support.", 'duplicator-pro');
?>
</p>
</div>
<label class="lbl-larger">
<?php esc_html_e("Activity Log Retention", 'duplicator-pro'); ?>
</label>
<div class="margin-bottom-1">
<input
type="number"
class="width-small inline-display margin-0"
name="activity_log_retention_months"
id="activity_log_retention_months"
value="<?php echo (int) $retentionMonths; ?>"
min="0"
step="1">
&nbsp;<span class="inline-display"><?php esc_html_e("months", 'duplicator-pro'); ?></span>
<p class="description">
<?php
esc_html_e("Set how many months to keep activity log entries. Enter 0 to keep all logs permanently.", 'duplicator-pro');
?>
<br>
<?php
esc_html_e("Activity logs older than the specified number of months will be automatically deleted.", 'duplicator-pro');
?>
</p>
</div>
<label class="lbl-larger">
<?php esc_html_e("Delete Activity Logs", 'duplicator-pro'); ?>
</label>
<div class="margin-bottom-1">
<button
type="button"
id="dup-delete-activity-logs"
class="button secondary hollow small margin-0"
data-nonce="<?php echo esc_attr(wp_create_nonce(ServicesActivityLog::NONCE_DELETE_ALL)); ?>"
onclick="DupliJs.Settings.ConfirmDeleteActivityLogs(); return false;">
<i class="fas fa-trash fa-sm"></i> <?php esc_html_e('Delete All Logs', 'duplicator-pro'); ?>
</button>
<p class="description">
<?php esc_html_e("Permanently delete all activity log entries. This action cannot be undone.", 'duplicator-pro'); ?>
</p>
</div>
</div>
</div>

View File

@@ -0,0 +1,115 @@
<?php
/**
* @package Duplicator
*/
use Duplicator\Models\StaticGlobal;
use Duplicator\Utils\Logging\DupLog;
use Duplicator\Utils\Logging\TraceLogMng;
defined("ABSPATH") or die("");
/**
* Variables
*
* @var Duplicator\Core\Controllers\ControllersManager $ctrlMng
* @var Duplicator\Core\Views\TplMng $tplMng
* @var array<string, mixed> $tplData
*/
$trace_log_enabled = StaticGlobal::getTraceLogEnabledOption();
$send_trace_to_error_log = StaticGlobal::getSendTraceToErrorLogOption();
if ($trace_log_enabled) {
$logging_mode = ($send_trace_to_error_log) ? 'enhanced' : 'on';
} else {
$logging_mode = 'off';
}
?>
<div class="dup-accordion-wrapper display-separators close">
<div class="accordion-header">
<h3 class="title">
<?php esc_html_e('Debug', 'duplicator-pro') ?>
</h3>
</div>
<div class="accordion-content">
<label class="lbl-larger">
<?php esc_html_e('Trace Log', 'duplicator-pro'); ?>
</label>
<div class="margin-bottom-1">
<select
name="_logging_mode"
class="margin-0 width-medium">
<option value="off" <?php selected($logging_mode, 'off'); ?>>
<?php esc_html_e('Off', 'duplicator-pro'); ?>
</option>
<option value="on" <?php selected($logging_mode, 'on'); ?>>
<?php esc_html_e('On', 'duplicator-pro'); ?>
</option>
<option value="enhanced" <?php selected($logging_mode, 'enhanced'); ?>>
<?php esc_html_e('On (Enhanced)', 'duplicator-pro'); ?>
</option>
</select>
<p class="description">
<?php
esc_html_e("Turning on log initially clears it out. The enhanced setting writes to both trace and PHP error logs.", 'duplicator-pro');
echo "<br/>";
esc_html_e("WARNING: Only turn on this setting when asked to by support as tracing will impact performance.", 'duplicator-pro');
?>
</p>
</div>
<label class="lbl-larger">
<?php esc_html_e('Trace Log Max Size', 'duplicator-pro'); ?>
</label>
<div class="margin-bottom-1">
<?php
$maxSizeMB = TraceLogMng::getInstance()->getMaxTotalSize() / MB_IN_BYTES;
?>
<input
data-parsley-required data-parsley-errors-container="#trace_max_size_error_container"
data-parsley-min="0"
data-parsley-type="number"
class="inline-display width-small margin-0"
type="number"
name="trace_max_size"
id="trace_max_size"
value="<?php echo (int) $maxSizeMB; ?>">
<span>&nbsp;<?php esc_html_e('MB', 'duplicator-pro'); ?></span>
<div id="trace_max_size_error_container" class="duplicator-error-container"></div>
<p class="description">
<?php
wp_kses(
__(
"Maximum total size for all trace log files.<br/>
When an individual log file reaches its size limit, it is archived and a new file is created. <br/>
This process continues until the total size of all log files reaches this limit, at which point the oldest logs are deleted. <br/>
Setting this to 0 means unlimited size (logs will never be automatically deleted). <br/>
<b>Caution:</b> leaving trace logging enabled with unlimited size for extended periods can consume
significant disk space and require manual cleanup.",
'duplicator-pro'
),
[
'br' => [],
'b' => [],
]
); ?>
</p>
</div>
<label class="lbl-larger">
<?php esc_html_e('Download Trace Log', 'duplicator-pro'); ?>
</label>
<div class="margin-bottom-1">
<button
class="button secondary hollow small margin-0"
<?php disabled(DupLog::traceFileExists(), false); ?>
onclick="DupliJs.Pack.DownloadTraceLog(); return false">
<i class="fa fa-download"></i>
<?php echo esc_html__('Trace Log', 'duplicator-pro') . ' (' . esc_html(DupLog::getTraceStatus()) . ')'; ?>
</button>
</div>
</div>
</div>

View File

@@ -0,0 +1,93 @@
<?php
/**
* @package Duplicator
*/
defined("ABSPATH") or die("");
use Duplicator\Models\GlobalEntity;
use Duplicator\Utils\Email\EmailSummary;
/**
* Variables
*
* @var Duplicator\Core\Controllers\ControllersManager $ctrlMng
* @var Duplicator\Core\Views\TplMng $tplMng
* @var array<string, mixed> $tplData
*/
$global = GlobalEntity::getInstance();
?>
<h3 class="title">
<?php esc_html_e('Email Summary', 'duplicator-pro') ?>
</h3>
<hr size="1" />
<label class="lbl-larger">
<?php esc_html_e('Frequency', 'duplicator-pro'); ?>
</label>
<div class="margin-bottom-1">
<select
id="email-summary-frequency"
name="_email_summary_frequency"
class="margin-0 width-xlarge">
<?php foreach (EmailSummary::getAllFrequencyOptions() as $key => $label) : ?>
<option value="<?php echo esc_attr((string) $key); ?>" <?php selected($global->getEmailSummaryFrequency(), $key); ?>>
<?php echo esc_html($label); ?>
</option>
<?php endforeach; ?>
</select>
<p class="description">
<?php
printf(
esc_html_x(
'You can view the email summary example %1$shere%2$s.',
'%1$s and %2$s are the opening and close <a> tags to the summary preview link',
'duplicator-pro'
),
'<a href="' . esc_url(EmailSummary::getPreviewLink()) . '" target="_blank">',
'</a>'
);
?>
</p>
</div>
<label class="lbl-larger">
<?php esc_html_e('Recipients', 'duplicator-pro'); ?>
</label>
<div class="margin-bottom-1">
<select
id="email-summary-recipients"
name="_email_summary_recipients[]" m
multiple
class="margin-0 width-xlarge">
<?php foreach ($global->getEmailSummaryRecipients() as $email) : ?>
<option value="<?php echo esc_attr($email); ?>" selected><?php echo esc_html($email); ?></option>
<?php endforeach; ?>
<?php foreach (EmailSummary::getRecipientSuggestions() as $email) : ?>
<option value="<?php echo esc_attr($email); ?>"><?php echo esc_html($email); ?></option>
<?php endforeach; ?>
</select>
<?php if (count($global->getEmailSummaryRecipients()) === 0) : ?>
<p class="descriptionred">
<em>
<span class="maroon">
<?php esc_html_e('No recipients entered. Email summary won\'t be send.', 'duplicator-pro') ?>
</span>
</em>
</p>
<?php endif; ?>
</div>
<script type="text/javascript">
jQuery(document).ready(function($) {
$('#email-summary-recipients').select2({
tags: true,
tokenSeparators: [',', ' '],
placeholder: '<?php esc_attr_e('Enter email addresses', 'duplicator-pro'); ?>',
minimumInputLength: 3,
});
});
</script>

View File

@@ -0,0 +1,135 @@
<?php
/**
* @package Duplicator
*/
use Duplicator\Models\GlobalEntity;
use Duplicator\Core\Controllers\ControllersManager;
use Duplicator\Core\Views\TplMng;
use Duplicator\Controllers\SettingsPageController;
use Duplicator\Core\Controllers\PageAction;
use Duplicator\Views\UI\UiDialog;
defined("ABSPATH") or die("");
/**
* Variables
*
* @var Duplicator\Core\Controllers\ControllersManager $ctrlMng
* @var Duplicator\Core\Views\TplMng $tplMng
* @var array<string, mixed> $tplData
*/
$global = GlobalEntity::getInstance();
/** @var PageAction */
$resetAction = $tplData['actions'][SettingsPageController::ACTION_RESET_SETTINGS];
?>
<?php do_action('duplicator_settings_general_before'); ?>
<form id="dup-settings-form" action="<?php echo esc_url(ControllersManager::getCurrentLink()); ?>" method="post" data-parsley-validate>
<?php $tplData['actions'][SettingsPageController::ACTION_GENERAL_SAVE]->getActionNonceFileds(); ?>
<div class="dup-settings-wrapper margin-bottom-1">
<?php $tplMng->render('admin_pages/settings/general/plugin_settings'); ?>
<hr>
<?php TplMng::getInstance()->render('admin_pages/settings/general/email_summary'); ?>
<?php TplMng::getInstance()->render('admin_pages/settings/general/debug_settings'); ?>
<?php TplMng::getInstance()->render('admin_pages/settings/general/advanced_settings'); ?>
</div>
<p>
<input
type="submit" name="submit" id="submit"
class="button primary small"
value="<?php esc_attr_e('Save Settings', 'duplicator-pro') ?>">
</p>
</form>
<?php
$resetSettingsDialog = new UiDialog();
$resetSettingsDialog->title = __('Reset Settings?', 'duplicator-pro');
$resetSettingsDialog->message = __('Are you sure you want to reset settings to defaults?', 'duplicator-pro');
$resetSettingsDialog->progressText = __('Resetting settings, Please Wait...', 'duplicator-pro');
$resetSettingsDialog->jsCallback = 'DupliJs.Pack.ResetAll()';
$resetSettingsDialog->progressOn = false;
$resetSettingsDialog->okText = __('Yes', 'duplicator-pro');
$resetSettingsDialog->cancelText = __('No', 'duplicator-pro');
$resetSettingsDialog->closeOnConfirm = true;
$resetSettingsDialog->initConfirm();
$deleteLogsDialog = new UiDialog();
$deleteLogsDialog->title = __('Delete Activity Logs?', 'duplicator-pro');
$deleteLogsDialog->message = __('Are you sure you want to delete all activity logs? This action cannot be undone.', 'duplicator-pro');
$deleteLogsDialog->progressText = __('Deleting logs, Please Wait...', 'duplicator-pro');
$deleteLogsDialog->jsCallback = 'DupliJs.Settings.DeleteActivityLogs()';
$deleteLogsDialog->progressOn = false;
$deleteLogsDialog->okText = __('Yes', 'duplicator-pro');
$deleteLogsDialog->cancelText = __('No', 'duplicator-pro');
$deleteLogsDialog->closeOnConfirm = true;
$deleteLogsDialog->initConfirm();
?>
<script>
jQuery(document).ready(function($) {
// which: 0=installer, 1=archive, 2=sql file, 3=log
DupliJs.Pack.DownloadTraceLog = function() {
var actionLocation = ajaxurl + '?action=duplicator_get_trace_log&nonce=' +
'<?php echo esc_js(wp_create_nonce('duplicator_get_trace_log')); ?>';
location.href = actionLocation;
};
DupliJs.Pack.ConfirmResetAll = function() {
<?php $resetSettingsDialog->showConfirm(); ?>
};
DupliJs.Pack.ResetAll = function() {
let resetUrl = <?php echo wp_json_encode($resetAction->getUrl()); ?>;
location.href = resetUrl;
};
DupliJs.Settings.ConfirmDeleteActivityLogs = function() {
<?php $deleteLogsDialog->showConfirm(); ?>
};
DupliJs.Settings.DeleteActivityLogs = function() {
var $button = $('#dup-delete-activity-logs');
var nonce = $button.data('nonce');
$button.prop('disabled', true);
$.ajax({
type: 'POST',
url: ajaxurl,
data: {
action: 'duplicator_activity_log_delete_all',
nonce: nonce
},
success: function(response) {
var funcData = response.data && response.data.funcData ? response.data.funcData : {};
if (response.success && funcData.success) {
DupliJs.addAdminMessage(funcData.message, 'notice');
} else {
var errorMsg = funcData.message
? funcData.message
: '<?php echo esc_js(__('An error occurred while deleting activity logs.', 'duplicator-pro')); ?>';
DupliJs.addAdminMessage(errorMsg, 'error');
}
$button.prop('disabled', false);
},
error: function() {
DupliJs.addAdminMessage('<?php echo esc_js(__('An error occurred while deleting activity logs.', 'duplicator-pro')); ?>', 'error');
$button.prop('disabled', false);
}
});
};
//Init
$("#_trace_log_enabled").click(function() {
$('#_send_trace_to_error_log').attr('disabled', !$(this).is(':checked'));
});
});
</script>

View File

@@ -0,0 +1,128 @@
<?php
/**
* @package Duplicator
*/
use Duplicator\Models\GlobalEntity;
use Duplicator\Models\StaticGlobal;
use Duplicator\Utils\Crypt\CryptBlowfish;
defined("ABSPATH") or die("");
/**
* Variables
*
* @var Duplicator\Core\Controllers\ControllersManager $ctrlMng
* @var Duplicator\Core\Views\TplMng $tplMng
* @var array<string, mixed> $tplData
*/
$global = GlobalEntity::getInstance();
?>
<h3 class="title">
<?php esc_html_e("Plugin", 'duplicator-pro') ?>
</h3>
<hr size="1" />
<label class="lbl-larger">
<?php esc_html_e("Version", 'duplicator-pro'); ?>
</label>
<div class="margin-bottom-1">
<?php echo esc_html(DUPLICATOR_VERSION); ?>
</div>
<label class="lbl-larger">
<?php esc_html_e("Uninstall", 'duplicator-pro'); ?>
</label>
<div class="margin-bottom-1">
<input
type="checkbox"
name="uninstall_settings"
id="uninstall_settings"
value="1"
class="margin-0"
<?php checked(StaticGlobal::getUninstallSettingsOption()); ?>>
<label for="uninstall_settings"><?php esc_html_e("Delete plugin settings", 'duplicator-pro'); ?> </label><br />
<input
type="checkbox"
name="uninstall_packages"
id="uninstall_packages"
value="1"
class="margin-0"
<?php checked(StaticGlobal::getUninstallPackageOption()); ?>>
<label for="uninstall_packages"><?php esc_html_e("Delete entire storage directory", 'duplicator-pro'); ?></label><br />
</div>
<label class="lbl-larger">
<?php esc_html_e("Encrypt Settings", 'duplicator-pro'); ?>
</label>
<div class="margin-bottom-1">
<input
type="checkbox"
name="crypt"
id="crypt"
value="1"
class="margin-0"
<?php checked(StaticGlobal::getCryptOption()); ?>>
<label for="crypt"><?php esc_html_e("Enable settings encryption", 'duplicator-pro'); ?> </label><br />
<p class="description">
<?php if (CryptBlowfish::isEncryptAvailable()) { ?>
<?php esc_html_e(
"When this option is enabled, all sensitive data (such as passwords, storage data, and license data)
will be saved encrypted in the database. Disable this option only in case of problems in saving data.",
'duplicator-pro'
); ?>
<?php } else { ?>
<span class="maroon">
<?php esc_html_e('Encryption is not available on this server.', 'duplicator-pro'); ?>
</span>
<?php } ?>
</p>
</div>
<label class="lbl-larger">
<?php esc_html_e("Usage statistics", 'duplicator-pro'); ?>
</label>
<div class="margin-bottom-1">
<?php if (DUPLICATOR_USTATS_DISALLOW) { // @phpstan-ignore-line
?>
<span class="maroon">
<?php esc_html_e('Usage statistics are hardcoded disallowed.', 'duplicator-pro'); ?>
</span>
<?php } else { ?>
<input
type="checkbox"
name="usage_tracking"
id="usage_tracking"
value="1"
class="margin-0"
<?php checked($global->getUsageTracking()); ?>>
<label for="usage_tracking"><?php esc_html_e("Enable usage tracking", 'duplicator-pro'); ?> </label>
<i
class="fa-solid fa-question-circle fa-sm dark-gray-color"
data-tooltip-title="<?php esc_attr_e("Usage Tracking", 'duplicator-pro'); ?>"
data-tooltip="<?php echo esc_attr($tplMng->render('admin_pages/settings/general/usage_tracking_tooltip', [], false)); ?>"
data-tooltip-width="600">
</i>
<?php } ?>
</div>
<label class="lbl-larger">
<?php esc_html_e("Hide Announcements", 'duplicator-pro'); ?>
</label>
<div class="margin-bottom-1">
<input
type="checkbox"
name="dup_am_notices"
id="dup_am_notices"
value="1"
class="margin-0"
<?php checked(!$global->isAmNoticesEnabled()); ?>>
<label for="dup_am_notices">
<?php esc_html_e("Check this option to hide plugin announcements and update details.", 'duplicator-pro'); ?>
</label>
</div>

View File

@@ -0,0 +1,187 @@
<?php
/**
* @package Duplicator
* @copyright (c) 2022, Snap Creek LLC
*/
defined("ABSPATH") || exit;
/**
* Variables
*
* @var \Duplicator\Core\Controllers\ControllersManager $ctrlMng
* @var \Duplicator\Core\Views\TplMng $tplMng
* @var array<string, mixed> $tplData
*/
?>
<div>
<b>
<?php esc_html_e('All information sent to the server is anonymous except the license key and email.', 'duplicator-pro'); ?><br>
<?php esc_html_e('No information about storage or Backup\'s content are sent.', 'duplicator-pro'); ?>
</b>
</div>
<br>
<div>
<?php
esc_html_e(
'Usage tracking for Duplicator helps us better understand our users and their website needs by looking
at a range of server and website environments.',
'duplicator-pro'
);
?>
<b>
<?php esc_html_e('This allows us to continuously improve our product as well as our Q&A / testing process.', 'duplicator-pro'); ?>
</b>
<?php esc_html_e('Below is the list of information that Duplicator collects as part of the usage tracking:', 'duplicator-pro'); ?>
</div>
<ul>
<li>
<?php
printf(
esc_html_x(
'%1$sPHP Version:%2$s So we know which PHP versions we have to test against (no one likes whitescreens or log files full of errors).',
'%1$s and %2$s are are opening and closing bold (<b></b>) tags',
'duplicator-pro'
),
'<b>',
'</b>'
);
?>
</li>
<li>
<?php
printf(
esc_html_x(
'%1$sWordPress Version:%2$s So we know which WordPress versions to support and test against.',
'%1$s and %2$s are are opening and closing bold (<b></b>) tags',
'duplicator-pro'
),
'<b>',
'</b>'
);
?>
</li>
<li>
<?php
printf(
esc_html_x(
'%1$sMySQL Version:%2$s So we know which versions of MySQL to support and test against for our custom tables.',
'%1$s and %2$s are are opening and closing bold (<b></b>) tags',
'duplicator-pro'
),
'<b>',
'</b>'
);
?>
</li>
<li>
<?php
printf(
esc_html_x(
'%1$sDuplicator Version:%2$s So we know which versions of Duplicator are potentially responsible for issues when we get bug reports,
allowing us to identify issues and release solutions much faster.',
'%1$s and %2$s are are opening and closing bold (<b></b>) tags',
'duplicator-pro'
),
'<b>',
'</b>'
);
?>
</li>
<li>
<?php
printf(
esc_html_x(
'%1$sPlugins and Themes infos:%2$s So we can figure out which ones can generate compatibility errors with Duplicator.',
'%1$s and %2$s are are opening and closing bold (<b></b>) tags',
'duplicator-pro'
),
'<b>',
'</b>'
);
?>
</li>
<li>
<?php
printf(
esc_html_x(
'%1$sSite info:%2$s General information about the site such as database, file size, number of users, and sites in case it is a multisite.
This is useful for us to understand the critical issues of Backup creation.',
'%1$s and %2$s are are opening and closing bold (<b></b>) tags',
'duplicator-pro'
),
'<b>',
'</b>'
);
?>
</li>
<li>
<?php
printf(
esc_html_x(
'%1$sBackups infos:%2$s Information about the Backups created and the type of components included.',
'%1$s and %2$s are are opening and closing bold (<b></b>) tags',
'duplicator-pro'
),
'<b>',
'</b>'
);
?>
</li>
<li>
<?php
printf(
esc_html_x(
'%1$sStorage infos:%2$s Information about the type of storage used,
this data is useful for us to understand how to improve our support for external storages.(Only anonymized data is sent).',
'%1$s and %2$s are are opening and closing bold (<b></b>) tags',
'duplicator-pro'
),
'<b>',
'</b>'
);
?>
</li>
<li>
<?php
printf(
esc_html_x(
'%1$sTemplate infos:%2$s Information about the template components.',
'%1$s and %2$s are are opening and closing bold (<b></b>) tags',
'duplicator-pro'
),
'<b>',
'</b>'
);
?>
</li>
<li>
<?php
printf(
esc_html_x(
'%1$sSchedule infos:%2$s Information on how schedules are used.',
'%1$s and %2$s are are opening and closing bold (<b></b>) tags',
'duplicator-pro'
),
'<b>',
'</b>'
);
?>
</li>
<li>
<?php
printf(
esc_html_x(
'%1$sLicense key and email and url:%2$s If you\'re a Duplicator customer, then we use this to determine if there\'s an issue
with your specific license key, and to link the profile of your site with the configuration of authentication to allow us to
determine if there are issues with your Duplicator authentication.',
'%1$s and %2$s are are opening and closing bold (<b></b>) tags',
'duplicator-pro'
),
'<b>',
'</b>'
);
?>
</li>
</ul>