0)) { // First calculate the timestamp if (function_exists('CREATE_TIME_SELECTIONS')) { $PURGE = time() - $_CONFIG['auto_purge']; } else { $PURGE = time() - $_CONFIG['auto_purge'] * 24 * 60 * 60; } // Init variables $admin_points = "0"; // Then check for outdated mail order. We don't delete them just the confirmation links will be deleted. $result = SQL_QUERY_ESC("SELECT s.id, s.userid, s.pool_id, t.price FROM "._MYSQL_PREFIX."_user_stats AS s LEFT JOIN "._MYSQL_PREFIX."_payments AS t ON s.payment_id=t.id WHERE s.timestamp_ordered <= %s ORDER BY s.userid", array(bigintval($PURGE)), __FILE__, __LINE__); if (SQL_NUMROWS($result) > 0) { // Start deleting procedure $uid = "0"; $points = "0"; while(list($mid, $sender, $pool, $price) = SQL_FETCHROW($result)) { // Check if confirmation links are purged or not $result_links = SQL_QUERY_ESC("SELECT id FROM "._MYSQL_PREFIX."_user_links WHERE stats_id=%s LIMIT 1", array(bigintval($mid)), __FILE__, __LINE__); if (SQL_NUMROWS($result_links) == 1) { // Free memory SQL_FREERESULT($result_links); // At least one link was found, enougth to pay back the points if (($uid != $sender) && ($uid > 0) && ($points > 0)) { // Directly add points back to senders account AUTOPURGE_ADD_POINTS($uid, $points); $points = "0"; } // Add points $uid = $sender; $points += $price; $admin_points += $price; // Remove confirmation links from queue $result_del = SQL_QUERY_ESC("DELETE LOW_PRIORITY FROM "._MYSQL_PREFIX."_user_links WHERE stats_id=%s", array(bigintval($mid)), __FILE__, __LINE__); // Update status of order $result_update = SQL_QUERY_ESC("UPDATE "._MYSQL_PREFIX."_pool SET data_type='DELETED' WHERE id=%s LIMIT 1", array(bigintval($pool)), __FILE__, __LINE__); } } // Add last points to last user account if ($points > 0) AUTOPURGE_ADD_POINTS($uid, $points); } // Free memory SQL_FREERESULT($result); // Is the 'bonus' extension installed and activated? if (EXT_IS_ACTIVE("bonus", true)) { // Check for bonus campaigns $result = SQL_QUERY_ESC("SELECT id, points FROM "._MYSQL_PREFIX."_bonus WHERE data_type='SEND' AND timestamp <= %s ORDER BY id", array(bigintval($PURGE)), __FILE__, __LINE__); if (SQL_NUMROWS($result) > 0) { // Start deleting procedure $points = "0"; while (list($bid, $price) = SQL_FETCHROW($result)) { // Check if confirmation links are purged or not $result_links = SQL_QUERY_ESC("SELECT id FROM "._MYSQL_PREFIX."_user_links WHERE bonus_id=%s", array(bigintval($bid)), __FILE__, __LINE__); if (SQL_NUMROWS($result_links) > 0) { // At least one link was found, enougth to pay back the points $points += $price * SQL_NUMROWS($result_links); // Free memory SQL_FREERESULT($result_links); // Remove confirmation links from queue $result_del = SQL_QUERY_ESC("DELETE LOW_PRIORITY FROM "._MYSQL_PREFIX."_user_links WHERE bonus_id=%s", array(bigintval($bid)), __FILE__, __LINE__); // Update status of order $result_update = SQL_QUERY_ESC("UPDATE "._MYSQL_PREFIX."_bonus SET data_type='DELETED' WHERE id=%s LIMIT 1", array(bigintval($bid)), __FILE__, __LINE__); } } // Add points to jackpot ADD_JACKPOT($points); // Add points for the admin $admin_points += $points; } // Free memory SQL_FREERESULT($result); } // Add points from deleted accounts to jackpot, but here just add to notify mail if ($admin_points > 0) { // Send mail to admin SEND_ADMIN_NOTIFICATION(AUTOPURGE_ADMIN_SUBJECT, "admin_autopurge_points", TRANSLATE_COMMA($points), "0"); } } // Shall I look for inactive accounts and autopurge inactive accounts? if ($_CONFIG['ap_inactive'] == "Y") { // Ok, let's have a look... $since = bigintval(time() - $_CONFIG['ap_in_since']); $EXCLUDE_LIST = " AND d.userid != c.def_refid"; // Check for more extensions if (EXT_IS_ACTIVE("beg")) $EXCLUDE_LIST .= " AND d.userid != c.beg_uid"; if (EXT_IS_ACTIVE("bonus")) $EXCLUDE_LIST .= " AND d.userid != c.bonus_uid"; if (EXT_IS_ACTIVE("doubler")) $EXCLUDE_LIST .= " AND d.userid != c.doubler_uid"; // Check for new holiday extension if (GET_EXT_VERSION("holiday") >= "0.1.3") { $EXCLUDE_LIST .= " AND d.holiday_active = 'N'"; } // Check for all accounts $result_inactive = SQL_QUERY_ESC("SELECT DISTINCT d.userid, d.email, d.last_online FROM "._MYSQL_PREFIX."_user_data AS d, "._MYSQL_PREFIX."_config AS c WHERE d.status='CONFIRMED' AND d.joined < %s AND d.last_online < %s AND d.ap_notified < %s ".$EXCLUDE_LIST." ORDER BY d.userid", array($since, $since, $since), __FILE__, __LINE__); if (SQL_NUMROWS($result_inactive) > 0) { // Prepare variables and constants... $UIDs = ""; define('__INACTIVE_SINCE', ($_CONFIG['ap_in_since'] / 60 / 60)); define('__INACTIVE_TIME' , ($_CONFIG['ap_in_time'] / 60 / 60)); // Mark found accounts as inactive and send an email while(list($uid, $email, $last) = SQL_FETCHROW($result_inactive)) { // Remember userids for the admin $UIDs .= $uid.", "; // Get date/time from timestamp $last = MAKE_DATETIME($last, "0"); // Load mail template $msg = LOAD_EMAIL_TEMPLATE("member_autopurge_inactive", $last, bigintval($uid)); SEND_EMAIL($email, AUTOPURGE_MEMBER_INACTIVE_SUBJECT, $msg); // Update this account $result_update = SQL_QUERY_ESC("UPDATE "._MYSQL_PREFIX."_user_data SET ap_notified=UNIX_TIMESTAMP() WHERE userid=%s LIMIT 1", array(bigintval($uid)), __FILE__, __LINE__); } // Remove last comma $UIDs = str_replace(", ", "\n", substr($UIDs, 0, -2)); // Send mail notification to admin SEND_ADMIN_NOTIFICATION(AUTOPURGE_ADMIN_INACTIVE_SUBJECT, "admin_autopurge_inactive", $UIDs, ""); } // Free memory SQL_FREERESULT($result_inactive); // Now let's have a look for inactive accounts we want to delete we newly use the same exclude list // here for e.g. excluding holiday users $time = bigintval(time() - $_CONFIG['ap_in_time']); $result_inactive = SQL_QUERY_ESC("SELECT d.userid, d.email, d.last_online FROM "._MYSQL_PREFIX."_user_data AS d, "._MYSQL_PREFIX."_config AS c WHERE status='CONFIRMED' AND joined < %s AND last_online< %s AND ap_notified < %s ".$EXCLUDE_LIST." ORDER BY userid", array($since, $since, $time), __FILE__, __LINE__); if (SQL_NUMROWS($result_inactive) > 0) { // Prepare variable... $UIDs = ""; // Delete inactive accounts while (list($uid, $email, $last) = SQL_FETCHROW($result_inactive)) { // Remember userids for the admin $UIDs .= $uid.", "; // Get date/time from timestamp $last = MAKE_DATETIME($last, "0"); // Finnaly delete this inactive account DELETE_USER_ACCOUNT(bigintval($uid), LOAD_EMAIL_TEMPLATE("member_autopurge_delete", $last, "")); } // Remove last comma $UIDs = str_replace(", ", "\n", substr($UIDs, 0, -2)); // Send mail notification to admin if ($_CONFIG['ap_un_mail'] == "Y") { SEND_ADMIN_NOTIFICATION(AUTOPURGE_ADMIN_DELETE_SUBJECT, "admin_autopurge_delete", $UIDs, ""); } } // Free memory SQL_FREERESULT($result_inactive); } // Shall I auto-purge unconfirmed accounts? if ($_CONFIG['ap_unconfirmed'] == "Y") { // Init variables and find unconfirmed accounts which I shall auto-purge $time = bigintval(time() - $_CONFIG['ap_un_time']); $result_uncon = SQL_QUERY_ESC("SELECT userid, email, joined FROM "._MYSQL_PREFIX."_user_data WHERE status='UNCONFIRMED' AND joined < %s ORDER BY userid", array($time), __FILE__, __LINE__); if (SQL_NUMROWS($result_uncon) > 0) { // Prepare variable... $UIDs = ""; define('__UNCONFIRMED_TIME' , ($_CONFIG['ap_un_time'] / 60 / 60)); // Delete inactive accounts while (list($uid, $email, $joined) = SQL_FETCHROW($result_uncon)) { // Remember userids for the admin $UIDs .= $uid.", "; // Get date/time from timestamp $joined = MAKE_DATETIME($joined, "0"); // Finnaly delete this inactive account DELETE_USER_ACCOUNT($uid, LOAD_EMAIL_TEMPLATE("member_autopurge_unconfirmed", $joined, "")); } // Remove last comma $UIDs = str_replace(", ", "\n", substr($UIDs, 0, -2)); // Send mail notification to admin if ($_CONFIG['ap_un_mail'] == "Y") { SEND_ADMIN_NOTIFICATION(AUTOPURGE_ADMIN_UNCONFIRMED_SUBJECT, "admin_autopurge_unconfirmed", $UIDs, ""); } } // Free memory SQL_FREERESULT($result_uncon); } // Check version (must be > 0.0) if ((GET_EXT_VERSION("task") > "0.0") && ($_CONFIG['ap_tasks'] == "Y")) { // Purge deleted tasks (no notification to admin) $since = bigintval(time() - $_CONFIG['ap_tasks_time']); $result = SQL_QUERY_ESC("DELETE LOW_PRIORITY FROM "._MYSQL_PREFIX."_task_system WHERE status='DELETED' AND task_created <= %s", array($since), __FILE__, __LINE__); $DELETED = SQL_AFFECTEDROWS(); if (($DELETED > 0) && ($_CONFIG['ap_tasks_mail'] == "Y")) { // Send out email to admin SEND_ADMIN_NOTIFICATION(AUTOPURGE_ADMIN_TASKS_SUBJECT, "admin_autopurge_tsks", $DELETED, ""); } } // Search for mails from deleted members? if ($_CONFIG['ap_del_mails']) { // Okay, let's check for them... $since = bigintval(time() - $_CONFIG['ap_dm_timeout']); $result_mails = SQL_QUERY_ESC("SELECT sender FROM "._MYSQL_PREFIX."_pool WHERE data_type='DELETED' AND timestamp <= %s ORDER BY sender", array($since), __FILE__, __LINE__); // Reset counter... $DELETED = 0; // Do we have "purged" mails? if (SQL_NUMROWS($result_mails) > 0) { // Okay, check for their sender's while(list($sender) = SQL_FETCHROW($result_mails)) { // Check now... $fount = SQL_NUMROWS(SQL_QUERY_ESC("SELECT userid FROM "._MYSQL_PREFIX."_user_data WHERE userid=%s LIMIT 1", array(bigintval($sender)), __FILE__, __LINE__)); if ($found == 0) { // Okay we found some mails! $result_remove = SQL_QUERY_ESC("DELETE LOW_PRIORITY FROM "._MYSQL_PREFIX."_pool WHERE sender=%s", array(bigintval($sender)), __FILE__, __LINE__); $DELETED += SQL_AFFECTEDROWS(); // Reset query (to prevent possible errors) ... $since = bigintval(time() - $_CONFIG['ap_dm_timeout']); $result_mails = SQL_QUERY_ESC("SELECT sender FROM "._MYSQL_PREFIX."_pool WHERE data_type='DELETED' AND timestamp <= %s ORDER BY sender", array($since), __FILE__, __LINE__); } } } // Free memory SQL_FREERESULT($result_mails); // Now let's check for stats entries as well $since = bigintval(time() - $_CONFIG['ap_dm_timeout']); $result_mails = SQL_QUERY_ESC("SELECT sender FROM "._MYSQL_PREFIX."_pool WHERE data_type='DELETED' AND timestamp <= %s ORDER BY sender", array($since), __FILE__, __LINE__); // Do we have "purged" mails? if (SQL_NUMROWS($result_mails) > 0) { // Okay, check for their sender's while(list($sender) = SQL_FETCHROW($result_mails)) { // Check now... $found = SQL_NUMROWS(SQL_QUERY_ESC("SELECT userid FROM "._MYSQL_PREFIX."_user_data WHERE userid=%s LIMIT 1", array(bigintval($sender)), __FILE__, __LINE__)); if ($found == 0) { // Okay we found some mails! $result_remove = SQL_QUERY_ESC("DELETE LOW_PRIORITY FROM "._MYSQL_PREFIX."_user_stats WHERE sender=%s", array(bigintval($sender)), __FILE__, __LINE__); $DELETED += SQL_AFFECTEDROWS(); // Reset query (to prevent possible errors) ... $since = bigintval(time() - $_CONFIG['ap_dm_timeout']); $result_mails = SQL_QUERY_ESC("SELECT sender FROM "._MYSQL_PREFIX."_user_stats WHERE data_type='DELETED' AND timestamp_send <= %s ORDER BY sender", array($since), __FILE__, __LINE__); } } } // Free memory SQL_FREERESULT($result_mails); // Do we have deleted mails and the admin want's to receive a notification if (($DELETED > 0) && ($_CONFIG['ap_dm_notify'] == "Y")) { // Send out email to admin SEND_ADMIN_NOTIFICATION(AUTOPURGE_ADMIN_DEL_MAILS_SUBJECT, "admin_autopurge_del_mails", $DELETED, ""); } } if (EXT_IS_ACTIVE("rallye")) { // Check expired rallyes (hard-coded 3 days limit for displaying expired rallyes!) require_once(PATH."inc/libs/rallye_functions.php"); RALLYE_DELETE_EXPIRED_RALLYES(); } // if (EXT_IS_ACTIVE("bonus")) { // Check for expired turbo bonus lines require_once(PATH."inc/libs/bonus_functions.php"); BONUS_PURGE_EXPIRED_TURBO_BONUS(); } // ?>