0) { // Exclude all $excludeSql = ' AND `userid` NOT IN (' . implode(', ', $excludedUserids) . ')'; } // END - if // Check for new holiday extension if (isExtensionInstalledAndNewer('holiday', '0.1.3')) { // Include only users with no active holiday $excludeSql .= " AND `holiday_active`='N'"; } // END - if // Check for all accounts $result_inactive = SQL_QUERY("SELECT `userid`, `email`, `last_online` FROM `{?_MYSQL_PREFIX?}_user_data` WHERE `status`='CONFIRMED' AND (UNIX_TIMESTAMP() - `joined`) >= {?ap_inactive_since?} AND (UNIX_TIMESTAMP() - `last_online`) >= {?ap_inactive_since?} AND (UNIX_TIMESTAMP() - `ap_notified`) >= {?ap_inactive_since?} AND " . runFilterChain('user_exclusion_sql', $excludeSql) . " ORDER BY `userid` ASC", __FILE__, __LINE__); if (!SQL_HASZERONUMS($result_inactive)) { // Prepare variables and constants... $userids = array(); $content['since'] = (getApInactiveSince() / 60 / 60); $content['time'] = (getApInactiveTime() / 60 / 60); // Mark found accounts as inactive and send an email while ($row = SQL_FETCHARRAY($result_inactive)) { // Merge both arrays $content = merge_array($content, $row); // Remember userids for the admin array_push($userids, $content['userid']); // Get date/time from timestamp $content['last_online'] = generateDateTime($content['last_online'], 0); // Load mail template $message = loadEmailTemplate('member_autopurge_inactive', $content, bigintval($content['userid'])); sendEmail($content['userid'], '{--MEMBER_AUTOPURGE_INACTIVE_SUBJECT--}', $message); // Update this account addSql(SQL_QUERY_ESC("UPDATE `{?_MYSQL_PREFIX?}_user_data` SET `ap_notified`=UNIX_TIMESTAMP() WHERE `userid`=%s LIMIT 1", array(bigintval($content['userid'])), __FILE__, __LINE__, FALSE)); } // END - while // Remove last comma $content['userids'] = implode(PHP_EOL, $userids); // Send mail notification to admin sendAdminNotification('{--ADMIN_AUTOPURGE_INACTIVE_SUBJECT--}', 'admin_purge_inactive', $content); } // END - if // Free memory SQL_FREERESULT($result_inactive); /* * Now let's have a look for inactive accounts for deletion. Use the newly * added exclude list here for e.g. excluding holiday users, test users et * cetera. */ $result_inactive = SQL_QUERY("SELECT `userid`, `email`, `last_online` FROM `{?_MYSQL_PREFIX?}_user_data` WHERE `status`='CONFIRMED' " . runFilterChain('user_exclusion_sql', $excludeSql) . " AND (UNIX_TIMESTAMP() - `joined`) >= {?ap_inactive_since?} AND (UNIX_TIMESTAMP() - `last_online`) >= {?ap_inactive_since?} AND (UNIX_TIMESTAMP() - `ap_notified`) >= {?ap_inactive_time?} AND `ap_notified` > 0 ORDER BY `userid` ASC", __FILE__, __LINE__); if (!SQL_HASZERONUMS($result_inactive)) { // Prepare userid array for admin... $userids = array(); // Delete inactive accounts while ($content = SQL_FETCHARRAY($result_inactive)) { // Remember userids for the admin array_push($userids, $content['userid']); // Get date/time from timestamp $content['last_online'] = generateDateTime($content['last_online'], 0); // Finnaly delete this inactive account deleteUserAccount($content['userid'], loadEmailTemplate('member_autopurge_delete', $content['last_online'], '')); } // END - while // Display all userids $useridsContent = implode(PHP_EOL, $userids); // Send mail notification to admin if (getConfig('ap_in_notify') == 'Y') { sendAdminNotification('{--ADMIN_AUTOPURGE_DELETE_SUBJECT--}', 'admin_purge_delete', $useridsContent); } // END - if } // END - if // Free memory SQL_FREERESULT($result_inactive); // Run all SQLs runFilterChain('run_sqls'); } // END - if // [EOF] ?>