first commit

This commit is contained in:
Roman Pyrih
2026-04-03 10:22:35 +02:00
commit 5de35e358d
8424 changed files with 2907254 additions and 0 deletions

View File

@@ -0,0 +1,195 @@
<?php
/**
* @package Duplicator
*/
use Duplicator\Addons\ProBase\License\License;
use Duplicator\Controllers\SettingsPageController;
use Duplicator\Core\CapMng;
use Duplicator\Core\Controllers\ControllersManager;
use Duplicator\Core\Views\TplMng;
defined("ABSPATH") or die("");
/**
* Variables
*
* @var Duplicator\Core\Controllers\ControllersManager $ctrlMng
* @var Duplicator\Core\Views\TplMng $tplMng
* @var array<string, mixed> $tplData
*/
?>
<form id="dup-capabilites-form" action="<?php echo esc_url(ControllersManager::getCurrentLink()); ?>" method="post" data-parsley-validate>
<?php $tplData['actions'][SettingsPageController::ACTION_CAPABILITIES_SAVE]->getActionNonceFileds(); ?>
<div class="dup-capabilities-selector-wrapper" >
<h3 class="title">
<?php esc_html_e('Roles and Permissions', 'duplicator-pro') ?>
</h3>
<hr size="1" />
<?php $tplMng->render('admin_pages/settings/capabilities/no_license_message'); ?>
<p>
<?php
esc_html_e(
'Select the user roles and/or users that are allowed to manage different aspects of Duplicator.',
'duplicator-pro'
); ?><br>
<?php
esc_html_e(
'By default, all permissions are provided only to administrator users.',
'duplicator-pro'
); ?><br>
<?php
esc_html_e(
'Some capabilities depend on others so if you select for example storage capability automatically the package read and package edit capabilities are assigned.', // phpcs:ignore Generic.Files.LineLength
'duplicator-pro'
);
?><br>
<b>
<?php esc_html_e('It is not possible to self remove the manage settings capabilities.', 'duplicator-pro'); ?>
</b>
</p>
<table class="form-table">
<tbody>
<?php
$capList = CapMng::getCapsInfo();
foreach ($capList as $cap => $capInfo) {
if ($cap === CapMng::CAP_LICENSE && !CapMng::can(CapMng::CAP_LICENSE, false)) {
continue;
}
$inputName = TplMng::getInputName('cap', $cap) . '[]';
$inputId = TplMng::getInputId('cap', $cap);
$tCont = $tplMng->render(
'admin_pages/settings/capabilities/capabilites_info_tooltip',
[
'info' => $capInfo,
'pLabel' => (strlen($capInfo['parent']) > 0 ? $capList[$capInfo['parent']]['label'] : ''),
],
false
);
$nParents = 0;
$pCeck = $capInfo;
while (strlen($pCeck['parent']) > 0) {
$nParents++;
$pCeck = $capList[$pCeck['parent']];
}
?>
<tr>
<th scope="row">
<label for="<?php echo esc_attr($inputId); ?>" >
<?php echo esc_html(str_repeat('-&nbsp;&nbsp;', $nParents)); ?>
<?php echo esc_html($capInfo['label']); ?>
</label>&nbsp;
<i
class="fas fa-question-circle fa-sm"
data-tooltip-title="<?php echo esc_attr($capInfo['label']); ?>"
data-tooltip="<?php echo esc_attr($tCont); ?>"
data-tooltip-width="600"
>
</i>
</th>
<td>
<select
id="<?php echo esc_attr($inputId); ?>"
name="<?php echo esc_attr($inputName); ?>"
multiple
<?php disabled(License::can(License::CAPABILITY_CAPABILITIES_MNG), false); ?>
>
<?php
foreach (CapMng::getSelectableRoles() as $role => $roleName) {
if (!in_array($role, CapMng::getInstance()->getCapRoles($cap))) {
continue;
}
?>
<option
value="<?php echo esc_attr($role); ?>"
<?php selected(true); ?>
>
<?php echo esc_html($roleName); ?>
</option>
<?php
}
foreach (CapMng::getInstance()->getCapUsers($cap) as $userId) {
if (($user = get_user_by('id', $userId) ) == false) {
continue;
}
?>
<option
value="<?php echo (int) $user->ID; ?>"
<?php selected(true); ?>
>
<?php echo esc_html($user->user_email); ?>
</option>
<?php } ?>
</select>
</td>
</tr>
<?php } ?>
</tbody>
</table>
</div>
<p>
<input
type="submit" name="submit" id="submit"
class="button-primary"
value="<?php esc_attr_e('Update Capabilities', 'duplicator-pro') ?>"
<?php disabled(License::can(License::CAPABILITY_CAPABILITIES_MNG), false); ?>
>
&nbsp;
<button
id="dup-capabilities-reset"
class="button-secondary"
>
<?php esc_html_e('Reset to Default', 'duplicator-pro'); ?>
</button>
</p>
</form>
<?php
//Delete Dialog
$dlgDelete = new DUP_PRO_UI_Dialog();
$dlgDelete->title = __('Are you sure do you want to reset the capabilities to default?', 'duplicator-pro');
$dlgDelete->message = '<p>' . __('This action will reassign all the capabilities of the Administrator role.', 'duplicator-pro') . '<p>';
$dlgDelete->jsCallback = 'DupPro.Settings.CapabilitesReset()';
$dlgDelete->initConfirm();
?>
<script>
jQuery(document).ready(function($) {
DupPro.Settings.CapabilitesReset = function () {
window.location.href = <?php echo json_encode($tplData['actions'][SettingsPageController::ACTION_CAPABILITIES_RESET]->getUrl()); ?>;
};
$('.dup-capabilities-selector-wrapper select').select2({
width: 'resolve',
ajax: {
type: "POST",
url: ajaxurl,
dataType: 'json',
delay: 250,
data: function (params) {
let query = {
search: params.term,
page: params.page || 1,
action: 'duplicator_settings_cap_users_list',
nonce: '<?php echo esc_js(wp_create_nonce('duplicator_settings_cap_users_list')); ?>'
}
return query;
},
processResults: function (data) {
return data.data.funcData;
},
cache: true
},
placeholder: <?php echo json_encode(__('Search roles or users', 'duplicator-pro')); ?>,
minimumInputLength: <?php echo (License::can(License::CAPABILITY_CAPABILITIES_MNG_PLUS) ? 2 : 0); ?>
});
$('#dup-capabilities-reset').on('click', function(e) {
e.preventDefault();
<?php $dlgDelete->showConfirm(); ?>
});
});
</script>

View File

@@ -0,0 +1,27 @@
<?php
/**
* @package Duplicator
*/
use Duplicator\Core\CapMng;
defined("ABSPATH") or die("");
/**
* Variables
*
* @var Duplicator\Core\Controllers\ControllersManager $ctrlMng
* @var Duplicator\Core\Views\TplMng $tplMng
* @var array<string, mixed> $tplData
*/
$info = $tplData['info'];
?>
<p>
<?php echo esc_html($info['desc']); ?>
</p>
<?php if (strlen($info['parent']) > 0) { ?>
<br>
<?php esc_html_e('Parent', 'duplicator-pro'); ?>: <b><?php echo esc_html($tplData['pLabel']); ?></b>
<?php } ?>

View File

@@ -0,0 +1,65 @@
<?php
/**
* @package Duplicator
*/
use Duplicator\Addons\ProBase\License\License;
use Duplicator\Addons\ProBase\Models\LicenseData;
defined("ABSPATH") or die("");
/**
* Variables
*
* @var Duplicator\Core\Controllers\ControllersManager $ctrlMng
* @var Duplicator\Core\Views\TplMng $tplMng
* @var array<string, mixed> $tplData
*/
if (License::can(License::CAPABILITY_CAPABILITIES_MNG)) {
return;
}
?>
<p id="dup-no-license-message" class="dup-border-left-red-notice" >
<b>
<?php
esc_html_e(
'The current license does not allow to manage the capabilities. ',
'duplicator-pro'
);
?>
</b>
<br>
<?php
if (License::getLicenseStatus() === LicenseData::STATUS_VALID) {
printf(
esc_html_x(
'If you want to manage the capabilities please %1$supgrade your license%2$s.',
'1: <a> tag, 2: </a> tag',
'duplicator-pro'
),
'<a href="' . esc_url(License::getUpsellURL()) . '" target="_blank">',
'</a>'
);
} else {
printf(
esc_html_x(
'If you want to manage the capabilities please %1$srenew your license%2$s.',
'1: <a> tag, 2: </a> tag',
'duplicator-pro'
),
'<a href="' . esc_url(License::getUpsellURL()) . '" target="_blank">',
'</a>'
);
}
?>
<br><br>
<?php
esc_html_e(
'It\'s possible to reset the capabilities to the default values with "Reset to default" button.',
'duplicator-pro'
);
?>
</p>