Possible fix #2
[mailer.git] / inc / libs / user_functions.php
index 3fd3570e6c1ba9207889046c1d18ef453fe388cf..8e1435575bbc784b2ab413086058ad3e6fdd4a85 100644 (file)
@@ -138,11 +138,11 @@ function addPageNavigation ($PAGES, $offset, $show_form, $colspan,$return=false)
        //if ($show_form === true) {
        //      // Load form for changing number of lines
        //      define('__FORM_HEADER', loadTemplate('admin_list_user_sort_form', true));
-       //      define('__FORM_FOOTER', '<tr><td colspan="'.$colspan.'" class="seperator bottom2">&nbsp;</td></tr>');
+       //      define('__FORM_FOOTER', '<tr><td colspan="'.$colspan.'" class="seperator bottom">&nbsp;</td></tr>');
        //} else {
        //      // Empty row
        //      define('__FORM_HEADER', '<tr><td colspan="' . $colspan . '" class="seperator">&nbsp;</td></tr>');
-       //      define('__FORM_FOOTER', '<tr><td colspan="' . $colspan . '" class="seperator bottom2">&nbsp;</td></tr>');
+       //      define('__FORM_FOOTER', '<tr><td colspan="' . $colspan . '" class="seperator bottom">&nbsp;</td></tr>');
        //}
 
        $OUT = '';
@@ -264,6 +264,7 @@ function doUserLogin ($userid, $passwd, $successUrl = '', $errorUrl = 'modules.p
        $dmy = '';
        $add = '';
        $errorCode = '0';
+       $ext = '';
 
        // Add last_login if available
        $lastOnline = '';
@@ -281,9 +282,13 @@ function doUserLogin ($userid, $passwd, $successUrl = '', $errorUrl = 'modules.p
        );
 
        // Check login data
-       if ((isExtensionActive('nickname')) && (isNicknameOrUserid($userid))) {
+       if ((isExtensionActive('nickname')) && (isNicknameUsed($userid))) {
                // Nickname entered
                fetchUserData($userid, 'nickname');
+       } elseif (isNicknameUsed($userid)) {
+               // No nickname installed
+               $errorCode = getCode('EXTENSION_PROBLEM');
+               $ext = 'nickname';
        } else {
                // Direct userid entered
                fetchUserData($userid);
@@ -294,7 +299,7 @@ function doUserLogin ($userid, $passwd, $successUrl = '', $errorUrl = 'modules.p
        if (!empty($content['userid'])) $userid = bigintval($content['userid']);
 
        // Is there an entry?
-       if ((isUserDataValid()) && (getUserData('status') == 'CONFIRMED') && ((isNicknameUsed($content['userid'] === true) && (!empty($content['userid']))) || ($content['userid'] == $userid))) {
+       if (((isUserDataValid()) && (getUserData('status') == 'CONFIRMED') && (!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... :)
@@ -320,7 +325,7 @@ function doUserLogin ($userid, $passwd, $successUrl = '', $errorUrl = 'modules.p
                        // Probe for last online timemark
                        $probe = time() -  $content['last_online'];
                        if (!empty($content['last_login'])) $probe = time() - $content['last_login'];
-                       if ((getExtensionVersion('bonus') >= '0.2.2') && ($probe >= getConfig('login_timeout'))) {
+                       if ((isExtensionInstalledAndNewer('bonus', '0.2.2')) && ($probe >= getConfig('login_timeout'))) {
                                // Add login bonus to user's account
                                $add = ', `login_bonus`=`login_bonus`+{?login_bonus?}';
                                $GLOBALS['bonus_payed'] = true;
@@ -372,7 +377,7 @@ function doUserLogin ($userid, $passwd, $successUrl = '', $errorUrl = 'modules.p
                        // Wrong password!
                        $errorCode = getCode('WRONG_PASS');
                }
-       } elseif (((isNicknameUsed($content['userid'])) && (!empty($content['userid']))) || ($content['userid'] == $userid)) {
+       } elseif (((isExtensionActive('nickname')) && (isNicknameUsed($content['userid'])) && (!empty($content['userid']))) || ($content['userid'] == $userid)) {
                // Other account status?
                if (fetchUserData($userid)) {
                        // Create an error code from given status
@@ -381,7 +386,7 @@ function doUserLogin ($userid, $passwd, $successUrl = '', $errorUrl = 'modules.p
                        // id not found!
                        $errorCode = getCode('WRONG_ID');
                }
-       } else {
+       } elseif ($errorCode == '0') {
                // id not found!
                $errorCode = getCode('WRONG_ID');
        }
@@ -390,6 +395,9 @@ function doUserLogin ($userid, $passwd, $successUrl = '', $errorUrl = 'modules.p
        if ($errorCode > 0) {
                // Then reconstruct the URL
                $URL = $errorUrl . $errorCode;
+
+               // Extension set? Then add it as well.
+               if (!empty($ext)) $URL .= '&amp;ext=' . $ext;
        } // END - if
 
        // Return URL
@@ -407,7 +415,11 @@ function doNewUserPassword ($email, $userid) {
 
        // Probe userid/nickname
        // @TODO We should try to rewrite this to fetchUserData() somehow
-       if ((isExtensionActive('nickname')) && (isNicknameOrUserid($userid))) {
+       if (!empty($email)) {
+               // Email entered
+               $result = SQL_QUERY_ESC("SELECT `userid`, `status` FROM `{?_MYSQL_PREFIX?}_user_data` WHERE `email`='%s' LIMIT 1",
+                       array($email), __FUNCTION__, __LINE__);
+       } elseif ((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",
                        array($userid, $userid, $email), __FUNCTION__, __LINE__);
@@ -415,10 +427,6 @@ function doNewUserPassword ($email, $userid) {
                // 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__);
-       } elseif (!empty($email)) {
-               // Email entered
-               $result = SQL_QUERY_ESC("SELECT `userid`, `status` FROM `{?_MYSQL_PREFIX?}_user_data` WHERE `email`='%s' LIMIT 1",
-                       array($email), __FUNCTION__, __LINE__);
        } else {
                // Userid not set!
                logDebugMessage(__FUNCTION__, __LINE__, 'Userid is not set! BUG!');