* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
* Copyright (c) 2009 - 2011 by Mailer Developer Team *
- * For more information visit: http://www.mxchange.org *
+ * For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
}
/**
- *
* Dynamic referal and points system, can also send mails!
*
* subject = Subject line, write in lower-case letters and underscore is allowed
* userid = Referal id wich should receive...
* points = ... xxx points
* refid = inc/modules/guest/what-confirm.php need this
- * locked = Shall I pay it to normal (false) or locked (true) points ammount?
*/
-function addPointsThroughReferalSystem ($subject, $userid, $points, $refid = '0') {
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'subject=' . $subject . ',userid=' . $userid . ',points=' . $points . ',refid=' . $refid . ' - ENTERED!');
+function addPointsThroughReferalSystem ($subject, $userid, $points, $refid = NULL) {
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'subject=' . $subject . ',userid=' . $userid . ',points=' . $points . ',refid=' . makeNullToZero($refid) . ' - ENTERED!');
// By default nothing has been added
$added = false;
$paymentMethod = strtoupper(getPaymentMethodFromSubject($subject));
$sendNotify = isPaymentRecipientNotificationEnabled($subject);
- // When $userid = '0' add points to jackpot
- if (($userid == '0') && ($paymentMethod == 'DIRECT') && (isExtensionActive('jackpot'))) {
+ // When $userid is NULL add points to jackpot
+ if ((!isValidUserId($userid)) && ($paymentMethod == 'DIRECT') && (isExtensionActive('jackpot'))) {
// Add points to jackpot only in DIRECT mode
return addPointsToJackpot($points);
} // END - if
+ // Set userid as current
+ setCurrentUserId($userid);
+
// Check user account
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',points=' . $points);
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',points=' . $points . ',paymentMethod=' . $paymentMethod . ',sendNotify=' . intval($sendNotify));
if (fetchUserData($userid)) {
// Determine wether the user has some mails to click before he/she gets the points
$locked = ifUserPointsLocked($userid);
// Detect database column
$pointsColumn = determinePointsColumnFromSubjectLocked($subject, $locked);
- // This is the user and his ref
- $GLOBALS['cache_array']['add_userid'][getUserData('refid')] = $userid;
-
// Get percents
$per = getReferalLevelPercents($GLOBALS['ref_level']);
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid='.$userid.',points='.$points.',depth='.$GLOBALS['ref_level'].',per='.$per.',mode='.$paymentMethod);
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',points=' . $points . ',depth=' . makeNullToZero($GLOBALS['ref_level']) . ',per=' . $per . ',mode=' . $paymentMethod . ',pointsColumn=' . $pointsColumn . ',locked=' . intval($locked) . ',refid=' . getUserData('refid'));
// Some percents found?
if ($per > 0) {
// Calculate new points
$ref_points = $points * $per / 100;
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid='.$userid.',points='.$points.',per='.$per.',depth='.$GLOBALS['ref_level'].',ref_points='.$ref_points);
// Pay refback here if level > 0 and in ref-mode
- if ((isExtensionActive('refback')) && ($GLOBALS['ref_level'] > 0) && ($per < 100) && ($paymentMethod == 'REFERAL') && (isset($GLOBALS['cache_array']['add_userid'][$userid]))) {
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid='.$userid.',data='.$GLOBALS['cache_array']['add_userid'][$userid].',ref_points='.$ref_points.',depth='.$GLOBALS['ref_level'].' - BEFORE!');
- $ref_points = addRefbackPoints($GLOBALS['cache_array']['add_userid'][$userid], $userid, $points, $ref_points);
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid='.$userid.',data='.$GLOBALS['cache_array']['add_userid'][$userid].',ref_points='.$ref_points.',depth='.$GLOBALS['ref_level'].' - AFTER!');
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',refid=' . makeNullToZero(getUserData('refid')) . ',points=' . $points . ',paymentMethod=' . $paymentMethod);
+ if (($userid != $refid) && ($paymentMethod == 'REFERAL') && (isValidUserId(getUserData('refid'))) && (isExtensionActive('refback'))) {
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',refid=' . makeNullToZero(getUserData('refid')) . ',ref_points=' . $ref_points . ',depth=' . makeNullToZero($GLOBALS['ref_level']) . ' - BEFORE!');
+ $ref_points = addRefbackPoints($userid, getUserData('refid'), $points, $ref_points);
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',refid=' . makeNullToZero(getUserData('refid')) . ',ref_points=' . $ref_points . ',depth=' . makeNullToZero($GLOBALS['ref_level']) . ' - AFTER!');
} // END - if
// Update points...
bigintval($GLOBALS['ref_level'])
), __FUNCTION__, __LINE__);
}
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'pointsColumn='.$pointsColumn.',ref_points='.$ref_points.',userid='.$userid.',depth='.$GLOBALS['ref_level'].',mode='.$paymentMethod.' - UPDATE! ('.SQL_AFFECTEDROWS().')');
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'pointsColumn='.$pointsColumn.',ref_points='.$ref_points.',userid='.$userid.',depth='.makeNullToZero($GLOBALS['ref_level']).',mode='.$paymentMethod.' - UPDATE! ('.SQL_AFFECTEDROWS().')');
// No entry updated?
if (SQL_HASZEROAFFECTED()) {
// First ref in this level! :-)
- SQL_QUERY_ESC("INSERT INTO `{?_MYSQL_PREFIX?}_user_points` (`userid`, `ref_depth`, `%s`) VALUES (%s, %s, %s)",
+ SQL_QUERY_ESC("INSERT INTO `{?_MYSQL_PREFIX?}_user_points` (`userid`,`ref_depth`,`%s`) VALUES (%s, %s, %s)",
array(
$pointsColumn,
bigintval($userid),
makeZeroToNull($GLOBALS['ref_level']),
$ref_points
), __FUNCTION__, __LINE__);
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'data='.$pointsColumn.',ref_points='.$ref_points.',userid='.$userid.',depth='.$GLOBALS['ref_level'].',mode='.$paymentMethod.' - INSERTED! ('.SQL_AFFECTEDROWS().')');
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'data='.$pointsColumn.',ref_points='.$ref_points.',userid='.$userid.',depth='.makeNullToZero($GLOBALS['ref_level']).',mode='.$paymentMethod.' - INSERTED! ('.SQL_AFFECTEDROWS().')');
} // END - if
// Check affected rows
- $added = SQL_AFFECTEDROWS();
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'added='.intval($added));
+ $added = (SQL_AFFECTEDROWS() == 1);
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'added=' . intval($added) . ' - BEFORE FILTER');
// Prepare data for the filter
$filterData = array(
// Extract $added
$added = $filterData['added'];
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'added='.intval($added));
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'added=' . intval($added) . ' - AFTER FILTER');
// Points updated, maybe I shall send him an email?
if (($sendNotify === true) && (isValidUserId(getUserData('refid'))) && ($locked === false)) {
// And sent it away
sendEmail($userid, '{--DIRECT_PAYMENT_SUBJECT--}', $message);
- if (!isGetRequestParameterSet('mid')) {
+ if (!isGetRequestElementSet('mid')) {
// Output message to admin
displayMessage('{--ADMIN_POINTS_ADDED--}');
} // END - if
}
- // Increase referal level
- $GLOBALS['ref_level']++;
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, ' Referal level increased, ref_level=' . $GLOBALS['ref_level']);
+ // Increase referal level, if payment method is REFERAL
+ if ($paymentMethod == 'REFERAL') {
+ // Increase it
+ $GLOBALS['ref_level']++;
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Referal level increased, ref_level=' . makeNullToZero($GLOBALS['ref_level']) . ',points=' . $points . ',refid=' . makeNullToZero(getUserData('refid')) . ',userid=' . $userid . ',paymentMethod=' . $paymentMethod);
+ } elseif (isDebugModeEnabled()) {
+ // Not increasing referal level, DIRECT payment method
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Referal level *NOT* increased, ref_level=' . makeNullToZero($GLOBALS['ref_level']) . ',points=' . $points . ',refid=' . makeNullToZero(getUserData('refid')) . ',userid=' . $userid . ',paymentMethod=' . $paymentMethod);
+ }
// Maybe there's another ref?
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'points=' . $points . ',refid(var|data)=' . makeNullToZero($refid) . '|' . makeNullToZero(getUserData('refid')) . ',userid=' . $userid . ',paymentMethod=' . $paymentMethod);
if ((isValidUserId(getUserData('refid'))) && ($points > 0) && (getUserData('refid') != $userid) && ($paymentMethod == 'REFERAL')) {
// Then let's credit him here...
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',refid=' . getUserData('refid') . ',points=' . $points . ',ref_points=' . $ref_points . ' - ADVANCE!');
- $added = ($added && addPointsThroughReferalSystem(sprintf("%s_ref:%s", $subject, $GLOBALS['ref_level']), getUserData('refid'), $points, getUserData('refid')));
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',refid=' . makeNullToZero(getUserData('refid')) . ',points=' . $points . ',ref_points=' . $ref_points . ',added[' . gettype($added) . ']=' . intval($added) . ' - ADVANCE!');
+ $added = ($added && addPointsThroughReferalSystem(sprintf("%s_ref:%s", $subject, $GLOBALS['ref_level']), getUserData('refid'), $points, getFetchedUserData('userid', getUserData('refid'), 'refid')));
} // END - if
} // END - if
} // END - if
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'subject=' . $subject . ',userid=' . $userid . ',points=' . $points . ',sendNotify=' . intval($sendNotify) . ',refid=' . $refid . ',paymentMethod=' . $paymentMethod . ' - EXIT!');
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'subject=' . $subject . ',userid=' . $userid . ',points=' . $points . ',sendNotify=' . intval($sendNotify) . ',refid=' . makeNullToZero($refid) . ',paymentMethod=' . $paymentMethod . ' - EXIT!');
return $added;
}
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ref=' . $ref . ',level=' . $GLOBALS['cache_array']['ref_level'][$ref] . ',updated=' . SQL_AFFECTEDROWS());
if (SQL_HASZEROAFFECTED()) {
// First count!
- SQL_QUERY_ESC("INSERT INTO `{?_MYSQL_PREFIX?}_refsystem` (`userid`, `level`, `counter`) VALUES (%s,%s,1)",
+ SQL_QUERY_ESC("INSERT INTO `{?_MYSQL_PREFIX?}_refsystem` (`userid`,`level`,`counter`) VALUES (%s,%s,1)",
array(
bigintval($ref),
makeZeroToNull($GLOBALS['cache_array']['ref_level'][$ref])
rebuildCache('refsystem', 'refsystem');
}
- // Handle refback here if extension is installed
- // @TODO Rewrite this to a filter
- if (isExtensionActive('refback')) {
- updateRefbackTable($userid);
- } // END - if
+ // Update the referal table
+ updateReferalTable($userid);
+
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',ref=' . makeZeroToNull($ref) . ',level=' . makeZeroToNull($GLOBALS['cache_array']['ref_level'][$ref]) . ' - EXIT!');
}
$result = SQL_QUERY_ESC("SELECT
ur.`id`, ur.`refid`, ud.`status`, ud.`last_online`, ud.`mails_confirmed`, ud.`emails_received`
FROM
- `{?_MYSQL_PREFIX?}_user_refs` AS ur
+ `{?_MYSQL_PREFIX?}_user_refs` AS `ur`
LEFT JOIN
- `{?_MYSQL_PREFIX?}_user_points` AS up
+ `{?_MYSQL_PREFIX?}_user_points` AS `up`
ON
- ur.refid=up.userid AND
- (ur.level=0 OR ur.level IS NULL)
+ ur.`refid`=up.`userid` AND
+ (ur.`level`=0 OR ur.`level` IS NULL)
LEFT JOIN
- `{?_MYSQL_PREFIX?}_user_data` AS ud
+ `{?_MYSQL_PREFIX?}_user_data` AS `ud`
ON
ur.`refid`=ud.`userid`
WHERE
if (!SQL_HASZERONUMS($result)) {
// Fetch all entries
while ($row = SQL_FETCHARRAY($result)) {
- // Get total points of this user
- $row['points'] = getTotalPoints($row['refid']);
-
- // Get unconfirmed mails
- $row['unconfirmed'] = countSumTotalData($row['refid'], 'user_links', 'id', 'userid', true);
-
// Init click rate with zero
$row['click_rate'] = '0';
// Get points data for given subject
function getPointsDataArrayFromSubject ($subject) {
- // Extension sql_patches must be up-to-date
+ // Extension ext-sql_patches must be up-to-date
if (isExtensionInstalledAndOlder('sql_patches', '0.8.2')) {
// Please update ext-sql_patches
debug_report_bug(__FUNCTION__, __LINE__, 'sql_patches is out-dated. Please update to at least 0.8.2 to continue. subject=' . $subject);
} // END - if
// Now checkout the entry in database table
- $result = SQL_QUERY_ESC("SELECT `id`, `subject`, `column_name`, `locked_mode`, `payment_method`, `notify_recipient` FROM `{?_MYSQL_PREFIX?}_points_data` WHERE `subject`='%s' LIMIT 1",
+ $result = SQL_QUERY_ESC("SELECT `id`,`subject`,`column_name`,`locked_mode`,`payment_method`,`notify_recipient` FROM `{?_MYSQL_PREFIX?}_points_data` WHERE `subject`='%s' LIMIT 1",
array($subject), __FUNCTION__, __LINE__);
// Do we have an entry?
} // END - foreach
} else {
// Register this automatically
- SQL_QUERY_ESC("INSERT INTO `{?_MYSQL_PREFIX?}_points_data` (`subject`, `column_name`, `locked_mode`, `payment_method`, `notify_recipient`) VALUES ('%s','points','LOCKED','REFERAL','N')",
+ SQL_QUERY_ESC("INSERT INTO `{?_MYSQL_PREFIX?}_points_data` (`subject`,`column_name`,`locked_mode`,`payment_method`,`notify_recipient`) VALUES ('%s','points','LOCKED','REFERAL','N')",
array($subject), __FUNCTION__, __LINE__);
// Re-request it
return $isEnabled;
}
+// Update "referal table"
+function updateReferalTable ($userid) {
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ' - ENTERED!');
+ // Load all referals
+ loadReferalTable($userid);
+
+ // Add missing level > 1
+ addMissingReferalLevels($userid);
+
+ // The last step is to flush all userid's entries to the database
+ flushReferalTableToDatabase($userid);
+
+ // Rebuild cache
+ rebuildCache('refsystem', 'refsystem');
+
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ' - EXIT!');
+}
+
+// Loads all referals for given userid
+function loadReferalTable ($userid) {
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ' - ENTERED!');
+ // Init array
+ $GLOBALS['referal_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['referal_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['referal_refid'][$userid][$level][] = $refid;
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',level=' . $level . ',refid=' . $refid);
+ // Load the refid's array as well
+ loadReferalTable($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 referal levels to the array
+function addMissingReferalLevels ($userid) {
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ' - ENTERED!');
+ // If the array is gone, you have called this function without calling loadReferalTable()
+ if (!isset($GLOBALS['referal_refid'][$userid])) {
+ // Please fix your code
+ debug_report_bug(__FUNCTION__, __LINE__, 'Called without calling loadReferalTable() before! userid=' . $userid);
+ } // END - if
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',count()=' . count($GLOBALS['referal_refid'][$userid]));
+
+ // Now walk through the array, first levels
+ foreach ($GLOBALS['referal_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['referal_refid'][$refid])) {
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',level=' . $level . ',refid=' . makeNullToZero($refid) . ',count()=' . count($GLOBALS['referal_refid'][$refid]));
+ // Okay, then walk through here, too
+ foreach ($GLOBALS['referal_refid'][$refid] as $refLevel=>$refArray) {
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',level=' . $level . ',refid=' . makeNullToZero($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=' . makeNullToZero($refid) . ',refLevel=' . $refLevel . ',refRefid=' . $refRefid . ',newLevel=' . $newLevel);
+ // Is the refRefid not in?
+ if ((!isset($GLOBALS['referal_refid'][$userid][$newLevel])) || (!in_array($refRefid, $GLOBALS['referal_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['referal_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 flushReferalTableToDatabase ($userid) {
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ' - ENTERED!');
+ // If the array is gone, you have called this function without calling loadReferalTable()
+ if (!isset($GLOBALS['referal_refid'][$userid])) {
+ // Please fix your code
+ debug_report_bug(__FUNCTION__, __LINE__, 'Called without calling loadReferalTable() before! userid=' . $userid);
+ } // END - if
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',count()=' . count($GLOBALS['referal_refid'][$userid]));
+
+ // If no entries are there, skip this whole step
+ if (count($GLOBALS['referal_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 ';
+ $executeSql = false;
+
+ // Now walk through the array, first levels
+ foreach ($GLOBALS['referal_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 . '),';
+
+ // Some has been added, so execute the query
+ $executeSql = true;
+ } // 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);
+ if ($executeSql === true) {
+ SQL_QUERY($SQL, __FUNCTION__, __LINE__);
+ } // END - if
+
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ' - EXIT!');
+}
+
// [EOF]
?>