Overall performance increased
[mailer.git] / inc / extensions / ext-autopurge.php
1 <?php
2 /************************************************************************
3  * MXChange v0.2.1                                    Start: 05/29/2004 *
4  * ================                             Last change: 01/07/2005 *
5  *                                                                      *
6  * -------------------------------------------------------------------- *
7  * File              : ext-autopurge.php                                *
8  * -------------------------------------------------------------------- *
9  * Short description : Automatical purging of outdated mail links       *
10  * -------------------------------------------------------------------- *
11  * Kurzbeschreibung  : Auto-Loeschung von veralteten Mail-Links         *
12  * -------------------------------------------------------------------- *
13  *                                                                      *
14  * -------------------------------------------------------------------- *
15  * Copyright (c) 2003 - 2008 by Roland Haeder                           *
16  * For more information visit: http://www.mxchange.org                  *
17  *                                                                      *
18  * This program is free software; you can redistribute it and/or modify *
19  * it under the terms of the GNU General Public License as published by *
20  * the Free Software Foundation; either version 2 of the License, or    *
21  * (at your option) any later version.                                  *
22  *                                                                      *
23  * This program is distributed in the hope that it will be useful,      *
24  * but WITHOUT ANY WARRANTY; without even the implied warranty of       *
25  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the        *
26  * GNU General Public License for more details.                         *
27  *                                                                      *
28  * You should have received a copy of the GNU General Public License    *
29  * along with this program; if not, write to the Free Software          *
30  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,               *
31  * MA  02110-1301  USA                                                  *
32  ************************************************************************/
33
34 // Some security stuff...
35 if (!defined('__SECURITY')) {
36         $INC = substr(dirname(__FILE__), 0, strpos(dirname(__FILE__), "/inc") + 4) . "/security.php";
37         require($INC);
38 }
39
40 // Version number
41 $EXT_VERSION = "0.4.0";
42
43 // Auto-set extension version
44 if (empty($EXT_VER)) $EXT_VER = $EXT_VERSION;
45
46 // Version history array (add more with , "0.1" and so on)
47 $EXT_VER_HISTORY = array("0.0", "0.1", "0.1.1", "0.1.2", "0.1.3", "0.1.4", "0.1.5", "0.1.6", "0.1.7", "0.1.8", "0.1.9", "0.2.0", "0.2.1", "0.2.2", "0.2.3", "0.2.4", "0.2.5", "0.2.6", "0.2.7", "0.2.8", "0.2.9", "0.3.0", "0.3.1", "0.3.2", "0.3.3", "0.3.4", "0.3.5", "0.3.6", "0.3.7", "0.3.8", "0.3.9", "0.4.0");
48
49 switch ($EXT_LOAD_MODE)
50 {
51 case "register": // Do stuff when installtion is running (modules.php?module=admin&action=login is called)
52         // SQL commands to run
53         $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_pool MODIFY data_type ENUM('TEMP','SEND','NEW','ADMIN','ACTIVE','DELETED') NOT NULL DEFAULT 'TEMP'";
54         if (EXT_IS_ACTIVE("bonus"))
55         {
56                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_bonus MODIFY data_type ENUM('NEW','QUEUE','SEND','DELETED') NOT NULL DEFAULT 'NEW'";
57         }
58         break;
59
60 case "remove": // Do stuff when removing extension
61         // SQL commands to run
62         $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_pool MODIFY data_type ENUM('TEMP','SEND','NEW','ADMIN','ACTIVE') NOT NULL DEFAULT 'TEMP'";
63         if (EXT_IS_ACTIVE("bonus"))
64         {
65                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_bonus MODIFY data_type ENUM('NEW','QUEUE','SEND') NOT NULL DEFAULT 'NEW'";
66         }
67         $SQLs[] = "DELETE LOW_PRIORITY FROM "._MYSQL_PREFIX."_admin_menu WHERE action='setup' AND what='config_autopurge' LIMIT 1";
68         $SQLs[] = "DELETE LOW_PRIORITY FROM "._MYSQL_PREFIX."_admin_menu WHERE action='user' AND what='list_autopurge' LIMIT 1";
69         $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_user_data DROP ap_notified";
70         break;
71
72 case "activate": // Do stuff when admin activates this extension
73         // SQL commands to run
74         $SQLs[] = "";
75         break;
76
77 case "deactivate": // Do stuff when admin deactivates this extension
78         // SQL commands to run
79         $SQLs[] = "";
80         break;
81
82 case "update": // Update an extension
83         switch ($EXT_VER)
84         {
85         case "0.1": // SQL queries for v0.1
86                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_config ADD autopurge_inactive ENUM('Y','N') NOT NULL DEFAULT 'Y'";
87                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_config ADD autopurge_unconfirmed ENUM('Y','N') NOT NULL DEFAULT 'Y'";
88                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_config ADD ap_inactive_since BIGINT(20) UNSIGNED NOT NULL DEFAULT '2592000'";
89                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_config ADD ap_inactive_time BIGINT(20) UNSIGNED NOT NULL DEFAULT '25200'";
90                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_config ADD ap_unconfirmed_time BIGINT(20) UNSIGNED NOT NULL DEFAULT '432000'";
91                 $SQLs[] = "INSERT INTO "._MYSQL_PREFIX."_admin_menu (action, what, title, descr, sort) VALUES ('setup','config_autopurge','Auto-L&ouml;schung','Automatisch inaktive oder nicht best&auml;tigte Accounts l&ouml;schen.','12')";
92                 $SQLs[] = "INSERT INTO "._MYSQL_PREFIX."_admin_menu (action, what, title, descr, sort) VALUES ('user','list_autopurge','Inaktive finden','Lassen Sie sich vor dem t&auml;glichen Reset anzeigen, welche Mitglieder als inaktiv erkannt werden und welche gel&ouml;scht werden.','10')";
93                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_user_data ADD ap_notified BIGINT(20) UNSIGNED NOT NULL DEFAULT '0'";
94
95                 // Update notes (these will be set as task text!)
96                 $UPDATE_NOTES = "Automatisches L&ouml:schen von inaktiven bzw. nicht best&auml;tigten Accounts hinzugef&uuml;gt.";
97                 break;
98
99         case "0.1.2": // SQL queries for v0.1.2
100                 // Update notes (these will be set as task text!)
101                 $UPDATE_NOTES = "Automatisches L&ouml;schen von als zu l&ouml;schen markierte Tasks hinzugef&uuml;gt.";
102                 break;
103
104         case "0.1.4": // SQL queries for v0.1.4
105                 // Update notes (these will be set as task text!)
106                 $UPDATE_NOTES = "Fehler <FONT class=\"admin_failed\">Warning: Missing argument 2 for create_timestamp_from_selections() in ".PATH."inc/libs/pro_functions.php on line 227</FONT> behoben.";
107                 break;
108
109         case "0.1.5": // SQL queries for v0.1.5
110                 // Update notes (these will be set as task text!)
111
112                 $UPDATE_NOTES = "Anstelle von <STRONG>ref_depth</STRONG> wurde <STRONG>level</STRONG> programmiert.";
113                 break;
114
115         case "0.1.6": // SQL queries for v0.1.6
116                 // Update notes (these will be set as task text!)
117                 $UPDATE_NOTES = "Fehler beseitigt, wenn error_reporting=E_ALL gesetzt ist.";
118                 break;
119
120         case "0.1.7": // SQL queries for v0.1.7
121                 // Update notes (these will be set as task text!)
122                 $UPDATE_NOTES = "Fehler beseitigt, wenn error_reporting=E_ALL gesetzt ist.";
123                 break;
124
125         case "0.1.8": // SQL queries for v0.1.8
126                 // Update notes (these will be set as task text!)
127                 $UPDATE_NOTES = "Problem mit Speicherung der Einstellungen beseitigt.";
128                 break;
129
130         case "0.1.9": // SQL queries for v0.1.9
131                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_config ADD autopurge_tasks ENUM('Y','N') NOT NULL DEFAULT 'Y'";
132                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_config ADD ap_tasks_time BIGINT(20) UNSIGNED NOT NULL DEFAULT '".(60*60*24*7)."'";
133
134                 // Update notes (these will be set as task text!)
135                 $UPDATE_NOTES = "Bereinigung von zu l&ouml;schenden Aufgaben klappt wieder. Zeitlimit f&uuml;r genanntes kann eingestellt werden (Default = 7 Tage).<br /><br /><U>Bitte aktualisieren Sie auch die Admin-Templates!</U>";
136                 break;
137
138         case "0.2.0": // SQL queries for v0.2.0
139                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_config ADD ap_in_notify ENUM('Y','N') NOT NULL DEFAULT 'Y'";
140                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_config ADD ap_un_notify ENUM('Y','N') NOT NULL DEFAULT 'Y'";
141                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_config ADD ap_tasks_notify ENUM('Y','N') NOT NULL DEFAULT 'Y'";
142
143                 // Update notes (these will be set as task text!)
144                 $UPDATE_NOTES = "Mail wird bei L&ouml;schung von Aufgaben ausgesendet.<br /><br /><U>Bitte aktualisieren Sie auch die Admin-Templates!</U>";
145                 break;
146
147         case "0.2.1": // SQL queries for v0.2.1
148                 // Update notes (these will be set as task text!)
149                 $UPDATE_NOTES = "Diverse angebundene Erweiterungen gefixt.";
150                 break;
151
152         case "0.2.2": // SQL queries for v0.2.2
153                 // Update notes (these will be set as task text!)
154                 $UPDATE_NOTES = "Betreffzeile f&uuml;r gel&ouml;schte Aufgaben korregiert.";
155                 break;
156
157         case "0.2.3": // SQL queries for v0.2.3
158                 // Update notes (these will be set as task text!)
159                 $UPDATE_NOTES = "Erweiterung bleibt wegen integrierten Schalters immer aktiv.";
160                 break;
161
162         case "0.2.4": // SQL queries for v0.2.4
163                 // Update notes (these will be set as task text!)
164                 $UPDATE_NOTES = "Auto-L&ouml;schung von Best&auml;tigungslinks kann unter &quot;Sonstige Einstellungen&quot; abgeschaltet werden (0 setzen!)";
165                 break;
166
167         case "0.2.5": // SQL queries for v0.2.5
168                 // Update notes (these will be set as task text!)
169                 $UPDATE_NOTES = "Seit <A href=\"#\">Patch 340</A> &uuml;berfl&uuml;ssige HTML-Tags entfernt.";
170                 break;
171
172         case "0.2.6": // SQL queries for v0.2.6
173                 // Update notes (these will be set as task text!)
174                 $UPDATE_NOTES = "Problem mit Jackpot beseitigt ({!POINTS!} wurden nicht gutgeschrieben.)";
175                 break;
176
177         case "0.2.7": // SQL queries for v0.2.7
178                 // Update notes (these will be set as task text!)
179                 $UPDATE_NOTES = "Link zum Mitgliedsprofil in Funktion <U>ADMIN_USER_PROFILE_LINK()</U> ausgelagert.";
180                 break;
181
182         case "0.2.8": // SQL queries for v0.2.8
183                 // Update notes (these will be set as task text!)
184                 $UPDATE_NOTES = "Link zum Mitgliedsprofil in Funktion <U>ADMIN_USER_PROFILE_LINK()</U> ausgelagert.";
185                 break;
186
187         case "0.2.9": // SQL queries for v0.2.9
188                 // Update notes (these will be set as task text!)
189                 $UPDATE_NOTES = "Mailbetreffs korregiert.";
190                 break;
191
192         case "0.3.0": // SQL queries for v0.3.0
193                 // Update notes (these will be set as task text!)
194                 $UPDATE_NOTES = "Template <u>admin_config_autopurge_pro.tpl</u> ist &uuml;berfl&uuml;ssig geworden. Bitte l&ouml;schen Sie dies!";
195                 break;
196
197         case "0.3.1": // SQL queries for v0.3.1
198                 // Update notes (these will be set as task text!)
199                 $UPDATE_NOTES = "Datumsformat festgelegt auf ausf&uuml;hrlich.";
200                 break;
201
202         case "0.3.2": // SQL queries for v0.3.2
203                 // Update notes (these will be set as task text!)
204                 $UPDATE_NOTES = "W&ouml;rter <STRONG>Mailtausch</STRONG>, <STRONG>Mailtausches</STRONG> und <STRONG>Mailtauscher</STRONG> sind austauschbar.";
205                 break;
206
207         case "0.3.3": // SQL queries for v0.3.3
208                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_config ADD ap_del_mails ENUM('Y','N') NOT NULL DEFAULT 'Y'";
209                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_config ADD ap_dm_notify ENUM('Y','N') NOT NULL DEFAULT 'Y'";
210                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_config ADD ap_dm_timeout BIGINT(20) UNSIGNED NOT NULL DEFAULT '86400'";
211
212                 // Update notes (these will be set as task text!)
213                 $UPDATE_NOTES = "Von bereits gel&ouml;schten Mitgliedern die Mails l&ouml;schen integriert.";
214                 break;
215
216         case "0.3.4": // SQL queries for v0.3.4
217                 // Update notes (these will be set as task text!)
218                 $UPDATE_NOTES = "Fehler mit <STRONG>timestamp_send</STRONG> (Zeile 308) beseitigt.";
219                 break;
220
221         case "0.3.5": // SQL queries for v0.3.5
222                 // Update notes (these will be set as task text!)
223                 $UPDATE_NOTES = "Fehler mit <STRONG>ap_del_emails</STRONG> (Einstellungen im Admin-Bereich) beseitigt.";
224                 break;
225
226         case "0.3.6": // SQL queries for v0.3.6
227                 // Update notes (these will be set as task text!)
228                 $UPDATE_NOTES = "Die Accounts der Standart-Referral-ID, der Bonus-ID, Bettellink-ID und der Verdoppler-ID werden nun nicht mehr gel&ouml;scht und tauchen auch unterhalb der Inaktiven-Liste nicht mehr auf.";
229                 break;
230
231         case "0.3.7": // SQL queries for v0.3.7
232                 // Update notes (these will be set as task text!)
233                 $UPDATE_NOTES = "Abspeichern von Einstellungen repariert.";
234                 break;
235
236         case "0.3.8": // SQL queries for v0.3.8
237                 // Update notes (these will be set as task text!)
238                 $UPDATE_NOTES = "Vorbereitung auf die neue Mediendaten v0.0.4.";
239                 break;
240
241         case "0.3.9": // SQL queries for v0.3.9
242                 // Update notes (these will be set as task text!)
243                 $UPDATE_NOTES = "if-Anweisungen auf Funktion <STRONG>empty()</STRONG> umgestellt. Unter <STRONG>Auto-L&ouml;schung</STRONG> finden Sie nun auch die Einstellungen zu Mailbest&auml;tigungs wieder. Zudem werden keine Urlauber (neue Urlaubsschaltung beachtet) mehr als inaktiv erkannt.";
244                 break;
245
246         case "0.4.0": // SQL queries for v0.4.0
247                 // Update notes (these will be set as task text!)
248                 $UPDATE_NOTES = "Template-Problem beseitigt. Dies verhinderte das Abspeichern der Einstellungen.";
249                 break;
250         }
251         break;
252
253 default: // Do stuff when extension is loaded
254         // Do we have a daily-reset-run?
255         if (isBooleanConstantAndTrue('__DAILY_RESET') && (!DEBUG_MODE) && ($CSS != 1))
256         {
257                 // Yes, we have. So let's auto-purge some campaigns, inactive users and unconfirmed accounts
258                 $INC_POOL[] = sprintf("%sinc/autopurge.php", PATH);
259         }
260         break;
261 }
262
263 // Language file prefix
264 $EXT_LANG_PREFIX = "autopurge";
265
266 // Extension is always active?
267 $EXT_ALWAYS_ACTIVE = "Y";
268
269 //
270 ?>