2 /************************************************************************
3 * MXChange v0.2.1 Start: 09/14/2008 *
4 * =============== Last change: 09/14/2008 *
6 * -------------------------------------------------------------------- *
7 * File : purge-general.php *
8 * -------------------------------------------------------------------- *
9 * Short description : General autopurging, nothing extension-specific *
10 * -------------------------------------------------------------------- *
11 * Kurzbeschreibung : Allgemeine, nicht erweiterunsabhaengige Auto- *
13 * -------------------------------------------------------------------- *
16 * $Tag:: 0.2.1-FINAL $ *
18 * Needs to be in all Files and every File needs "svn propset *
19 * svn:keywords Date Revision" (autoprobset!) at least!!!!!! *
20 * -------------------------------------------------------------------- *
21 * Copyright (c) 2003 - 2009 by Roland Haeder *
22 * For more information visit: http://www.mxchange.org *
24 * This program is free software; you can redistribute it and/or modify *
25 * it under the terms of the GNU General Public License as published by *
26 * the Free Software Foundation; either version 2 of the License, or *
27 * (at your option) any later version. *
29 * This program is distributed in the hope that it will be useful, *
30 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
31 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
32 * GNU General Public License for more details. *
34 * You should have received a copy of the GNU General Public License *
35 * along with this program; if not, write to the Free Software *
36 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, *
38 ************************************************************************/
40 // Some security stuff...
41 if (!defined('__SECURITY')) {
45 // Abort if autopurge is not active or disabled by admin
46 if ((!isExtensionActive('autopurge')) || (getConfig('auto_purge_active') != 'Y')) {
51 if ((getConfig('auto_purge_active') == 'Y') && (getConfig('auto_purge') > 0)) {
55 // First calculate the timestamp
56 $PURGE = getConfig('auto_purge');
61 // Then check for outdated mail order. We don't delete them just the confirmation links will be deleted.
62 $result = SQL_QUERY_ESC("SELECT
63 s.id, s.userid, s.pool_id, t.price
65 `{?_MYSQL_PREFIX?}_user_stats` AS s
67 `{?_MYSQL_PREFIX?}_payments` AS t
71 s.timestamp_ordered <= (UNIX_TIMESTAMP() - %s)
74 array(bigintval($PURGE)), __FILE__, __LINE__);
75 if (SQL_NUMROWS($result) > 0) {
76 // Start deleting procedure
77 $userid = 0; $points = 0;
78 while ($content = SQL_FETCHARRAY($result)) {
79 // Check if confirmation links are purged or not
80 $result_links = SQL_QUERY_ESC("SELECT `id` FROM `{?_MYSQL_PREFIX?}_user_links` WHERE `stats_id`=%s LIMIT 1",
81 array(bigintval($content['id'])), __FILE__, __LINE__);
82 if (SQL_NUMROWS($result_links) == 1) {
84 SQL_FREERESULT($result_links);
86 // At least one link was found, enougth to pay back the points
87 if (($userid != $content['userid']) && ($userid > 0) && ($points > 0)) {
88 // Directly add points back to senders account
89 addPointsAutoPurge($userid, $points);
94 $userid = $content['userid']; $points += $content['price']; $admin_points += $content['price'];
96 // Remove confirmation links from queue
97 addSql(SQL_QUERY_ESC("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_user_links` WHERE `stats_id`=%s",
98 array(bigintval($content['id'])), __FILE__, __LINE__, false));
100 // Update status of order
101 addSql(SQL_QUERY_ESC("UPDATE `{?_MYSQL_PREFIX?}_pool` SET `data_type`='DELETED' WHERE `id`=%s LIMIT 1",
102 array(bigintval($content['pool_id'])), __FILE__, __LINE__, false));
106 // Add last points to last user account
107 if ($points > 0) addPointsAutoPurge($userid, $points);
111 SQL_FREERESULT($result);
113 // Is the 'bonus' extension installed and activated?
114 if (isExtensionActive('bonus', true)) {
115 // Check for bonus campaigns
116 $result = SQL_QUERY_ESC("SELECT `id`, `points` FROM `{?_MYSQL_PREFIX?}_bonus` WHERE `data_type`='SEND' AND timestamp <= %s ORDER BY `id`",
117 array(bigintval($PURGE)), __FILE__, __LINE__);
118 if (SQL_NUMROWS($result) > 0) {
119 // Start deleting procedure
121 while ($content = SQL_FETCHARRAY($result)) {
122 // Check if confirmation links are purged or not
123 $result_links = SQL_QUERY_ESC("SELECT `id` FROM `{?_MYSQL_PREFIX?}_user_links` WHERE `bonus_id`=%s",
124 array(bigintval($content['id'])), __FILE__, __LINE__);
125 if (SQL_NUMROWS($result_links) > 0) {
126 // At least one link was found, enougth to pay back the points
127 $points += $content['points'] * SQL_NUMROWS($result_links);
130 SQL_FREERESULT($result_links);
132 // Remove confirmation links from queue
133 addSql(SQL_QUERY_ESC("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_user_links` WHERE `bonus_id`=%s",
134 array(bigintval($content['id'])), __FILE__, __LINE__, false));
136 // Update status of order
137 addSql(SQL_QUERY_ESC("UPDATE `{?_MYSQL_PREFIX?}_bonus` SET `data_type`='DELETED' WHERE `id`=%s LIMIT 1",
138 array(bigintval($content['id'])), __FILE__, __LINE__, false));
142 // Add points to jackpot
143 if (isExtensionActive('jackpot')) addPointsToJackpot($points);
145 // Add points for the admin
146 $admin_points += $points;
150 SQL_FREERESULT($result);
153 // Add points from deleted accounts to jackpot, but here just add to notify mail
154 if ($admin_points > 0) {
155 // Send mail to admin
156 sendAdminNotification(getMessage('AUTOPURGE_ADMIN_SUBJECT'), "admin_autopurge_points", translateComma($points), 0);
160 runFilterChain('run_sqls');