Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 26 additions & 0 deletions Assets/JS/EditSettings.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
document.addEventListener('DOMContentLoaded', function () {
const frequencySelect = document.getElementById('backup_frequency');
const weeklyDaySelect = document.getElementById('weekly_backup_day');
const monthlyDayInput = document.getElementById('monthly_backup_day');

// Find the parent container of the inputs to hide the label as well.
// You may need to inspect the page source in your browser to find the exact parent element and its class.
//const weeklyContainer = weeklyDaySelect ? weeklyDaySelect.closest('div.col-sm-3') : null;
//const monthlyContainer = monthlyDayInput ? monthlyDayInput.closest('div.col-sm-3') : null;

const toggleVisibility = () => {
if (frequencySelect.value === '1 week') {
weeklyDaySelect.style.display = '';
monthlyDayInput.style.display = 'none';
} else if (frequencySelect.value === '1 month') {
weeklyDaySelect.style.display = 'none';
monthlyDayInput.style.display = '';
} else {
weeklyDaySelect.style.display = 'none';
monthlyDayInput.style.display = 'none';
}
};

frequencySelect.addEventListener('change', toggleVisibility);
toggleVisibility();
});
50 changes: 45 additions & 5 deletions Cron.php
Original file line number Diff line number Diff line change
Expand Up @@ -32,11 +32,51 @@ class Cron extends CronClass

public function run(): void
{
$this->job(self::JOB_NAME)
->every('1 week')
->run(function () {
$this->createBackup();
});
$frequency = Tools::settings('default', 'backup_frequency');
$dayOfWeek = Tools::settings('default', 'weekly_backup_day', 1);
$dayOfMonth = Tools::settings('default', 'monthly_backup_day', 1);

$job = $this->job(self::JOB_NAME);

if ($frequency === '1 month') {
$job->everyDay($dayOfMonth, 7);
} elseif ($frequency === '1 week') {
switch ($dayOfWeek) {
case 1:
$job->everyMondayAt(7);
break;
case 2:
$job->everyTuesdayAt(7);
break;
case 3:
$job->everyWednesdayAt(7);
break;
case 4:
$job->everyThursdayAt(7);
break;
case 5:
$job->everyFridayAt(7);
break;
case 6:
$job->everySaturdayAt(7);
break;
case 7:
$job->everySundayAt(7);
break;
default:
$job->everyMondayAt(7);
}
} elseif ($frequency === '1 day') {
$job->every('1 day');
}
else{
// selección no válida
return;
}

$job->run(function () {
$this->createBackup();
});
}

protected function createBackup(): void
Expand Down
31 changes: 31 additions & 0 deletions Extension/XMLView/SettingsDefault.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
<?xml version="1.0" encoding="UTF-8"?>
<view>
<columns>
<group name="advanced" numcolumns="12">
<column name="backup_frequency" numcolumns="3" order="121">
<widget type="select" fieldname="backup_frequency" icon="fas fa-regular fa-clock" id="backup_frequency">
<values title="daily">1 day</values>
<values title="weekly">1 week</values>
<values title="monthly">1 month</values>
</widget>
</column>
<column name="weekly-backup-day" id="weekly_backup_day" numcolumns="3" order="122">
<widget type="select" fieldname="weekly_backup_day" required="true">
<values title="monday">1</values>
<values title="tuesday">2</values>
<values title="wednesday">3</values>
<values title="thursday">4</values>
<values title="friday">5</values>
<values title="saturday">6</values>
<values title="sunday">7</values>
</widget>
</column>
<column name="monthly_backup_day" numcolumns="3" order="123" id="monthly_backup_day">
<widget type="number" fieldname="monthly_backup_day" min="1" max="31"/>
</column>
<column name="css-style" numcolumns="12" order="200">
<widget type="textarea" fieldname="css_style"/>
</column>
</group>
</columns>
</view>
2 changes: 2 additions & 0 deletions Init.php
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@

namespace FacturaScripts\Plugins\Backup;

use FacturaScripts\Dinamic\Lib\AssetManager;
use FacturaScripts\Core\Template\InitClass;

/**
Expand All @@ -31,6 +32,7 @@ class Init extends InitClass
public function init(): void
{
$this->loadExtension(new Extension\Controller\ListFacturaCliente());
AssetManager::addJs(FS_ROUTE . 'plugins/Backup/Assets/JS/EditSettings.js');
}

public function uninstall(): void
Expand Down