X-Git-Url: https://git.mxchange.org/?p=mailer.git;a=blobdiff_plain;f=inc%2Flibs%2Frefback_functions.php;h=4fb906fc38f5fbff16367ef929eb10afa6cf1bb2;hp=92a13150aef08dfb99f2d86f48252abfc9296989;hb=99966a712b3b3d8b521524762e153353d1d20bd4;hpb=98e44adab9035e30efe78181b76d78c6e13ba574 diff --git a/inc/libs/refback_functions.php b/inc/libs/refback_functions.php index 92a13150ae..4fb906fc38 100644 --- a/inc/libs/refback_functions.php +++ b/inc/libs/refback_functions.php @@ -16,8 +16,8 @@ * $Author:: $ * * -------------------------------------------------------------------- * * Copyright (c) 2003 - 2009 by Roland Haeder * - * Copyright (c) 2009 - 2011 by Mailer Developer Team * - * For more information visit: http://www.mxchange.org * + * Copyright (c) 2009 - 2013 by Mailer Developer Team * + * 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 * @@ -38,7 +38,7 @@ // Some security stuff... if (!defined('__SECURITY')) { die(); -} +} // END - if // Payback refback for refid and reduce it for current user function addRefbackPoints ($userid, $ref, $points, $ref_points) { @@ -47,47 +47,69 @@ function addRefbackPoints ($userid, $ref, $points, $ref_points) { $GLOBALS['refback_depth'][$userid][$ref] = $GLOBALS['ref_level']; // Init points - $return = $points; + $return = $ref_points; // Get all ref levels - $result_refs = SQL_QUERY('SELECT `level`, `percents` FROM `{?_MYSQL_PREFIX?}_refdepths` WHERE `level` > 0 ORDER BY `level` ASC', + $result_refs = sqlQuery('SELECT `level`, `percents` FROM `{?_MYSQL_PREFIX?}_refdepths` WHERE `level` > 0 ORDER BY `level` ASC', __FUNCTION__, __LINE__); // "Walk" through all level - while ($content = SQL_FETCHARRAY($result_refs)) { + while ($content = sqlFetchArray($result_refs)) { + //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'level=' . $content['level'] . ',percents=' . $content['percents'] . ' - LOOP START!'); // Reset ref depths - // @TODO Try to rewrite the following unset() - unset($GLOBALS['ref_level']); + initReferralSystem(); - // "Walk" through all refids - //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',ref=' . $ref . ',level=' . $content['level'] . ',points=' . $points); - foreach (getArrayFromRefbackLevel($userid, $content['level']) as $refid) { - // Skip level zero or if both are the same - if ($userid == $refid) continue; + // Init array + $refids = getArrayFromRefbackLevel($userid, $content['level']); - // Get refback percents - $percents = getRefbackPercents($userid, $refid); - //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',ref=' . $ref . ',refid=' . $refid . ',points=' . $points . ',percents=' . $percents); + // "Walk" through all refids + //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',ref=' . $ref . ',level=' . $content['level'] . ',percents=' . $content['percents'] . ',points=' . $points . ' - LOOP START!'); + foreach ($refids as $refid) { + /* + * Get refback percents, do not swap $refid and $userid by the next + * call. If you do so, you will check the wrong direction, $userid + * is always bigger than $refid. + */ + //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',refid=' . convertNullToZero($refid) . ' - CALLING getRefbackPercents()'); + $content['refback_percents'] = getRefbackPercents($refid, $userid); + //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',refid=' . convertNullToZero($refid) . ',refback_percents=' . $content['refback_percents']); // Some percents given? - if ($percents > 0) { - //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'points=' . $points . ',[percents]=' . $content['percents'] . ',percents=' . $percents . ',level=' . $content['level']); + if ($content['refback_percents'] > 0) { // Calculate points for refback - $refback = $points * ($content['percents'] / 100) * ($percents / 100); + $refbackPoints = $points * ($content['percents'] / 100) * ($content['refback_percents'] / 100); + //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'points=' . $points . ',percents=' . $content['percents'] . ',refback_percents=' . $content['refback_percents'] . ',level=' . $content['level'] . ',refback_points=' . $refbackPoints); // Update refback table ('refid' and 'userid' must be exchanged!) - SQL_QUERY_ESC("UPDATE `{?_MYSQL_PREFIX?}_user_refs` SET `points`=`points`+%s WHERE `userid`=%s AND `refid`=%s LIMIT 1", - array($refback, $refid, $userid), __FUNCTION__, __LINE__); - //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'refback=' . $refback . ',userid=' . $userid . ',refid=' . $refid . ' - UPDATE! (' . SQL_AFFECTEDROWS() . ')'); + sqlQueryEscaped('UPDATE + `{?_MYSQL_PREFIX?}_user_refs` +SET + `refback_points`=`refback_points`+%s +WHERE + `userid`=%s AND + `refid`=%s +LIMIT 1', + array( + $refbackPoints, + $refid, + $userid + ), __FUNCTION__, __LINE__); + + // Something must have been updated + if (ifSqlHasZeroAffectedRows()) { + // Please report this bug + reportBug(__FUNCTION__, __LINE__, 'Nothing has been updated in user_refs,userid=' . $userid . ',refid=' . convertNullToZero($refid) . ',refbackPoints=' . $refbackPoints); + } // END - if // Add points again, but only directly - //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'refback=' . $refback); - addPointsDirectly(sprintf("refback:%s", $refid), $userid, $refback); + //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'refbackPoints=' . $refbackPoints . ',userid=' . $userid . ',ref=' . $ref . ',refid=' . convertNullToZero($refid) . ' - REFBACK-UPDATE! (' . sqlAffectedRows() . ')'); + addPointsThroughReferralSystem(sprintf('refback:%s', $refid), $userid, $refbackPoints); // Reduce points if refid is found + //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',refid=' . $refid . ',ref=' . $ref . ' - REDUCING?'); if ($refid == $ref) { // Reduce points here! - $return = $points * ($content['percents'] / 100) - $refback; + $return = $points * ($content['percents'] / 100) - $refbackPoints; //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'return=' . $return . ' - REDUCED!'); } // END - if } // END - if @@ -95,190 +117,97 @@ function addRefbackPoints ($userid, $ref, $points, $ref_points) { } // END - while // Free result - SQL_FREERESULT($result_refs); + sqlFreeResult($result_refs); // Restore ref depth $GLOBALS['ref_level'] = $GLOBALS['refback_depth'][$userid][$ref]; // Return them - //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',ref=' . $ref . ',points=' . $points . ',ref_points=' . $ref_points . ',return=' . $return . ' - ENTERED!'); + //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',ref=' . $ref . ',points=' . $points . ',ref_points=' . $ref_points . ',return=' . $return . ' - EXIT!'); return $return; } -// "Getter" for refback percents -function getRefbackPercents ($userid, $ref) { - //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',ref=' . $ref . ' - ENTERED!'); - // Skip identical ids - if ($userid == $ref) return 0; +/** + * "Getter" for refback percents + * + * @param $userid "Current" user's userid + * @param $refid $userid has this userid as referral + * @return $percents Refback percents $userid has given to $refid + */ +function getRefbackPercents ($userid, $refid) { + //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',refid=' . $refid . ' - ENTERED!'); + if ((!isValidId($userid)) || (!isValidId($refid))) { + // userid and/or refid is invalid + reportBug(__FUNCTION__, __LINE__, 'userid=' . convertNullToZero($userid) . ', refid=' . convertNullToZero($refid) . ' - Both must be > 0'); + } elseif ($userid == $refid) { + // Skip identical ids + return 0; + } // END - if // Is it cached? - if (!isset($GLOBALS['refback_percents'][$userid][$ref])) { + if (!isset($GLOBALS['refback_percents'][$userid][$refid])) { // Default is zero - $GLOBALS['refback_percents'][$userid][$ref] = '0'; + $GLOBALS['refback_percents'][$userid][$refid] = '0'; // Get percents from database - $result = SQL_QUERY_ESC("SELECT `refback` FROM `{?_MYSQL_PREFIX?}_user_refs` WHERE `userid`=%s AND `refid`=%s LIMIT 1", - array($ref, $userid), __FUNCTION__, __LINE__); + $result = sqlQueryEscaped("SELECT `refback_percents` FROM `{?_MYSQL_PREFIX?}_user_refs` WHERE `userid`=%s AND `refid`=%s LIMIT 1", + array($userid, $refid), __FUNCTION__, __LINE__); // Entry found? (Should be!) - if (SQL_NUMROWS($result) == 1) { + if (sqlNumRows($result) == 1) { // Fetch percents - list($GLOBALS['refback_percents'][$userid][$ref]) = SQL_FETCHROW($result); - //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',ref=' . $ref . ',percents=' . $GLOBALS['refback_percents'][$userid][$ref]); + list($GLOBALS['refback_percents'][$userid][$refid]) = sqlFetchRow($result); + //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',refid=' . $refid . ',percents=' . $GLOBALS['refback_percents'][$userid][$refid]); } else { - // Debug log - logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',ref=' . $ref . ' - No entry found. :-('); + // Please report all findings + reportBug(__FUNCTION__, __LINE__, 'userid=' . $userid . ',refid=' . $refid . ' - No entry found. :-('); } // Free result - SQL_FREERESULT($result); + sqlFreeResult($result); } // END - if // Return percents - //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',ref=' . $ref . ',refback_percents=' . $GLOBALS['refback_percents'][$userid][$ref] . ' - EXIT!'); - return $GLOBALS['refback_percents'][$userid][$ref]; + //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',refid=' . $refid . ',refback_percents=' . $GLOBALS['refback_percents'][$userid][$refid] . ' - EXIT!'); + return $GLOBALS['refback_percents'][$userid][$refid]; } // "Getter" for userid array which will return only one entry function getArrayFromRefbackLevel ($refid, $level) { - //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'refid=' . $refid . ',level=' . $level); + //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'refid=' . convertNullToZero($refid) . ',level=' . $level . ' - ENTERED!'); // Init userids $userIds = array(); // Look for all - $result = SQL_QUERY_ESC("SELECT + $result = sqlQueryEscaped("SELECT `userid` 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__); // Entries found? - //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'numRows=' . SQL_NUMROWS($result)); - if (!SQL_HASZERONUMS($result)) { + //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'numRows=' . sqlNumRows($result)); + if (!ifSqlHasZeroNums($result)) { // Add all - while ($content = SQL_FETCHARRAY($result)) { - //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'refid=' . $refid . ',level=' . $level . ',userid=' . $content['userid']); - $userIds[] = $content['userid']; + while ($content = sqlFetchArray($result)) { + //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'refid=' . convertNullToZero($refid) . ',level=' . $level . ',userid=' . $content['userid']); + array_push($userIds, $content['userid']); } // END - while } // END - if // Free result - SQL_FREERESULT($result); + sqlFreeResult($result); // Return array - //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'refid=' . $refid . ',userIds()=' . count($userIds) . ' - EXIT!'); + //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'refid=' . convertNullToZero($refid) . ',userIds()=' . count($userIds) . ' - EXIT!'); return $userIds; } -// Update "refback table" -function updateRefbackTable ($userid) { - // Make it sure referal level zero (member him-/herself) is at least selected - if (empty($GLOBALS['refback_level'])) { - $GLOBALS['refback_level'] = 1; - } // END - if - //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',level=' . $GLOBALS['refback_level'] . ' - ENTERED!'); - - // Init refid - $GLOBALS['refback_refid'][$GLOBALS['refback_level']] = '0'; - $old = '0'; $minus = '0'; - - // Check for his referal - $result_refid = SQL_QUERY_ESC("SELECT `userid` FROM `{?_MYSQL_PREFIX?}_user_data` WHERE `refid`=%s ORDER BY `userid` ASC", - array(bigintval($userid)), __FUNCTION__, __LINE__); - - // When no entry was updated then we have to create it here - //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'SQL_NUMROWS()=' . SQL_NUMROWS($result_refid)); - if (!SQL_HASZERONUMS($result_refid)) { - // Load all refids - while (list($GLOBALS['refback_refid'][$GLOBALS['refback_level']]) = SQL_FETCHROW($result_refid)) { - // Remmber userid - $GLOBALS['refback_userid'][$GLOBALS['refback_refid'][$GLOBALS['refback_level']]] = $userid; - - // Refid set? - //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',ref=' . $GLOBALS['refback_refid'][$GLOBALS['refback_level']]); - if (($GLOBALS['refback_refid'][$GLOBALS['refback_level']] > 0) && ($GLOBALS['refback_refid'][$GLOBALS['refback_level']] != $userid) && (isset($GLOBALS['refback_refid'][$GLOBALS['refback_level']]))) { - // New userid? - if ((isset($GLOBALS['refback_refid'][$GLOBALS['refback_level']-1])) && (isset($GLOBALS['refback_userid'][$GLOBALS['refback_refid'][$GLOBALS['refback_level']-1]]))) { - // New userid! - $old = $userid; - $userid = $GLOBALS['refback_userid'][$GLOBALS['refback_refid'][$GLOBALS['refback_level']-1]]; - $minus = 1; - //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',old=' . $old . ',level=' . $GLOBALS['refback_level'] . ',ref=' . $GLOBALS['refback_refid'][$GLOBALS['refback_level']] . ' - NEW UID!'); - } // END - if - - // Check existence - $result = SQL_QUERY_ESC("SELECT `id` FROM `{?_MYSQL_PREFIX?}_user_refs` WHERE `userid`=%s AND `level`=%s AND `refid`=%s LIMIT 1", - array( - bigintval($userid), - bigintval($GLOBALS['refback_level']), - bigintval($GLOBALS['refback_refid'][$GLOBALS['refback_level']]) - ), __FUNCTION__, __LINE__); - - // Do we have no entry? - //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',level=' . $GLOBALS['refback_level'] . ',ref=' . $GLOBALS['refback_refid'][$GLOBALS['refback_level']] . ',minus=' . $minus . ',numRows=' . SQL_NUMROWS($result) . ' - FOUND!'); - if (SQL_HASZERONUMS($result)) { - // Insert this level - //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',level=' . $GLOBALS['refback_level'] . ',ref=' . $GLOBALS['refback_refid'][$GLOBALS['refback_level']] . ' - ADD!'); - SQL_QUERY_ESC("INSERT INTO `{?_MYSQL_PREFIX?}_user_refs` (`userid`,`level`,`refid`) VALUES (%s,%s,%s)", - array(bigintval($userid), $GLOBALS['refback_level'], bigintval($GLOBALS['refback_refid'][$GLOBALS['refback_level']])), __FUNCTION__, __LINE__); - - // Move to next referal level and count his counter one up! - $GLOBALS['refback_level']++; - updateRefbackTable($GLOBALS['refback_refid'][($GLOBALS['refback_level'] - 1)]); - } // END - if - - // Do we have another level here? - if ((($GLOBALS['refback_level']-$minus) > 0) && ($old > 0)) { - // Restore old one - $userid = $old; - - // Shall we add this as well? - $result = SQL_QUERY_ESC("SELECT `id` FROM `{?_MYSQL_PREFIX?}_user_refs` WHERE `userid`=%s AND `level`=%s AND `refid`=%s LIMIT 1", - array( - bigintval($userid), - (bigintval($GLOBALS['refback_level']) - $minus), - bigintval($GLOBALS['refback_refid'][$GLOBALS['refback_level']]) - ), __FUNCTION__, __LINE__); - - // Do we have no entry? - //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',level=' . ($GLOBALS['refback_level'] - $minus) . ',minus=' . $minus . ',ref=' . $GLOBALS['refback_refid'][$GLOBALS['refback_level']] . ',numRows=' . SQL_NUMROWS($result) . ' - BACK!'); - if (SQL_HASZERONUMS($result)) { - // Insert this level - SQL_QUERY_ESC("INSERT INTO `{?_MYSQL_PREFIX?}_user_refs` (`userid`,`level`,`refid`) VALUES (%s,%s,%s)", - array(bigintval($userid), ($GLOBALS['refback_level']-$minus), bigintval($GLOBALS['refback_refid'][$GLOBALS['refback_level']])), __FUNCTION__, __LINE__); - //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',level=' . ($GLOBALS['refback_level'] - $minus) . ',ref=' . $GLOBALS['refback_refid'][$GLOBALS['refback_level']] . ' - RETURNED!'); - } // END - if - } // END - if - } // END - if - } // END - while - - // Free memory - SQL_FREERESULT($result_refid); - } // END - if - - // When he has a referal... - if ((($GLOBALS['refback_refid'][$GLOBALS['refback_level']] == $userid) || ($GLOBALS['refback_refid'][$GLOBALS['refback_level']] == '0')) && (isExtensionInstalledAndNewer('cache', '0.1.2')) && (!isset($GLOBALS['refback_cached']))) { - // Remove cache here - //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',ref=' . $GLOBALS['refback_refid'][$GLOBALS['refback_level']] . ' - CACHE!'); - if ($GLOBALS['cache_instance']->loadCacheFile('refback')) $GLOBALS['cache_instance']->removeCacheFile(); - $GLOBALS['refback_cached'] = 1; - } // END - if - - // "Walk" back here - $GLOBALS['refback_level']--; - //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',refback_level=' . $GLOBALS['refback_level'] .' - LEVEL!'); - - // Fix empty refid - if (!isset($GLOBALS['refback_refid'][$GLOBALS['refback_level']-1])) { - $GLOBALS['refback_refid'][$GLOBALS['refback_level']-1] = '0'; - } // END - if - //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',refback_level=' . {$GLOBALS['refback_level'] . ',ref=' . $GLOBALS['refback_refid'][$GLOBALS['refback_level']-1] . ' - EXIT!'); -} - // "Getter" for array for user refs in given level function getArrayFromRefbackUserRefs ($userid, $level) { //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',level=' . $level . ' - ENTERED!'); @@ -286,38 +215,43 @@ function getArrayFromRefbackUserRefs ($userid, $level) { $refs = array(); // Get refs from database - $result = SQL_QUERY_ESC("SELECT - r.`id`, - r.`refid`, - r.`refback`, - r.`points`, - d.`status`, - d.`joined`, - d.`refid` AS `level_refid` + $result = sqlQueryEscaped("SELECT + `r`.`id`, + `r`.`refid`, + `r`.`refback_percents`, + `r`.`refback_points`, + `d`.`status`, + `d`.`joined`, + `d`.`mails_confirmed`, + `d`.`emails_received`, + `d`.`refid` AS `level_refid` FROM - `{?_MYSQL_PREFIX?}_user_refs` AS r + `{?_MYSQL_PREFIX?}_user_refs` AS `r` LEFT JOIN - `{?_MYSQL_PREFIX?}_user_data` AS d + `{?_MYSQL_PREFIX?}_user_data` AS `d` ON - r.`refid`=d.`userid` + `r`.`refid`=`d`.`userid` WHERE - r.`userid`=%s AND - r.`level`=%s + `r`.`userid`=%s AND + `r`.`level`=%s ORDER BY - r.`refid` ASC", + `r`.`refid` ASC", array(bigintval($userid), bigintval($level)), __FUNCTION__, __LINE__); // Are there some entries? - if (!SQL_HASZERONUMS($result)) { + if (!ifSqlHasZeroNums($result)) { // Fetch all entries - while ($row = SQL_FETCHARRAY($result)) { + while ($row = sqlFetchArray($result)) { + // Calculate click rate + $row['click_rate'] = calculatePercentageRate($row['mails_confirmed'], $row['emails_received']); + // Add row $refs[$row['id']] = $row; } // END - while } // END - if // Free result - SQL_FREERESULT($result); + sqlFreeResult($result); // Return result //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',level=' . $level . ',refs()=' . count($refs) . ' - EXIT!'); @@ -334,17 +268,17 @@ function getArrayFromUserRefbackData ($id) { $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 = sqlQueryEscaped("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? - if (SQL_NUMROWS($result) == 1) { + if (sqlNumRows($result) == 1) { // Fetch data - $data = SQL_FETCHARRAY($result); + $data = sqlFetchArray($result); } // END - if // Free result - SQL_FREERESULT($result); + sqlFreeResult($result); // Return entry //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'id=' . $id . ',data()=' . count($data) . ' - EXIT!'); @@ -352,33 +286,33 @@ function getArrayFromUserRefbackData ($id) { } // Update refback percents (but with some sanity-checks! -function updateMemberRefbackPercents ($id, $percents) { - //* logDebugMessage(__FUNCTION__, __LINE__, 'id=' . $id . ',percents=' . $percents . ' - ENTERED!'); +function updateMemberRefbackPercents ($id, $percents, $note) { + //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'id=' . $id . ',percents=' . $percents . ' - ENTERED!'); // Default status is failed - $status['message'] = '{--MEMBER_REFBACK_ERROR_GENERAL--}'; + $status['message'] = 'MEMBER_REFBACK_ERROR_GENERAL'; // Do some sanity-checks if (!isMember()) { // No member! - $status['message'] = '{--MEMBER_REFBACK_ERROR_NO_MEMBER--}'; + $status['message'] = 'MEMBER_REFBACK_ERROR_NO_MEMBER'; return $status; } elseif (''.$id.'' != ''.($id + 0).'') { // No number! - $status['message'] = '{--MEMBER_REFBACK_ERROR_INVALID_ID_NUMBER--}'; + $status['message'] = 'MEMBER_REFBACK_ERROR_INVALID_ID_NUMBER'; return $status; } elseif (($percents < 0) || ($percents > 100)) { // Percentage is not valid! - $status['message'] = '{--MEMBER_REFBACK_ERROR_INVALID_PERCENTAGE--}'; + $status['message'] = 'MEMBER_REFBACK_ERROR_INVALID_PERCENTAGE'; return $status; } // Get ref entry - $dummy = getArrayFromUserRefbackData($id); + $content = getArrayFromUserRefbackData($id); // Is this valid? - if (count($dummy) == 0) { + if (!isFilledArray($content)) { // id does not belong to user! - $status['message'] = '{--MEMBER_REFBACK_ERROR_ID_MISMATCH--}'; + $status['message'] = 'MEMBER_REFBACK_ERROR_ID_MISMATCH'; return $status; } // END - if @@ -386,42 +320,87 @@ function updateMemberRefbackPercents ($id, $percents) { $percents = convertCommaToDot($percents); // 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__); + sqlQueryEscaped("UPDATE `{?_MYSQL_PREFIX?}_user_refs` SET `refback_percents`='%s' WHERE `id`=%s AND `userid`=%s LIMIT 1", + array( + $percents, + $id, + getMemberId() + ), __FUNCTION__, __LINE__); // Entry updated? - if (SQL_HASZEROAFFECTED()) { + if (ifSqlHasZeroAffectedRows()) { // Entry not updated! - $status['message'] = '{--MEMBER_REFBACK_ERROR_NOT_UPDATED--}'; + $status['message'] = 'MEMBER_REFBACK_ERROR_NOT_UPDATED'; return $status; } // END - if // Prepare email content - $dummy['percents'] = $percents; + $content['refback_percents'] = $percents; + $content['refback_notice'] = $note; // Load member email template - $mail = loadEmailTemplate('member_refback', $dummy, $dummy['refid']); + $mail = loadEmailTemplate('member_refback', $content, $content['refid']); // Send email to user - sendEmail($dummy['refid'], '{--MEMBER_REFBACK_SUBJECT--}', $mail); + sendEmail($content['refid'], '{--MEMBER_REFBACK_SUBJECT--}', $mail); // Send admin notification - sendAdminNotification('{--ADMIN_REFBACK_SUBJECT--}', 'admin_refback', $dummy, getMemberId()); + sendAdminNotification('{--ADMIN_REFBACK_SUBJECT--}', 'admin_refback', $content, $content['refid']); // All fine! - $status['ok'] = true; + $status['ok'] = TRUE; // Return status array - //* logDebugMessage(__FUNCTION__, __LINE__, 'id=' . $id . ',percents=' . $percents . ' - EXIT!'); + //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'id=' . $id . ',percents=' . $percents . ' - EXIT!'); return $status; } -// Checks wether refback is enabled +// ---------------------------------------------------------------------------- +// Wrapper functions for configuration entries +// ---------------------------------------------------------------------------- + +// Getter for refback_enabled +function getRefbackEnabled () { + // Is there cache? + if (!isset($GLOBALS[__FUNCTION__])) { + // Determine it + $GLOBALS[__FUNCTION__] = getConfig('refback_enabled'); + } // END - if + + // Return cache + return $GLOBALS[__FUNCTION__]; +} + +// Checks whether refback is enabled function isRefbackEnabled () { - // Do we have cache? + // Is there cache? + if (!isset($GLOBALS[__FUNCTION__])) { + // Determine it + $GLOBALS[__FUNCTION__] = (getRefbackEnabled() == 'Y'); + } // END - if + + // Return cache + return $GLOBALS[__FUNCTION__]; +} + +// Getter for refback_max_perc +function getRefbackMaxPerc () { + // Is there cache? + if (!isset($GLOBALS[__FUNCTION__])) { + // Determine it + $GLOBALS[__FUNCTION__] = getConfig('refback_max_perc'); + } // END - if + + // Return cache + return $GLOBALS[__FUNCTION__]; +} + +// Getter for refback_min_perc +function getRefbackMinPerc () { + // Is there cache? if (!isset($GLOBALS[__FUNCTION__])) { // Determine it - $GLOBALS[__FUNCTION__] = (getConfig('refback_enabled') == 'Y'); + $GLOBALS[__FUNCTION__] = getConfig('refback_min_perc'); } // END - if // Return cache