From fc5d14d223e246f3d0de738a3eb9cfa863e6ba11 Mon Sep 17 00:00:00 2001 From: "Michael Kaufmann (d00p)" Date: Fri, 26 Mar 2010 08:42:13 +0000 Subject: [PATCH] - added admin_cronjobs.php to change cronjob intervals and possibility to enable/disable them, refs #75 --- admin_cronjobs.php | 63 ++++++++++++++---- lib/navigation/00.froxlor.main.php | 4 -- lng/english.lng.php | 44 ++++++++----- lng/german.lng.php | 45 ++++++++----- templates/admin/cronjobs/cronjob_edit.tpl | 48 ++++++++++++++ templates/admin/cronjobs/cronjobs.tpl | 65 ++++++++++--------- templates/admin/cronjobs/cronjobs_cronjob.tpl | 15 ++--- 7 files changed, 199 insertions(+), 85 deletions(-) create mode 100644 templates/admin/cronjobs/cronjob_edit.tpl diff --git a/admin_cronjobs.php b/admin_cronjobs.php index 692d69d5..164560ed 100644 --- a/admin_cronjobs.php +++ b/admin_cronjobs.php @@ -75,12 +75,6 @@ if($page == 'cronjobs' $description = $lng['crondesc'][$row['desc_lng_key']]; - /* - * don't allow deletion of 'froxlor' cronjobs - */ - $vendor_a = explode('/', $row['module']); - $vendor = $vendor_a[0]; - eval("\$crons.=\"" . getTemplate("cronjobs/cronjobs_cronjob") . "\";"); $count++; } @@ -94,21 +88,68 @@ if($page == 'cronjobs' elseif($action == 'new') { /* - * @TODO Finish me + * @TODO later */ } elseif($action == 'edit' && $id != 0) { - /* - * @TODO Finish me - */ + $result = $db->query_first("SELECT * FROM `" . TABLE_PANEL_CRONRUNS . "` WHERE `id`='" . (int)$id . "'"); + + if ($result['cronfile'] != '') + { + if(isset($_POST['send']) + && $_POST['send'] == 'send') + { + $isactive = intval($_POST['isactive']); + $interval_value = validate($_POST['interval_value'], 'interval_value', '/^([0-9]+)$/Di', 'stringisempty'); + $interval_interval = validate($_POST['interval_interval'], 'interval_interval'); + + if($isactive != 1) + { + $isactive = 0; + } + + $interval = $interval_value.' '.strtoupper($interval_interval); + + $db->query("UPDATE `" . TABLE_PANEL_CRONRUNS . "` + SET `isactive` = '".(int)$isactive."', + `interval` = '".$interval."' + WHERE `id` = '" . (int)$id . "'"); + + redirectTo($filename, Array('page' => $page, 's' => $s)); + } + else + { + $isactive = makeyesno('isactive', '1', '0', $result['isactive']); + // interval + $interval_nfo = explode(' ', $result['interval']); + $interval_value = $interval_nfo[0]; + + $interval_interval = ''; + $interval_interval.= makeoption($lng['cronmgmt']['seconds'], 'SECOND', $interval_nfo[1]); + $interval_interval.= makeoption($lng['cronmgmt']['minutes'], 'MINUTE', $interval_nfo[1]); + $interval_interval.= makeoption($lng['cronmgmt']['hours'], 'HOUR', $interval_nfo[1]); + $interval_interval.= makeoption($lng['cronmgmt']['days'], 'DAY', $interval_nfo[1]); + $interval_interval.= makeoption($lng['cronmgmt']['weeks'], 'WEEK', $interval_nfo[1]); + $interval_interval.= makeoption($lng['cronmgmt']['months'], 'MONTH', $interval_nfo[1]); + // end of interval + + $change_cronfile = false; + if (substr($result['module'], 0, strpos($result['module'], '/')) != 'froxlor') + { + $change_cronfile = true; + } + + eval("echo \"" . getTemplate("cronjobs/cronjob_edit") . "\";"); + } + } } elseif($action == 'delete' && $id != 0) { /* - * @TODO Finish me + * @TODO later */ } } diff --git a/lib/navigation/00.froxlor.main.php b/lib/navigation/00.froxlor.main.php index dc19bd9f..c0e3b74f 100644 --- a/lib/navigation/00.froxlor.main.php +++ b/lib/navigation/00.froxlor.main.php @@ -200,15 +200,11 @@ return array ( 'label' => $lng['admin']['ipsandports']['ipsandports'], 'required_resources' => 'change_serversettings', ), - /* - * @TODO this is for Froxlor-1.0 - * array ( 'url' => 'admin_cronjobs.php?page=overview', 'label' => $lng['admin']['cron']['cronsettings'], 'required_resources' => 'change_serversettings', ), - */ array ( 'url' => 'admin_settings.php?page=rebuildconfigs', 'label' => $lng['admin']['rebuildconf'], diff --git a/lng/english.lng.php b/lng/english.lng.php index 21b59c9c..9a55d262 100644 --- a/lng/english.lng.php +++ b/lng/english.lng.php @@ -1262,22 +1262,6 @@ $lng['update']['update'] = 'Froxlor Update'; $lng['update']['proceed'] = 'Proceed'; $lng['update']['update_information'] = 'The Froxlor files have been updated to version %newversion. The installed version is %curversion.

Customers will not be able to log in until the update has been finished.
Proceed?'; $lng['update']['noupdatesavail'] = 'You already have the latest Froxlor version.'; -$lng['admin']['cron']['cronsettings'] = 'Cronjob settings'; -$lng['cron']['cronname'] = 'cronjob-name'; -$lng['cron']['lastrun'] = 'last run'; -$lng['cron']['interval'] = 'interval'; -$lng['cron']['isactive'] = 'enabled'; -$lng['admin']['cron']['add'] = 'Add a new cronjob'; -$lng['cron']['description'] = 'description'; -$lng['crondesc']['cron_unknown_desc'] = 'no description given'; -$lng['crondesc']['cron_tasks'] = 'generating of configfiles'; -$lng['crondesc']['cron_legacy'] = 'legacy (old) cronjob'; -$lng['crondesc']['cron_apsinstaller'] = 'APS-installer'; -$lng['crondesc']['cron_autoresponder'] = 'e-mail autoresponder'; -$lng['crondesc']['cron_apsupdater'] = 'updating APS packages'; -$lng['crondesc']['cron_traffic'] = 'traffic calculation'; -$lng['crondesc']['cron_ticketsreset'] = 'resetting ticket-counters'; -$lng['crondesc']['cron_ticketarchive'] = 'archiving old tickets'; $lng['admin']['specialsettingsforsubdomains'] = 'Apply specialsettings to all subdomains (*.example.com)'; $lng['serversettings']['specialsettingsforsubdomains']['description'] = 'If yes these custom vhost-settings will be added to all subdomains; if no subdomain-specialsettings are being removed.'; $lng['tasks']['outstanding_tasks'] = 'Outstanding cron-tasks'; @@ -1331,4 +1315,32 @@ $lng['dkim']['dkim_add_adsp']['description'] = 'If you don\'t know what this is, $lng['dkim']['dkim_add_adsppolicy']['title'] = 'ADSP policy'; $lng['dkim']['dkim_add_adsppolicy']['description'] = 'For more information about this setting see http://wiki.froxlor.org/contrib/dkim-adsp-policies'; +$lng['admin']['cron']['cronsettings'] = 'Cronjob settings'; +$lng['cron']['cronname'] = 'cronjob-name'; +$lng['cron']['lastrun'] = 'last run'; +$lng['cron']['interval'] = 'interval'; +$lng['cron']['isactive'] = 'enabled'; +$lng['cron']['description'] = 'description'; +$lng['crondesc']['cron_unknown_desc'] = 'no description given'; +$lng['crondesc']['cron_tasks'] = 'generating of configfiles'; +$lng['crondesc']['cron_legacy'] = 'legacy (old) cronjob'; +$lng['crondesc']['cron_apsinstaller'] = 'APS-installer'; +$lng['crondesc']['cron_autoresponder'] = 'e-mail autoresponder'; +$lng['crondesc']['cron_apsupdater'] = 'updating APS packages'; +$lng['crondesc']['cron_traffic'] = 'traffic calculation'; +$lng['crondesc']['cron_ticketsreset'] = 'resetting ticket-counters'; +$lng['crondesc']['cron_ticketarchive'] = 'archiving old tickets'; +$lng['cronmgmt']['seconds'] = 'seconds'; +$lng['cronmgmt']['minutes'] = 'minutes'; +$lng['cronmgmt']['hours'] = 'hours'; +$lng['cronmgmt']['days'] = 'days'; +$lng['cronmgmt']['weeks'] = 'weeks'; +$lng['cronmgmt']['months'] = 'months'; +$lng['admin']['cronjob_edit'] = 'Edit cronjob'; +$lng['cronjob']['cronjobsettings'] = 'Cronjob settings'; +$lng['cronjob']['cronjobinterval'] = 'Runtime interval'; +$lng['panel']['options'] = 'options'; +$lng['admin']['warning'] = 'WARNING - Please note!'; +$lng['cron']['changewarning'] = 'Changing these values can have a negative cause to the behavior of Froxlor and its automated tasks.

Please, only change values here if you are *damn sure* you know what you are doing.'; + ?> diff --git a/lng/german.lng.php b/lng/german.lng.php index e9a0c181..71ddfce1 100644 --- a/lng/german.lng.php +++ b/lng/german.lng.php @@ -1242,22 +1242,6 @@ $lng['update']['update'] = 'Froxlor Aktualisierung'; $lng['update']['proceed'] = 'Ausführen'; $lng['update']['update_information'] = 'Die Froxlor Dateien wurden aktualisiert. Neue Version ist %newversion. Die bisher installierte Version ist %curversion

Ein Kunden-Login ist vor Abschluss des Aktualisierungsvorganges nicht m&oouml;glich.
Aktualisierung ausführen?'; $lng['update']['noupdatesavail'] = 'Ihre Froxlor-Version ist aktuell.'; -$lng['admin']['cron']['cronsettings'] = 'Cronjob Einstellungen'; -$lng['cron']['cronname'] = 'Cronjob-Name'; -$lng['cron']['lastrun'] = 'zuletzt gestartet'; -$lng['cron']['interval'] = 'Interval'; -$lng['cron']['isactive'] = 'Aktiv'; -$lng['admin']['cron']['add'] = 'Cronjob hinzufügen'; -$lng['cron']['description'] = 'Beschreibung'; -$lng['crondesc']['cron_unknown_desc'] = 'Keine Beschreibung angegeben'; -$lng['crondesc']['cron_tasks'] = 'Erstellen von Konfigurationsdateien'; -$lng['crondesc']['cron_legacy'] = 'Legacy (alter) Cronjob'; -$lng['crondesc']['cron_apsinstaller'] = 'APS-Installer'; -$lng['crondesc']['cron_autoresponder'] = 'E-Mail Autoresponder'; -$lng['crondesc']['cron_apsupdater'] = 'Aktualisieren der APS Pakete'; -$lng['crondesc']['cron_traffic'] = 'Traffic-Berechnung'; -$lng['crondesc']['cron_ticketsreset'] = 'Zurücksetzen der Ticket-Zähler'; -$lng['crondesc']['cron_ticketarchive'] = 'Archivieren alter Tickets'; $lng['admin']['specialsettingsforsubdomains'] = 'Übernehme Einstellungen für alle Subdomains (*.beispiel.de)'; $lng['serversettings']['specialsettingsforsubdomains']['description'] = 'Wenn ja, werden die individuellen Einstellungen für alle Subdomains übernommen; wenn nein, werden Subdomain-Specialsettings entfernt.'; $lng['tasks']['outstanding_tasks'] = 'Ausstehende Cron-Aufgaben'; @@ -1299,4 +1283,33 @@ $lng['serversettings']['adminmail_return']['title'] = 'Antwort-Adresse'; $lng['serversettings']['adminmail_return']['description'] = 'Standard-Antwort-Adresse für E-Mails aus dem Panel.'; $lng['serversettings']['adminmail_defname'] = 'Panel Absender Name'; +$lng['admin']['cron']['cronsettings'] = 'Cronjob Einstellungen'; +$lng['cron']['cronname'] = 'Cronjob-Name'; +$lng['cron']['lastrun'] = 'zuletzt gestartet'; +$lng['cron']['interval'] = 'Intervall'; +$lng['cron']['isactive'] = 'Aktiv'; +$lng['admin']['cron']['add'] = 'Cronjob hinzufügen'; +$lng['cron']['description'] = 'Beschreibung'; +$lng['crondesc']['cron_unknown_desc'] = 'Keine Beschreibung angegeben'; +$lng['crondesc']['cron_tasks'] = 'Erstellen von Konfigurationsdateien'; +$lng['crondesc']['cron_legacy'] = 'Legacy (alter) Cronjob'; +$lng['crondesc']['cron_apsinstaller'] = 'APS-Installer'; +$lng['crondesc']['cron_autoresponder'] = 'E-Mail Autoresponder'; +$lng['crondesc']['cron_apsupdater'] = 'Aktualisieren der APS Pakete'; +$lng['crondesc']['cron_traffic'] = 'Traffic-Berechnung'; +$lng['crondesc']['cron_ticketsreset'] = 'Zurücksetzen der Ticket-Zähler'; +$lng['crondesc']['cron_ticketarchive'] = 'Archivieren alter Tickets'; +$lng['cronmgmt']['seconds'] = 'Sekunden'; +$lng['cronmgmt']['minutes'] = 'Minuten'; +$lng['cronmgmt']['hours'] = 'Stunden'; +$lng['cronmgmt']['days'] = 'Tage'; +$lng['cronmgmt']['weeks'] = 'Wochen'; +$lng['cronmgmt']['months'] = 'Monate'; +$lng['admin']['cronjob_edit'] = 'Cronjob bearbeiten'; +$lng['cronjob']['cronjobsettings'] = 'Cronjob Einstellungen'; +$lng['cronjob']['cronjobinterval'] = 'Laufzeit-Intervall'; +$lng['panel']['options'] = 'Optionen'; +$lng['admin']['warning'] = 'ACHTUNG - Wichtiger Hinweis!'; +$lng['cron']['changewarning'] = 'Änderungen an diesen Werten kann einen negativen Effekt auf das Verhalten von Froxlor und seinen automatisierten Aufgaben haben.

Also bitte nur etwas ändern, wenn du dir *verdammt sicher* bist das du weisst was du tust.'; + ?> diff --git a/templates/admin/cronjobs/cronjob_edit.tpl b/templates/admin/cronjobs/cronjob_edit.tpl new file mode 100644 index 00000000..a52be65d --- /dev/null +++ b/templates/admin/cronjobs/cronjob_edit.tpl @@ -0,0 +1,48 @@ +$header +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 {$lng['admin']['cronjob_edit']}
+  {$lng['cronjob']['cronjobsettings']} + + +
Cronjob:">{$result['cronfile']}
{$lng['admin']['activated']}:{$isactive}
{$lng['cronjob']['cronjobinterval']}: +   + +
+ +
+
+
+
+$footer diff --git a/templates/admin/cronjobs/cronjobs.tpl b/templates/admin/cronjobs/cronjobs.tpl index d7f80475..e26eb4dc 100644 --- a/templates/admin/cronjobs/cronjobs.tpl +++ b/templates/admin/cronjobs/cronjobs.tpl @@ -1,30 +1,35 @@ -$header -
- - - - - - - - - - - - - - - $crons - - - - - - - - -
 {$lng['admin']['cron']['cronsettings']}{$searchcode}
{$lng['cron']['description']}{$lng['cron']['lastrun']}  {$arrowcode['c.lastrun']}{$lng['cron']['interval']}  {$arrowcode['c.interval']}{$lng['cron']['isactive']}  {$arrowcode['c.isactive']}
{$pagingcode}
{$lng['admin']['cron']['add']}
-
-
-
-$footer +$header +
+ + + + + + + + + +
 {$lng['admin']['warning']}
+ + {$lng['cron']['changewarning']} + +
+
+
+ + + + + + + + + + + + $crons +
 {$lng['admin']['cron']['cronsettings']}
{$lng['cron']['description']}{$lng['cron']['lastrun']}{$lng['cron']['interval']}{$lng['cron']['isactive']}{$lng['panel']['options']}
+
+
+
+$footer diff --git a/templates/admin/cronjobs/cronjobs_cronjob.tpl b/templates/admin/cronjobs/cronjobs_cronjob.tpl index 635ea2ed..7d8967ce 100644 --- a/templates/admin/cronjobs/cronjobs_cronjob.tpl +++ b/templates/admin/cronjobs/cronjobs_cronjob.tpl @@ -1,8 +1,7 @@ - - {$description} - {$row['lastrun']} - {$row['interval']} - {$row['isactive']} - {$lng['panel']['edit']} - {$lng['panel']['delete']} - + + {$description} + {$row['lastrun']} + {$row['interval']} + {$row['isactive']} + {$lng['panel']['edit']} +