Add lifetime for modification log entries
authorMatthias Schmidt <gravatronics@live.com>
Sun, 7 Jun 2020 12:19:57 +0000 (14:19 +0200)
committerMatthias Schmidt <gravatronics@live.com>
Sun, 7 Jun 2020 12:19:57 +0000 (14:19 +0200)
Close #3243

com.woltlab.wcf/option.xml
constants.php
wcfsetup/install/files/lib/system/cronjob/DailyCleanUpCronjob.class.php
wcfsetup/install/lang/de.xml
wcfsetup/install/lang/en.xml

index 7e5bea9e463f8e3b17816738fb12228050a7add7..d8db18b80476d3708a741d6035ed54f019dc0509 100644 (file)
@@ -1544,6 +1544,14 @@ ruby
 rust
 go</defaultvalue>
                        </option>
+                       <option name="modification_log_expiration">
+                               <categoryname>message.general</categoryname>
+                               <optiontype>integer</optiontype>
+                               <defaultvalue>0</defaultvalue>
+                               <minvalue>0</minvalue>
+                               <maxvalue>365</maxvalue>
+                               <suffix>days</suffix>
+                       </option>
                        <!-- /message.general -->
                        <option name="search_results_per_page">
                                <categoryname>message.search</categoryname>
index 61605901e2b7a3f7c822342e62379916dc90b705..66970fe2572c7e274a6d668b3f996dff0034b6d4 100644 (file)
@@ -263,3 +263,4 @@ define('BLACKLIST_SFS_EMAIL_ADDRESS', 'moreThanOnce');
 define('BLACKLIST_SFS_IP_ADDRESS', '90percentile');
 define('BLACKLIST_SFS_ACTION', 'disable');
 define('ENABLE_ENTERPRISE_MODE', 0);
+define('MODIFICATION_LOG_EXPIRATION', 0);
index 8c1aec7e4ab845e24450332d134badd9d2c1fcad..ede848e11034cf48ad292c3101330b74256ccb49 100644 (file)
@@ -1,6 +1,7 @@
 <?php
 namespace wcf\system\cronjob;
 use wcf\data\cronjob\Cronjob;
+use wcf\data\modification\log\ModificationLog;
 use wcf\data\object\type\ObjectTypeCache;
 use wcf\system\visitTracker\VisitTracker;
 use wcf\system\WCF;
@@ -152,6 +153,15 @@ class DailyCleanUpCronjob extends AbstractCronjob {
                        ]);
                }
                
+               if (MODIFICATION_LOG_EXPIRATION > 0) {
+                       $sql = "DELETE FROM     wcf".WCF_N."_modification_log
+                               WHERE           time < ?";
+                       $statement = WCF::getDB()->prepareStatement($sql);
+                       $statement->execute([
+                               TIME_NOW - 86400 * MODIFICATION_LOG_EXPIRATION
+                       ]);
+               }
+               
                // clean up error logs
                $files = @glob(WCF_DIR.'log/*.txt');
                if (is_array($files)) {
index 714e010d033f6486a59fc74dbf6374950260811d..d7e287dd91061257f202539d44645ec451bb53e7 100644 (file)
@@ -1762,6 +1762,8 @@ Die Datenbestände werden sorgfältig gepflegt, aber es ist nicht ausgeschlossen
                <item name="wcf.acp.option.blacklist_sfs_action.description"><![CDATA[Es besteht immer das Risiko eines fehlerhaften Eintrages, daher wird die Einstellung <strong>Deaktivierung, erfordert manuelle Freischaltung</strong> ausdrücklich empfohlen.]]></item>
                <item name="wcf.acp.option.blacklist_sfs_action.disable"><![CDATA[Deaktivierung, erfordert manuelle Freischaltung]]></item>
                <item name="wcf.acp.option.module_amp"><![CDATA[<abbr title="Accelerated Mobile Pages">AMP</abbr>]]></item>
+               <item name="wcf.acp.option.modification_log_expiration"><![CDATA[Speicherzeit für Änderungen]]></item>
+               <item name="wcf.acp.option.modification_log_expiration.description"><![CDATA[Zeitraum, nachdem alte Änderungen aus dem Änderungsprotokoll entfernt werden [0, um die Entfernung gänzlich zu deaktivieren]]]></item>
        </category>
        <category name="wcf.acp.customOption">
                <item name="wcf.acp.customOption.list"><![CDATA[Eingabefelder]]></item>
index 9c7e207d20a7f8f161f5216be338d0aed6fdd1c4..4cee031df0cd21f5aa3bff1033a2362c6e20ed53 100644 (file)
@@ -1746,6 +1746,8 @@ The database is carefully maintained, but there will be always be a margin of er
                <item name="wcf.acp.option.blacklist_sfs_action.description"><![CDATA[There is always the risk of a false-positive match, therefore it is highly recommended to set it to <strong>Disable and require manual approval</strong>.]]></item>
                <item name="wcf.acp.option.blacklist_sfs_action.disable"><![CDATA[Disable and require manual approval]]></item>
                <item name="wcf.acp.option.module_amp"><![CDATA[<abbr title="Accelerated Mobile Pages">AMP</abbr>]]></item>
+               <item name="wcf.acp.option.modification_log_expiration"><![CDATA[Storage Time for Modification Logs]]></item>
+               <item name="wcf.acp.option.modification_log_expiration.description"><![CDATA[Modification logs will be deleted after the entered amount of days. To disable deleting old modification logs, enter “0”.]]></item>
        </category>
        <category name="wcf.acp.customOption">
                <item name="wcf.acp.customOption.list"><![CDATA[Option Fields]]></item>