initReferalSystem();
// "Walk" through all refids
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',ref=' . $ref . ',level=' . $content['level'] . ',percents=' . $content['percents'] . ',points=' . $points . ' - LOOP START!');
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',ref=' . $ref . ',level=' . $content['level'] . ',percents=' . $content['refback_percents'] . ',points=' . $points . ' - LOOP START!');
foreach (getArrayFromRefbackLevel($userid, $content['level']) as $refid) {
// Skip level zero or if both are the same
if ($userid == $refid) {
// Some percents given?
if ($percents > 0) {
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'points=' . $points . ',[percents]=' . $content['percents'] . ',percents=' . $percents . ',level=' . $content['level']);
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'points=' . $points . ',[percents]=' . $content['refback_percents'] . ',percents=' . $percents . ',level=' . $content['level']);
// Calculate points for refback
- $refback = $points * ($content['percents'] / 100) * ($percents / 100);
+ $refback = $points * ($content['refback_percents'] / 100) * ($percents / 100);
// Update refback table ('refid' and 'userid' must be exchanged!)
SQL_QUERY_ESC("UPDATE
`{?_MYSQL_PREFIX?}_user_refs`
SET
- `points`=`points`+%s
+ `refback_points`=`refback_points`+%s
WHERE
`userid`=%s AND
`refid`=%s
// Reduce points if refid is found
if ($refid == $ref) {
// Reduce points here!
- $return = $points * ($content['percents'] / 100) - $refback;
+ $return = $points * ($content['refback_percents'] / 100) - $refback;
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'return=' . $return . ' - REDUCED!');
} // END - if
} // END - if
$GLOBALS['refback_percents'][$userid][$ref] = '0';
// Get percents from database
- $result = SQL_QUERY_ESC("SELECT `refback` FROM `{?_MYSQL_PREFIX?}_user_refs` WHERE `userid`=%s AND `refid`=%s LIMIT 1",
+ $result = SQL_QUERY_ESC("SELECT `refback_percents` FROM `{?_MYSQL_PREFIX?}_user_refs` WHERE `userid`=%s AND `refid`=%s LIMIT 1",
array($ref, $userid), __FUNCTION__, __LINE__);
// Entry found? (Should be!)
FROM
`{?_MYSQL_PREFIX?}_user_refs`
WHERE
- `refid`=%s AND `level`=%s
+ `refid`=%s AND
+ `level`=%s
ORDER BY
`userid` ASC",
array($refid, $level), __FUNCTION__, __LINE__);
return $userIds;
}
-// Update "refback table"
-function updateRefbackTable ($userid) {
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ' - ENTERED!');
- // Load all referals
- loadRefbackTable($userid);
-
- // Add missing level > 1
- addMissingRefbackLevels($userid);
-
- // The last step is to flush all userid's entries to the database
- flushRefbackTableToDatabase($userid);
-
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ' - EXIT!');
-}
-
-// Loads all referals for given userid
-function loadRefbackTable ($userid) {
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ' - ENTERED!');
- // Init array
- $GLOBALS['refback_refid'][$userid] = array();
-
- // Get all level entries from the refsystem table
- $result = SQL_QUERY_ESC('SELECT `level` FROM `{?_MYSQL_PREFIX?}_refsystem` WHERE `userid`=%s ORDER BY `level` ASC',
- array($userid), __FUNCTION__, __LINE__);
-
- // Do we have entries?
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',SQL_NUMROWS()=' . SQL_NUMROWS($result));
- if (SQL_NUMROWS($result) > 0) {
- // Then walk through all levels
- while (list($level) = SQL_FETCHROW($result)) {
- // Init array
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',level=' . $level);
- $GLOBALS['refback_refid'][$userid][$level] = array();
-
- // Level is = 1?
- if ($level == 1) {
- // Load all referals of this user
- $result_refs = SQL_QUERY_ESC('SELECT `userid` FROM `{?_MYSQL_PREFIX?}_user_data` WHERE `refid`=%s ORDER BY `userid` ASC',
- array($userid), __FUNCTION__, __LINE__);
-
- // Do we have entries?
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',level=' . $level . ',SQL_NUMROWS()=' . SQL_NUMROWS($result_refs));
- if (SQL_NUMROWS($result_refs) > 0) {
- // Then again walk through all
- while (list($refid) = SQL_FETCHROW($result_refs)) {
- // Add this refid
- $GLOBALS['refback_refid'][$userid][$level][] = $refid;
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',level=' . $level . ',refid=' . $refid);
- // Load the refid's array as well
- loadRefbackTable($refid);
- } // END - while
- } // END - if
-
- // Free result
- SQL_FREERESULT($result_refs);
- } // END - if
- } // END - while
- } // END - if
-
- // Free result
- SQL_FREERESULT($result);
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ' - EXIT!');
-}
-
-// Adds missing refback levels to the array
-function addMissingRefbackLevels ($userid) {
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ' - ENTERED!');
- // If the array is gone, you have called this function without calling loadRefbackTable()
- if (!isset($GLOBALS['refback_refid'][$userid])) {
- // Please fix your code
- debug_report_bug(__FUNCTION__, __LINE__, 'Called without calling loadRefbackTable() before! userid=' . $userid);
- } // END - if
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',count()=' . count($GLOBALS['refback_refid'][$userid]));
-
- // Now walk through the array, first levels
- foreach ($GLOBALS['refback_refid'][$userid] as $level=>$levelArray) {
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',level=' . $level . ',count()=' . count($levelArray));
- // Next are the users
- foreach ($levelArray as $refid) {
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',level=' . $level . ',refid=' . $refid);
- // Does the refid have an array?
- if (isset($GLOBALS['refback_refid'][$refid])) {
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',level=' . $level . ',refid=' . $refid . ',count()=' . count($GLOBALS['refback_refid'][$refid]));
- // Okay, then walk through here, too
- foreach ($GLOBALS['refback_refid'][$refid] as $refLevel=>$refArray) {
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',level=' . $level . ',refid=' . $refid . ',refLevel=' . $refLevel . ',count()=' . count($refArray));
- // Also walk through this one
- foreach ($refArray as $refRefid) {
- // Calculate new level
- $newLevel = $level + $refLevel;
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',level=' . $level . ',refid=' . $refid . ',refLevel=' . $refLevel . ',refRefid=' . $refRefid . ',newLevel=' . $newLevel);
- // Is the refRefid not in?
- if ((!isset($GLOBALS['refback_refid'][$userid][$newLevel])) || (!in_array($refRefid, $GLOBALS['refback_refid'][$userid][$newLevel]))) {
- // Then we must add this ref's refid to the userid's next level
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',newLevel=' . $newLevel . ',refRefid=' . $refRefid . ' - ADDED!');
- $GLOBALS['refback_refid'][$userid][$newLevel][] = $refRefid;
- } // END - if
- } // END - foreach
- } // END - foreach
- } // END - foreach
- } // END - foreach
- } // END - foreach
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ' - EXIT!');
-}
-
-// Flush all entries for given userid to database
-function flushRefbackTableToDatabase ($userid) {
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ' - ENTERED!');
- // If the array is gone, you have called this function without calling loadRefbackTable()
- if (!isset($GLOBALS['refback_refid'][$userid])) {
- // Please fix your code
- debug_report_bug(__FUNCTION__, __LINE__, 'Called without calling loadRefbackTable() before! userid=' . $userid);
- } // END - if
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',count()=' . count($GLOBALS['refback_refid'][$userid]));
-
- // If no entries are there, skip this whole step
- if (count($GLOBALS['refback_refid'][$userid]) == 0) {
- // No entries found
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ' - ABORTING...');
- return;
- } // END - if
-
- // Prepare SQL
- $SQL = 'INSERT INTO `{?_MYSQL_PREFIX?}_user_refs` (`userid`,`level`,`refid`) VALUES ';
-
- // Now walk through the array, first levels
- foreach ($GLOBALS['refback_refid'][$userid] as $level=>$levelArray) {
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',level=' . $level . ',count()=' . count($levelArray));
- // Next are the users
- foreach ($levelArray as $refid) {
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',level=' . $level . ',refid=' . $refid);
- // Query the user_refs table
- list($count) = SQL_FETCHROW(SQL_QUERY_ESC('SELECT COUNT(`id`) AS `count` FROM `{?_MYSQL_PREFIX?}_user_refs` WHERE `userid`=%s AND `level`=%s AND `refid`=%s LIMIT 1',
- array(
- $userid,
- $level,
- $refid
- ), __FUNCTION__, __LINE__));
-
- // Do we have no entry?
- if ($count == 0) {
- // Then add it to the SQL
- $SQL .= '(' . $userid . ',' . $level . ',' . $refid . '),';
- } // END - if
- } // END - foreach
- } // END - foreach
-
- // Remove last comma from SQL
- $SQL = substr($SQL, 0, -1);
-
- // And run it
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',SQL=' . $SQL);
- SQL_QUERY($SQL, __FUNCTION__, __LINE__);
-
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ' - EXIT!');
-}
-
// "Getter" for array for user refs in given level
function getArrayFromRefbackUserRefs ($userid, $level) {
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',level=' . $level . ' - ENTERED!');
$result = SQL_QUERY_ESC("SELECT
r.`id`,
r.`refid`,
- r.`refback`,
- r.`points`,
+ r.`refback_percents`,
+ r.`refback_points`,
d.`status`,
d.`joined`,
d.`mails_confirmed`,
$id = bigintval($id);
// Get entry from database
- $result = SQL_QUERY_ESC("SELECT `id`, `userid`, `refid`, `refback`, `level`, `points` FROM `{?_MYSQL_PREFIX?}_user_refs` WHERE `id`=%s AND `userid`=%s LIMIT 1",
+ $result = SQL_QUERY_ESC("SELECT `id`, `userid`, `refid`, `refback_percents`, `level`, `refback_points` FROM `{?_MYSQL_PREFIX?}_user_refs` WHERE `id`=%s AND `userid`=%s LIMIT 1",
array($id, getMemberId()), __FUNCTION__, __LINE__);
// Is there an entry?
// Update entry
SQL_QUERY_ESC("UPDATE `{?_MYSQL_PREFIX?}_user_refs` SET `refback`='%s' WHERE `id`=%s AND `userid`=%s LIMIT 1",
- array($percents, $id, getMemberId()), __FUNCTION__, __LINE__);
+ array(
+ $percents,
+ $id,
+ getMemberId()
+ ), __FUNCTION__, __LINE__);
// Entry updated?
if (SQL_HASZEROAFFECTED()) {
} // END - if
// Prepare email content
- $dummy['percents'] = $percents;
+ $dummy['refback_percents'] = $percents;
// Load member email template
$mail = loadEmailTemplate('member_refback', $dummy, $dummy['refid']);