New function fetchUserData() introduced to API, total rewrite (not all)
[mailer.git] / inc / libs / user_functions.php
index 7e4ee7c1b5e290a18634fc78b52d9e6d2c2be2c2..1fdb5105002af5de754c12ea0b394be5a8f137d3 100644 (file)
@@ -261,7 +261,8 @@ function determineRandomReferalId () {
 // Do the user login
 function doUserLogin ($userid, $passwd, $successUrl = '', $errorUrl = 'modules.php?module=index&what=login&login=') {
        // Init variables
-       $dmy = ''; $add = '';
+       $dmy = '';
+       $add = '';
        $errorCode = 0;
 
        // Add last_login if available
@@ -282,23 +283,18 @@ function doUserLogin ($userid, $passwd, $successUrl = '', $errorUrl = 'modules.p
        // Check login data
        if ((isExtensionActive('nickname')) && (isNicknameOrUserid($userid))) {
                // Nickname entered
-               $result = SQL_QUERY_ESC("SELECT `userid`, `password`, `last_online`" . $lastOnline . " FROM `{?_MYSQL_PREFIX?}_user_data` WHERE `nickname`='%s' AND `status`='CONFIRMED' LIMIT 1",
-                       array($userid), __FUNCTION__, __LINE__);
+               fetchUserData($userid, 'nickname');
        } else {
                // Direct userid entered
-               $result = SQL_QUERY_ESC("SELECT `userid`, `password`, `last_online`" . $lastOnline . " FROM `{?_MYSQL_PREFIX?}_user_data` WHERE `userid`=%s AND `status`='CONFIRMED' LIMIT 1",
-                       array($userid, $content['hash']), __FUNCTION__, __LINE__);
+               fetchUserData($userid);
        }
 
        // Load entry
-       $content = SQL_FETCHARRAY($result);
+       $content = getUserDataArray();
        if (!empty($content['userid'])) $userid = bigintval($content['userid']);
 
        // Is there an entry?
-       if ((SQL_NUMROWS($result) == 1) && ((isNicknameUsed($content['userid'] === true) && (!empty($content['userid']))) || ($content['userid'] == $userid))) {
-               // Free result
-               SQL_FREERESULT($result);
-
+       if ((isUserDataValid()) && (getUserData('status') == 'CONFIRMED') && ((isNicknameUsed($content['userid'] === true) && (!empty($content['userid']))) || ($content['userid'] == $userid))) {
                // Check for old MD5 passwords
                if ((strlen($content['password']) == 32) && (md5($passwd) == $content['password'])) {
                        // Just set the hash to the password from DB... :)
@@ -326,9 +322,7 @@ function doUserLogin ($userid, $passwd, $successUrl = '', $errorUrl = 'modules.p
                        if (!empty($content['last_login'])) $probe = time() - $content['last_login'];
                        if ((getExtensionVersion('bonus') >= '0.2.2') && ($probe >= getConfig('login_timeout'))) {
                                // Add login bonus to user's account
-                               $add = sprintf(", `login_bonus`=`login_bonus`+%s",
-                                       (float)getConfig('login_bonus')
-                               );
+                               $add = ', `login_bonus`=`login_bonus`+{?login_bonus?}';
                                $GLOBALS['bonus_payed'] = true;
 
                                // Subtract login bonus from userid's account or jackpot
@@ -380,17 +374,9 @@ function doUserLogin ($userid, $passwd, $successUrl = '', $errorUrl = 'modules.p
                }
        } elseif (((isNicknameUsed($content['userid'])) && (!empty($content['userid']))) || ($content['userid'] == $userid)) {
                // Other account status?
-               // @TODO Can this query be merged with above query?
-               $result = SQL_QUERY_ESC("SELECT `status` FROM `{?_MYSQL_PREFIX?}_user_data` WHERE `userid`=%s LIMIT 1",
-                       array($userid), __FUNCTION__, __LINE__);
-
-               // Entry found?
-               if (SQL_NUMROWS($result) == 1) {
-                       // Load status
-                       list($status) = SQL_FETCHROW($result);
-
+               if (fetchUserData($userid)) {
                        // Create an error code from given status
-                       $errorCode = generateErrorCodeFromUserStatus($status);
+                       $errorCode = generateErrorCodeFromUserStatus(getUserData('status'));
                } else {
                        // id not found!
                        $errorCode = getCode('WRONG_ID');
@@ -420,6 +406,7 @@ function doNewUserPassword ($email, $userid) {
        $result = false;
 
        // Probe userid/nickname
+       // @TODO We should try to rewrite this to fetchUserData() somehow
        if ((isExtensionActive('nickname')) && (isNicknameOrUserid($userid))) {
                // 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",