X-Git-Url: https://git.mxchange.org/?p=mailer.git;a=blobdiff_plain;f=inc%2Fautopurge.php;h=fc56479628fcb886bf170b83f7e64502ca766fda;hp=2d280c4cbc25c7b769f1ec38ea8a514fbcb2ae22;hb=aa63aed07428a99ea09002c8d072990677700080;hpb=60494e212a67fe360bfbb481eb4928480a6f379b diff --git a/inc/autopurge.php b/inc/autopurge.php index 2d280c4cbc..fc56479628 100644 --- a/inc/autopurge.php +++ b/inc/autopurge.php @@ -10,7 +10,12 @@ * -------------------------------------------------------------------- * * Kurzbeschreibung : Auto-Loeschung von veralteten Mail-Links * * -------------------------------------------------------------------- * - * * + * $Revision:: $ * + * $Date:: $ * + * $Tag:: 0.2.1-FINAL $ * + * $Author:: $ * + * Needs to be in all Files and every File needs "svn propset * + * svn:keywords Date Revision" (autoprobset!) at least!!!!!! * * -------------------------------------------------------------------- * * Copyright (c) 2003 - 2008 by Roland Haeder * * For more information visit: http://www.mxchange.org * @@ -32,419 +37,20 @@ ************************************************************************/ // Some security stuff... -if (ereg(basename(__FILE__), $_SERVER['PHP_SELF'])) -{ - $INC = substr(dirname(__FILE__), 0, strpos(dirname(__FILE__), "/inc") + 4) . "/security.php"; +if (!defined('__SECURITY')) { + $INC = substr(dirname(__FILE__), 0, strpos(dirname(__FILE__), '/inc') + 4) . '/security.php'; require($INC); -} - -if (($_CONFIG['auto_purge_active'] == 'Y') && ($_CONFIG['auto_purge'] > 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=%d 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=%d", - array(bigintval($mid)), __FILE__, __LINE__); - - // Update status of order - $result_update = SQL_QUERY_ESC("UPDATE "._MYSQL_PREFIX."_pool SET data_type='DELETED' WHERE id=%d 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=%d", - 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=%d", - array(bigintval($bid)), __FILE__, __LINE__); - - // Update status of order - $result_update = SQL_QUERY_ESC("UPDATE "._MYSQL_PREFIX."_bonus SET data_type='DELETED' WHERE id=%d 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 - if (GET_EXT_VERSION("admins") >= "0.4.1") - { - SEND_ADMIN_EMAILS_PRO(AUTOPURGE_ADMIN_SUBJECT, "admin_autopurge_points", TRANSLATE_COMMA($points), "0"); - } - else - { - $msg = LOAD_EMAIL_TEMPLATE("admin_autopurge_points", TRANSLATE_COMMA($points), "0"); - SEND_ADMIN_EMAILS(AUTOPURGE_ADMIN_SUBJECT, $msg); - } - } -} - -// 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=%d LIMIT 1", - array(bigintval($uid)), __FILE__, __LINE__); - } - - // Remove last comma - $UIDs = str_replace(", ", "\n", substr($UIDs, 0, -2)); +} // END - if - // Send mail notification to admin - if (GET_EXT_VERSION("admins") >= "0.4.1") - { - SEND_ADMIN_EMAILS_PRO(AUTOPURGE_ADMIN_INACTIVE_SUBJECT, "admin_autopurge_inactive", $UIDs, ""); - } - else - { - $msg = LOAD_EMAIL_TEMPLATE("admin_autopurge_inactive", $UIDs, ""); - SEND_ADMIN_EMAILS(AUTOPURGE_ADMIN_INACTIVE_SUBJECT, $msg); - } - } +// Init & set the include pool +INIT_INC_POOL(); +SET_INC_POOL(GET_DIR_AS_ARRAY('inc/autopurge/', 'purge-')); - // Free memory - SQL_FREERESULT($result_inactive); +// Run the filter +runFilterChain('load_includes'); - // 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 = ""; +// Run filters for extra autopurge +runFilterChain('extra_autopurge'); - // 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') - { - if (GET_EXT_VERSION("admins") >= "0.4.1") - { - SEND_ADMIN_EMAILS_PRO(AUTOPURGE_ADMIN_DELETE_SUBJECT, "admin_autopurge_delete", $UIDs, ""); - } - else - { - $msg = LOAD_EMAIL_TEMPLATE("admin_autopurge_delete", $UIDs, ""); - SEND_ADMIN_EMAILS(AUTOPURGE_ADMIN_DELETE_SUBJECT, $msg); - } - } - } - - // 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') - { - if (GET_EXT_VERSION("admins") >= "0.4.1") - { - SEND_ADMIN_EMAILS_PRO(AUTOPURGE_ADMIN_UNCONFIRMED_SUBJECT, "admin_autopurge_unconfirmed", $UIDs, ""); - } - else - { - $msg = LOAD_EMAIL_TEMPLATE("admin_autopurge_unconfirmed", $UIDs, ""); - SEND_ADMIN_EMAILS(AUTOPURGE_ADMIN_UNCONFIRMED_SUBJECT, $msg); - } - } - } - - // 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 - if (GET_EXT_VERSION("admins") >= "0.4.1") - { - SEND_ADMIN_EMAILS_PRO(AUTOPURGE_ADMIN_TASKS_SUBJECT, "admin_autopurge_tsks", $DELETED, ""); - } - else - { - $msg = LOAD_EMAIL_TEMPLATE("admin_autopurge_tsks", $DELETED, ""); - SEND_ADMIN_EMAILS(AUTOPURGE_ADMIN_TASKS_SUBJECT, $msg); - } - } -} - -// 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=%d 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=%d", - 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=%d 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=%d", 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 - if (GET_EXT_VERSION("admins") >= "0.4.1") - { - SEND_ADMIN_EMAILS_PRO(AUTOPURGE_ADMIN_DEL_MAILS_SUBJECT, "admin_autopurge_del_mails", $DELETED, ""); - } - else - { - $msg = LOAD_EMAIL_TEMPLATE("admin_autopurge_del_mails", $DELETED, ""); - SEND_ADMIN_EMAILS(AUTOPURGE_ADMIN_DEL_MAILS_SUBJECT, $msg); - } - } -} - -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(); -} // ?>