3 Automatically deletes historic page versions, but leaves out the first,
4 a few versions from the end and every Nth version (to be configured)
5 also. DOES NOT ENGAGE without configuring it first.
9 // define("VERHOLES_INTERLEAVE", 10); // keep every Nth version, off==0
10 // define("VERHOLES_KEEP_END", 3); // always keep last num versions
11 // define("VERHOLES_KEEP_START", 1); // you SHOULD keep .1 for flat_files!
12 // define("VERHOLES_NOTOUCH_TIME", 30); // keep versions younger than 30 days
16 if (defined("VERHOLES_INTERLEAVE") and defined("VERHOLES_KEEP_END")) {
18 #-- built-in defaultz for these two
19 define("VERHOLES_KEEP_START", 1);
20 if (defined("KEPTPAGES")) {
21 define("VERHOLES_NOTOUCH_TIME", KEPTPAGES);
24 define("VERHOLES_NOTOUCH_TIME", 30);
26 define("EWIKI_DB_F_ARCHIVE", 1<<11);
27 $start = VERHOLES_KEEP_START;
28 $end = VERHOLES_KEEP_END;
29 $leave = VERHOLES_INTERLEAVE;
30 $ignore = VERHOLES_NOTOUCH_TIME;
31 echo "[$cron]: deleting all page versions $start..-$end with interleave of $leave, without touching versions younger than $ignore days\n";
32 $t_skip = time() - $ignore*24*2600;
35 $result = ewiki_db::GETALL(array("id", "version"));
36 while ($row = $result->get()) {
39 if ($row["flags"] & EWIKI_DB_F_ARCHIVE) { continue; }
41 $verZ = $row["version"] - $end;
44 #-- walk versions (top..down)
45 for ($ver=$verZ; $ver>=$verA; $v--) {
48 if ($leave && !($ver % $leave)) {
53 $row = ewiki_db::GET($id, $ver);
54 if ($row["lastmodified"] >= $t_skip) {
59 if ($row["flags"] & EWIKI_DB_F_ARCHIVE) {
62 if ($row["flags"] & EWIKI_DB_F_READONLY) {
63 // has no meaning here(?!)
66 #-- else really delete it
67 ewiki_db::DELETE($id, $ver);