$add = '';
$errorCode = '0';
$ext = '';
+ $isFound = false;
// Init array
$content = array(
$ext = 'nickname';
} else {
// Direct userid entered
- fetchUserData($userid);
+ $isFound = fetchUserData($userid);
}
// No error found?
- if ($errorCode == '0') {
+ if (($errorCode == '0') && ($isFound === true)) {
// Get user data array and set userid (e.g. important if we login with nickname)
$content = getUserDataArray();
if (!empty($content['userid'])) $userid = bigintval($content['userid']);
// Wrong password!
$errorCode = getCode('WRONG_PASS');
}
- } elseif (getUserData('status') != 'CONFIRMED') {
+ } elseif ((isUserDataValid()) && (getUserData('status') != 'CONFIRMED')) {
// Create an error code from given status
$errorCode = generateErrorCodeFromUserStatus(getUserData('status'));
// Nickname entered
$result = SQL_QUERY_ESC("SELECT `userid`, `status` FROM `{?_MYSQL_PREFIX?}_user_data` WHERE `nickname`='%s' OR `userid`='%s' OR `email`='%s' LIMIT 1",
array($userid, $userid, $email), __FUNCTION__, __LINE__);
- } elseif (($userid > 0) && (empty($email))) {
+ } elseif ((isValidUserId($userid)) && (empty($email))) {
// Direct userid entered
$result = SQL_QUERY_ESC("SELECT `userid`, `status` FROM `{?_MYSQL_PREFIX?}_user_data` WHERE `userid`=%s LIMIT 1",
array(bigintval($userid)), __FUNCTION__, __LINE__);
if ((!getTimestampFromUserStats($statsType, $statsData, $userid)) && (!is_array($statsData))) {
// Then insert it!
SQL_QUERY_ESC("INSERT INTO `{?_MYSQL_PREFIX?}_user_stats_data` (`userid`,`stats_type`,`stats_data`) VALUES (%s,'%s','%s')",
- array(bigintval($userid), $statsType, $statsData), __FUNCTION__, __LINE__);
+ array(
+ bigintval($userid),
+ $statsType,
+ $statsData
+ ), __FUNCTION__, __LINE__);
} elseif (is_array($statsData)) {
// Invalid data!
- logDebugMessage(__FUNCTION__, __LINE__, "userid={$userid},type={$statsType},data={".gettype($statsData).": Invalid statistics data type!");
+ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',type=' . $statsType . ',data=' . gettype($statsData) . ': Invalid statistics data type!');
}
}
+// Confirms a user account
+function doConfirmUserAccount () {
+ // Init content
+ $content = array(
+ 'message' => '{--GUEST_CONFIRMED_FAILED--}',
+ 'userid' => 0,
+ );
+
+ // Initialize the user id
+ $userid = '0';
+
+ // Search for an unconfirmed or confirmed account
+ $result = SQL_QUERY_ESC("SELECT `userid`, `email`, `refid` FROM `{?_MYSQL_PREFIX?}_user_data` WHERE `user_hash`='%s' AND (`status`='UNCONFIRMED' OR `status`='CONFIRMED') LIMIT 1",
+ array(getRequestParameter('hash')), __FILE__, __LINE__);
+ if (SQL_NUMROWS($result) == 1) {
+ // Ok, he want's to confirm now so we load some data
+ list($userid, $email, $refid) = SQL_FETCHROW($result);
+
+ // Fetch user data
+ if (!fetchUserData($userid)) {
+ // Not found, should not happen
+ debug_report_bug(__FILE__, __LINE__, 'User account ' . $userid . ' not found.');
+ } // END - if
+
+ // Load all data and add points
+ $content = getUserDataArray();
+
+ // Unlock his account (but only when it is on UNCONFIRMED!)
+ SQL_QUERY_ESC("UPDATE
+ `{?_MYSQL_PREFIX?}_user_data`
+SET
+ `status`='CONFIRMED',
+ `ref_payout`={?ref_payout?},
+ `user_hash`=NULL
+WHERE
+ `user_hash`='%s' AND
+ `status`='UNCONFIRMED'
+LIMIT 1",
+ array(getRequestParameter('hash')), __FILE__, __LINE__);
+ if (SQL_AFFECTEDROWS() == 1) {
+ // Send email if updated
+ $message = loadEmailTemplate('confirm-member', $content, bigintval($userid));
+
+ // And send him right away the confirmation mail
+ sendEmail($email, '{--GUEST_THANX_CONFIRM--}', $message);
+
+ // Maybe he got "referaled"?
+ if (($refid > 0) && ($refid != $userid)) {
+ // Select the referal userid
+ if (fetchUserData($refid)) {
+ // Update ref counter...
+ updateReferalCounter($refid);
+
+ // If version matches add ref bonus to refid's account
+ if ((isExtensionInstalledAndNewer('bonus', '0.4.4')) && (isBonusRallyeActive())) {
+ // Add points (directly only!)
+ SQL_QUERY_ESC("UPDATE `{?_MYSQL_PREFIX?}_user_data` SET `bonus_ref`=`bonus_ref`+{?bonus_ref?} WHERE `userid`=%s LIMIT 1",
+ array(bigintval($refid)), __FILE__, __LINE__);
+
+ // Subtract points from system
+ handleBonusPoints(getConfig('bonus_ref'));
+ } // END - if
+
+ // Add one-time referal bonus over referal system or directly
+ // @TODO Try to rewrite the following unset()
+ unset($GLOBALS['ref_level']);
+ addPointsThroughReferalSystem('referal_bonus', $refid, getPointsRef(), true, bigintval($userid), getConfig('reg_points_mode'));
+ } // END - if
+ } // END - if
+
+ if (isExtensionActive('rallye')) {
+ // Add user to rallye (or not?)
+ addUserToReferalRallye(bigintval($userid));
+ } // END - if
+
+ // Account confirmed!
+ if (isExtensionActive('lead')) {
+ // Set special lead cookie
+ setSession('lead_userid', bigintval($userid));
+
+ // Lead-Code mode enabled
+ redirectToUrl('lead-confirm.php');
+ } else {
+ $content['message'] = '{--GUEST_CONFIRMED_DONE--}';
+ $content['userid'] = bigintval($userid);
+ }
+ } elseif (isExtensionActive('lead')) {
+ // Set special lead cookie
+ setSession('lead_userid', bigintval($userid));
+
+ // Lead-Code mode enabled
+ redirectToUrl('lead-confirm.php');
+ } else {
+ // Nobody was found unter this hash key... or our new member want's to confirm twice?
+ $content['message'] = '{--GUEST_CONFIRMED_TWICE--}';
+ }
+ } else {
+ // Nobody was found unter this hash key... or our new member want's to confirm twice?
+ $content['message'] = '{--GUEST_CONFIRMED_TWICE--}';
+ }
+
+ // Load template
+ loadTemplate('admin_settings_saved', false, $content['message']);
+}
+
+// Expression call-back function for fetching user data
+function doExpressionUser ($data) {
+ // Use current userid by default
+ $functionName = 'getMemberId()';
+
+ // User-related data, so is there a userid?
+ if (!empty($data['matches'][4][$data['key']])) {
+ // Do we have a userid or $userid?
+ if ($data['matches'][4][$data['key']] == '$userid') {
+ // Use dynamic call
+ $functionName = "getFetchedUserData('userid', \$userid, '" . $data['callback'] . "')";
+ } elseif (!empty($data['matches'][4][$data['key']])) {
+ // User data found
+ $functionName = "getFetchedUserData('userid', " . $data['matches'][4][$data['key']] . ", '" . $data['callback'] . "')";
+ }
+ } elseif ((!empty($data['callback'])) && (isUserDataValid())) {
+ // "Call-back" alias column for current logged in user's data
+ $functionName = "getUserData('" . $data['callback'] . "')";
+ }
+
+ // Do we have another function to run (e.g. translations)
+ if (!empty($data['extra_func'])) {
+ // Surround the original function call with it
+ $functionName = $data['extra_func'] . '(' . $functionName . ')';
+ } // END - if
+
+ // Generate replacer
+ $replacer = '{DQUOTE} . ' . $functionName . ' . {DQUOTE}';
+
+ // Now replace the code
+ $code = replaceExpressionCode($data, $replacer);
+
+ // Return replaced code
+ return $code;
+}
+
// [EOF]
?>