X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;ds=sidebyside;f=inc%2Fmysql-manager.php;h=531aa79a79f594a34c9ceecd655ed43ce5576bf6;hb=c25e794a61b597f90bff599307ae4d766a2d3479;hp=457ae0b6afa98134e99b540c8a96375f96b451df;hpb=8e4b45208df786e67751a6830afe84635b2ca3c5;p=mailer.git diff --git a/inc/mysql-manager.php b/inc/mysql-manager.php index 457ae0b6af..531aa79a79 100644 --- a/inc/mysql-manager.php +++ b/inc/mysql-manager.php @@ -260,7 +260,7 @@ ORDER BY $OUT .= ''; } else { // Not found - open - $OUT .= ''; + $OUT .= ''; } // Menu title @@ -427,19 +427,19 @@ function isMember () { } // Fetch user data for given user id -function fetchUserData ($userid, $column = 'userid') { +function fetchUserData ($value, $column = 'userid') { // If we should look for userid secure&set it here if (substr($column, -2, 2) == 'id') { // Secure userid - $userid = bigintval($userid); + $value = bigintval($value); // Set it here - setCurrentUserId($userid); + setCurrentUserId($value); // Don't look for invalid userids... - if (!isValidUserId($userid)) { + if (!isValidUserId($value)) { // Invalid, so abort here - debug_report_bug(__FUNCTION__, __LINE__, 'User id ' . $userid . ' is invalid.'); + debug_report_bug(__FUNCTION__, __LINE__, 'User id ' . $value . ' is invalid.'); } elseif (isUserDataValid()) { // Use cache, so it is fine return true; @@ -454,11 +454,13 @@ function fetchUserData ($userid, $column = 'userid') { // Extra statements $ADD = ''; - if (isExtensionInstalledAndNewer('user', '0.3.5')) $ADD = ', UNIX_TIMESTAMP(`lock_timestamp`) AS `lock_timestamp`'; + if (isExtensionInstalledAndNewer('user', '0.3.5')) { + $ADD = ', UNIX_TIMESTAMP(`lock_timestamp`) AS `lock_timestamp`'; + } // END - if // Query for the user $result = SQL_QUERY_ESC("SELECT *".$ADD." FROM `{?_MYSQL_PREFIX?}_user_data` WHERE `%s`='%s' LIMIT 1", - array($column, $userid), __FUNCTION__, __LINE__); + array($column, $value), __FUNCTION__, __LINE__); // Do we have a record? if (SQL_NUMROWS($result) == 1) { @@ -467,6 +469,8 @@ function fetchUserData ($userid, $column = 'userid') { // Set the userid for later use setCurrentUserId($data['userid']); + + // And cache the data for this userid $GLOBALS['user_data'][getCurrentUserId()] = $data; // Rewrite 'last_failure' if found and ext-user has version >= 0.3.7 @@ -992,7 +996,7 @@ function getReferalLevelPercents ($level) { /** * - * Dynamic referal system, can also send mails! + * 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... @@ -1003,19 +1007,18 @@ function getReferalLevelPercents ($level) { * add_mode = Add points only to $userid or also refs? (WARNING! Changing 'ref' to 'direct' * for default value will cause no referal will get points ever!!!) */ -function addPointsThroughReferalSystem ($subject, $userid, $points, $sendNotify = false, $refid = '0', $add_mode = 'ref') { +function addPointsThroughReferalSystem ($subject, $userid, $points, $sendNotify = false, $refid = '0', $addMode = 'ref') { // By default nothing has been added $added = false; //* DEBUG: */ debugOutput('----------------------- ' . __FUNCTION__ . ' - ENTRY ------------------------
  • '); // Convert mode to lower-case - $add_mode = strtolower($add_mode); + $addMode = strtolower($addMode); // When $userid = '0' add points to jackpot if (($userid == '0') && (isExtensionActive('jackpot'))) { // Add points to jackpot - addPointsToJackpot($points); - return; + return addPointsToJackpot($points); } // END - if // Count up referal depth @@ -1035,20 +1038,15 @@ function addPointsThroughReferalSystem ($subject, $userid, $points, $sendNotify // Determine wether the user has some mails to click before he/she gets the points $locked = ifUserPointsLocked($userid); - // Default is 'normal' points - $data = 'points'; - - // Which points, locked or normal? - if ($locked === true) { - $data = 'locked_points'; - } // END - if + // 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: */ debugOutput(__FUNCTION__ . '(' . __LINE__ . '):userid='.$userid.',points='.$points.',depth='.$GLOBALS['ref_level'].',per='.$per.',mode='.$add_mode); + //* DEBUG: */ debugOutput(__FUNCTION__ . '(' . __LINE__ . '):userid='.$userid.',points='.$points.',depth='.$GLOBALS['ref_level'].',per='.$per.',mode='.$addMode); // Some percents found? if ($per > 0) { @@ -1057,7 +1055,7 @@ function addPointsThroughReferalSystem ($subject, $userid, $points, $sendNotify $ref_points = $points * $per / 100; // Pay refback here if level > 0 and in ref-mode - if ((isExtensionActive('refback')) && ($GLOBALS['ref_level'] > 0) && ($per < 100) && ($add_mode == 'ref') && (isset($GLOBALS['cache_array']['add_userid'][$userid]))) { + if ((isExtensionActive('refback')) && ($GLOBALS['ref_level'] > 0) && ($per < 100) && ($addMode == 'ref') && (isset($GLOBALS['cache_array']['add_userid'][$userid]))) { //* DEBUG: */ debugOutput(__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: */ debugOutput(__FUNCTION__ . '(' . __LINE__ . '):userid='.$userid.',data='.$GLOBALS['cache_array']['add_userid'][$userid].',ref_points='.$ref_points.',depth='.$GLOBALS['ref_level'].' - AFTER!'); @@ -1065,15 +1063,26 @@ function addPointsThroughReferalSystem ($subject, $userid, $points, $sendNotify // Update points... SQL_QUERY_ESC("UPDATE `{?_MYSQL_PREFIX?}_user_points` SET `%s`=`%s`+%s WHERE `userid`=%s AND `ref_depth`=%s LIMIT 1", - array($data, $data, $ref_points, bigintval($userid), bigintval($GLOBALS['ref_level'])), __FUNCTION__, __LINE__); - //* DEBUG: */ debugOutput(__FUNCTION__ . '(' . __LINE__ . '):data='.$data.',ref_points='.$ref_points.',userid='.$userid.',depth='.$GLOBALS['ref_level'].',mode='.$add_mode.' - UPDATE! ('.SQL_AFFECTEDROWS().')'); + array( + $pointsColumn, + $pointsColumn, + $ref_points, + bigintval($userid), + bigintval($GLOBALS['ref_level']) + ), __FUNCTION__, __LINE__); + //* DEBUG: */ debugOutput(__FUNCTION__ . '(' . __LINE__ . '):pointsColumn='.$pointsColumn.',ref_points='.$ref_points.',userid='.$userid.',depth='.$GLOBALS['ref_level'].',mode='.$addMode.' - 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)", - array($data, bigintval($userid), bigintval($GLOBALS['ref_level']), $ref_points), __FUNCTION__, __LINE__); - //* DEBUG: */ debugOutput(__FUNCTION__ . '(' . __LINE__ . '):data='.$data.',ref_points='.$ref_points.',userid='.$userid.',depth='.$GLOBALS['ref_level'].',mode='.$add_mode.' - INSERTED! ('.SQL_AFFECTEDROWS().')'); + SQL_QUERY_ESC("INSERT INTO `{?_MYSQL_PREFIX?}_user_points` (`userid`, `ref_depth`, `%s`) VALUES (%s, %s, %s)", + array( + $pointsColumn, + bigintval($userid), + bigintval($GLOBALS['ref_level']), + $ref_points + ), __FUNCTION__, __LINE__); + //* DEBUG: */ debugOutput(__FUNCTION__ . '(' . __LINE__ . '):data='.$pointsColumn.',ref_points='.$ref_points.',userid='.$userid.',depth='.$GLOBALS['ref_level'].',mode='.$addMode.' - INSERTED! ('.SQL_AFFECTEDROWS().')'); } // END - if // Check affected rows @@ -1082,19 +1091,21 @@ function addPointsThroughReferalSystem ($subject, $userid, $points, $sendNotify // Prepare data for the filter $filterData = array( - 'subject' => $subject, - 'userid' => $userid, - 'points' => $points, - 'notify' => $sendNotify, - 'refid' => $refid, - 'locked' => $locked, - 'mode' => 'add', - 'sub_mode' => $add_mode, - 'added' => $added + 'subject' => $subject, + 'userid' => $userid, + 'points' => $points, + 'ref_points' => $ref_points, + 'column' => $pointsColumn, + 'notify' => $sendNotify, + 'refid' => $refid, + 'locked' => $locked, + 'mode' => 'add', + 'add_mode' => $addMode, + 'added' => $added ); // Filter it now - $filterData = runFilterChain('add_points', $filterData); + $filterData = runFilterChain('post_add_points', $filterData); // Extract $added $added = $filterData['added']; @@ -1114,7 +1125,7 @@ function addPointsThroughReferalSystem ($subject, $userid, $points, $sendNotify // Send email sendEmail($userid, '{--THANX_REFERAL_ONE_SUBJECT--}', $message); - } elseif (($sendNotify === true) && (!isValidUserId(getUserData('refid'))) && ($locked === false) && ($add_mode == 'direct')) { + } elseif (($sendNotify === true) && (!isValidUserId(getUserData('refid'))) && ($locked === false) && ($addMode == 'direct')) { // Prepare content $content = array( 'reason' => '{--REASON_DIRECT_PAYMENT--}', @@ -1128,12 +1139,12 @@ function addPointsThroughReferalSystem ($subject, $userid, $points, $sendNotify sendEmail($userid, '{--DIRECT_PAYMENT_SUBJECT--}', $message); if (!isGetRequestParameterSet('mid')) { // Output message to admin - loadTemplate('admin_settings_saved', false, '{--ADMIN_POINTS_ADDED--}'); + displayMessage('{--ADMIN_POINTS_ADDED--}'); } // END - if } // Maybe there's another ref? - if ((isValidUserId(getUserData('refid'))) && ($points > 0) && (getUserData('refid') != $userid) && ($add_mode == 'ref')) { + if ((isValidUserId(getUserData('refid'))) && ($points > 0) && (getUserData('refid') != $userid) && ($addMode == 'ref')) { // Then let's credit him here... //* DEBUG: */ debugOutput(__FUNCTION__ . '(' . __LINE__ . '):userid='.$userid.',ref='.getUserData('refid').',points='.$points.' - ADVANCE!'); $added = ($added && addPointsThroughReferalSystem(sprintf("%s_ref:%s", $subject, $GLOBALS['ref_level']), getUserData('refid'), $points, $sendNotify, getUserData('refid'))); @@ -1537,6 +1548,7 @@ LIMIT 1", $data = SQL_FETCHARRAY($result); // Delete points entries as well + // @TODO Rewrite these lines to a filter SQL_QUERY_ESC("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_user_points` WHERE `userid`=%s", array(bigintval($userid)), __FUNCTION__, __LINE__); @@ -1547,7 +1559,9 @@ LIMIT 1", } // END - if // Now, when we have all his points adds them do the jackpot! - if (isExtensionActive('jackpot')) addPointsToJackpot($data['points']); + if (isExtensionActive('jackpot')) { + addPointsToJackpot($data['points']); + } // END - if } // END - if // Free the result @@ -1951,7 +1965,7 @@ function reduceRecipientReceivedMails ($column, $id, $count) { array(implode(',', $userids), count($userids)), __FUNCTION__, __LINE__); } else { // Nothing deleted - loadTemplate('admin_settings_saved', false, getMaskedMessage('ADMIN_MAIL_NOTHING_DELETED', $id)); + displayMessage(getMaskedMessage('ADMIN_MAIL_NOTHING_DELETED', $id)); } } // END - if @@ -1987,5 +2001,32 @@ function updateLastActivity($userid) { ), __FUNCTION__, __LINE__); } +// Determines database column name from given subject and locked +function determinePointsColumnFromSubjectLocked ($subject, $locked) { + // Default is 'normal' points + $pointsColumn = 'points'; + + // Which points, locked or normal? + if ($locked === true) { + $pointsColumn = 'locked_points'; + } // END - if + + // Prepare array for filter + $filterData = array( + 'subject' => $subject, + 'locked' => $locked, + 'column' => $pointsColumn + ); + + // Run the filter + $filterData = runFilterChain('determine_points_column_name', $filterData); + + // Extract column name from array + $pointsColumn = $filterData['column']; + + // Return it + return $pointsColumn; +} + // [EOF] ?>