X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=inc%2Fmonthly%2Fmonthly_bonus.php;h=2bbe3d92017db5fa7d33de7f7904cc447c5629df;hb=c89bf2a2baabaf9d0597399bcd340750149019d6;hp=e425c8f1ac13216546df38cbb03bcb52fee7c6e9;hpb=52e8a0635bd0b7c653845685c55e4e5f251375fe;p=mailer.git diff --git a/inc/monthly/monthly_bonus.php b/inc/monthly/monthly_bonus.php index e425c8f1ac..2bbe3d9201 100644 --- a/inc/monthly/monthly_bonus.php +++ b/inc/monthly/monthly_bonus.php @@ -10,9 +10,14 @@ * -------------------------------------------------------------------- * * Kurzbeschreibung : Monatlicher Bonus von Klick-Verguetung * * -------------------------------------------------------------------- * - * * + * $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 * + * Copyright (c) 2003 - 2009 by Roland Haeder * * For more information visit: http://www.mxchange.org * * * * This program is free software; you can redistribute it and/or modify * @@ -32,107 +37,91 @@ ************************************************************************/ // Some security stuff... -if (ereg(basename(__FILE__), $_SERVER['PHP_SELF'])) -{ - $INC = substr(dirname(__FILE__), 0, strpos(dirname(__FILE__), "/inc") + 4) . "/security.php"; - require($INC); -} - elseif ((!EXT_IS_ACTIVE("bonus")) && (!IS_ADMIN())) -{ - ADD_FATAL(EXTENSION_PROBLEM_EXT_INACTIVE, "bonus"); +if (!defined('__SECURITY')) { + die(); +} elseif (!isExtensionActive('bonus')) { return; } // Do not execute when script is in CSS mode or no daily reset -if (($CSS == 1) || (!defined('__DAILY_RESET'))) return; +if ((getOutputMode() == 1) || (!isResetModeEnabled())) return; +//* DEBUG: */ outputHtml(basename(__FILE__)."
"); // Get current month (2 digits) -$curr = date("m", time()); +$curr = date('m', time()); -if (($curr != $_CONFIG['bonus_month']) && ($_CONFIG['bonus_ranks'] > 0) && ($CSS != 1)) -{ - // Extension "autopurge" is inactive or purging of inactive accounts is deactivated - $whereStatement1 = "WHERE status='CONFIRMED'"; - $whereStatement2 = 0; - $whereStatement3 = bigintval($_CONFIG['bonus_ranks']); +if (($curr != getConfig('last_month')) && (getConfig('bonus_ranks') > 0) && (getOutputMode() != 1)) { + // Extension 'autopurge' is inactive or purging of inactive accounts is deactivated + $whereStatement1 = "WHERE `status`='CONFIRMED'"; + $whereStatement2 = getConfig('bonus_ranks'); // 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_in_since'] > 0) - { + if (getConfig('ap_inactive_since') > 0) { // Okay, include last online timestamp - $whereStatement1 = "WHERE status='CONFIRMED' AND last_online >="; - $whereStatement2 = bigintval(time() - $_CONFIG['ap_in_since']); - $whereStatement3 = bigintval($_CONFIG['bonus_ranks']); - } - } + $whereStatement1 = "WHERE `status`='CONFIRMED' AND `last_online` >= (UNIX_TIMESTAMP() - {?ap_inactive_since?})"; + $whereStatement2 = getConfig('bonus_ranks'); + } // END - if + } // END - if // Add more bonus points here - $ADD = " AND (0"; - 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"; - $ADD .= ") > 0"; - - // 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." %s".$ADD." -ORDER BY active_bonus DESC, userid LIMIT %s", - array($whereStatement2, $whereStatement3), __FILE__, __LINE__); - - if (SQL_NUMROWS($result_main) > 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 + + // Run SQL string to check for accounts + $result_main = SQL_QUERY_ESC("SELECT `userid`, `email`, `gender`, `surname`, `family`, (0".$add.") AS points +FROM + `{?_MYSQL_PREFIX?}_user_data` +".$whereStatement1."".$add." +ORDER BY + `points` DESC, + `userid` ASC +LIMIT %s", + array($whereStatement2), __FILE__, __LINE__); + + // Some entries were found? + if (SQL_NUMROWS($result_main) > 0) { // 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 - $result_data = SQL_QUERY_ESC("UPDATE "._MYSQL_PREFIX."_user_points -SET points=points+%s WHERE ref_depth=0 AND userid=%d LIMIT 1", - array($points, bigintval($uid)), __FILE__, __LINE__); - - // Update mediadata as well - if (GET_EXT_VERSION("mediadata") >= "0.0.4") - { - // Update database - MEDIA_UPDATE_ENTRY(array("total_points"), "add", $points); - } - - // 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"; + 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']); + + // Translate gender/points + $content['gender'] = translateGender($content['gender']); + $content['points'] = translateComma($content['points']); + + // Load email template and email it away + $message = loadEmailTemplate('member_bonus', $content['points'], bigintval($content['userid'])); + sendEmail($content['email'], getMessage('BONUS_MONTHLY_ONLINE_BONUS'), $message); + } // END - if + } // END - while // 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__); - - } + $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 - // Finally update database and config array - $_CONFIG['bonus_month'] = $curr; - $result_update = SQL_QUERY_ESC("UPDATE "._MYSQL_PREFIX."_config SET last_bonus_month='%s' WHERE config=0 LIMIT 1", - array($curr), __FILE__, __LINE__); - - // Destroy cache -} // ?>