X-Git-Url: https://git.mxchange.org/?p=mailer.git;a=blobdiff_plain;f=inc%2Fmonthly%2Fmonthly_bonus.php;h=ca916cb6bc5cffa5d892d51261882d19732c1a93;hp=2b18fb308db7ce2fff6269027a4b52dd15becf39;hb=391c98ab7233ff3e640d8b9fad8df92ce45e9b31;hpb=7de68b88ef3f441444f393b980d94641061c2db6 diff --git a/inc/monthly/monthly_bonus.php b/inc/monthly/monthly_bonus.php index 2b18fb308d..ca916cb6bc 100644 --- a/inc/monthly/monthly_bonus.php +++ b/inc/monthly/monthly_bonus.php @@ -1,7 +1,7 @@ \n"; +// Debug line +//* DEBUG: */ logDebugMessage(__FILE__, __LINE__, 'Monthly reset started.'); -// Get current month (2 digits) -$curr = date("m", time()); - -if (($curr != $_CONFIG['last_month']) && ($_CONFIG['bonus_ranks'] > 0) && ($CSS != 1)) -{ - // Extension "autopurge" is inactive or purging of inactive accounts is deactivated - $whereStatement1 = "WHERE status='CONFIRMED'"; - $whereStatement2 = bigintval($_CONFIG['bonus_ranks']); +if ((getConfig('bonus_ranks') > 0) && (!isCssOutputMode())) { + // Extension 'autopurge' is inactive or purging of inactive accounts is deactivated + $whereStatement1 = "WHERE `status`='CONFIRMED'"; // Shall I keep inactive members away from here? (mostly wanted in an "active-rallye" ...) - if (EXT_IS_ACTIVE("autopurge")) - { + if (isExtensionActive('autopurge')) { // Use last online stamp only when autopurge for inactive members is activated - if ($_CONFIG['ap_inactive_since'] > 0) - { + if (getApInactiveSince() > 0) { // Okay, include last online timestamp - $whereStatement1 = sprintf("WHERE status='CONFIRMED' AND last_online >= (UNIX_TIMESTAMP() - %s)", $_CONFIG['ap_inactive_since']); - $whereStatement2 = bigintval($_CONFIG['bonus_ranks']); - } - } + $whereStatement1 = "WHERE `status`='CONFIRMED' AND `last_online` >= (UNIX_TIMESTAMP() - {?ap_inactive_since?})"; + } // END - if + } // END - if // Add more bonus points here - $ADD = ""; - if ($_CONFIG['bonus_click_yn'] == "Y") $ADD .= " + turbo_bonus"; - if ($_CONFIG['bonus_login_yn'] == "Y") $ADD .= " + login_bonus"; - if ($_CONFIG['bonus_order_yn'] == "Y") $ADD .= " + bonus_order"; - if ($_CONFIG['bonus_stats_yn'] == "Y") $ADD .= " + bonus_stats"; - if ($_CONFIG['bonus_ref_yn'] == "Y") $ADD .= " + bonus_ref"; - - if (!empty($ADD)) { - $ADD .= " AND (0".$ADD.") > 0"; + $add = ''; + // @TODO Rewrite this to a filter + if (getConfig('bonus_click_yn') == 'Y') $add .= ' + `turbo_bonus`'; + if (getConfig('bonus_login_yn') == 'Y') $add .= ' + `login_bonus`'; + if (getConfig('bonus_order_yn') == 'Y') $add .= ' + `bonus_order`'; + if (getConfig('bonus_stats_yn') == 'Y') $add .= ' + `bonus_stats`'; + if (getConfig('bonus_ref_yn') == 'Y') $add .= ' + `bonus_ref`'; + + // Shall we add some entries? + if (!empty($add)) { + $whereStatement1 .= ' AND (0' . $add . ') > 0'; } // END - if - // SQL string to check for accounts - $result_main = SQL_QUERY_ESC("SELECT userid, email, (turbo_bonus + login_bonus + bonus_order + bonus_stats + bonus_ref) AS active_bonus -FROM "._MYSQL_PREFIX."_user_data -".$whereStatement1."".$ADD." -ORDER BY active_bonus DESC, userid LIMIT %s", - array($whereStatement2), __FILE__, __LINE__); - - if (SQL_NUMROWS($result_main) > 0) - { + // Run SQL string to check for accounts + $result_main = SQL_QUERY('SELECT + `userid`, `email`, `gender`, `surname`, `family`, (0' . $add . ') AS `points` +FROM + `{?_MYSQL_PREFIX?}_user_data` +' . $whereStatement1 . ' +ORDER BY + `points` DESC, + `userid` ASC +LIMIT {?bonus_ranks?}', __FILE__, __LINE__); + + // Some entries were found? + if (!SQL_HASZERONUMS($result_main)) { // Load our winners... - $UIDs = ""; - while(list($uid, $email, $points) = SQL_FETCHROW($result_main)) - { - // Add userids in a row - $UIDs .= ",'".$uid."'"; - - // Add points to user's account directly - ADD_POINTS_REFSYSTEM($uid, $points, false, "0", false, "direct"); - - // Load email template and email it away - $msg = LOAD_EMAIL_TEMPLATE("member_bonus", $points, bigintval($uid)); - SEND_EMAIL($email, BONUS_MONTHLY_ONLINE_BONUS, $msg); - } - - // Remove first commata - $UIDs = substr($UIDs, 1); - - // Get current month - $curr = date("m", time()); - if (strlen($curr) == 1) $curr = "0".$curr; - if ($curr == "00") $curr = "12"; - - // Reset accounts - $result = SQL_QUERY("UPDATE "._MYSQL_PREFIX."_user_data -SET turbo_bonus=0, login_bonus=0, bonus_order=0, bonus_stats=0, bonus_ref=0", __FILE__, __LINE__); - } + while ($content = SQL_FETCHARRAY($result_main)) { + // Make sure zero points are not mailed + if ($content['points'] > 0) { + // Add points to user's account directly + addPointsDirectly('monthly_bonus', $content['userid'], $content['points']); + + // Load email template and email it away + $message = loadEmailTemplate('member_bonus', $content, bigintval($content['userid'])); + sendEmail($content['email'], '{--MEMBER_MONTHLY_BONUS_WON_SUBJECT--}', $message); + } // END - if + } // END - while + + // Reset all accounts + $result = SQL_QUERY('UPDATE `{?_MYSQL_PREFIX?}_user_data` +SET + `turbo_bonus`=0, + `login_bonus`=0, + `bonus_order`=0, + `bonus_stats`=0, + `bonus_ref`=0', __FILE__, __LINE__); + } // END - if // Free memory SQL_FREERESULT($result_main); -} +} // END - if + +// Debug line +//* DEBUG: */ logDebugMessage(__FILE__, __LINE__, 'Monthly reset ended.'); -// +// [EOF] ?>