X-Git-Url: https://git.mxchange.org/?p=mailer.git;a=blobdiff_plain;f=inc%2Flibs%2Fuser_functions.php;h=5c0dcb49467a423e911e4b1a8a058f1c59d9d7c6;hp=c199c3affce760aeba5f8477bf8e0fc299d3872d;hb=a524135c24dd0a8fa359c9a92399467d50fd69e0;hpb=155492a5b96cec674846973a8524238b0365a848 diff --git a/inc/libs/user_functions.php b/inc/libs/user_functions.php index c199c3affc..5c0dcb4946 100644 --- a/inc/libs/user_functions.php +++ b/inc/libs/user_functions.php @@ -16,7 +16,7 @@ * $Author:: $ * * -------------------------------------------------------------------- * * Copyright (c) 2003 - 2009 by Roland Haeder * - * Copyright (c) 2009 - 2013 by Mailer Developer Team * + * Copyright (c) 2009 - 2016 by Mailer Developer Team * * For more information visit: http://mxchange.org * * * * This program is free software; you can redistribute it and/or modify * @@ -303,10 +303,10 @@ function doUserLogin ($userid, $passwd, $successUrl = '', $errorUrl = 'modules.p } // END - if // Debug message - //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',isUserDataValid()=' . intval(isUserDataValid()) . ',userStatus=' . getUserData('status') . ',errorCode=' . $errorCode . ',ext=' . $ext . ',isFound=' . intval($isFound)); + //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',isValidUserData()=' . intval(isValidUserData()) . ',userStatus=' . getUserData('status') . ',errorCode=' . $errorCode . ',ext=' . $ext . ',isFound=' . intval($isFound)); // Is there an entry? - if (($errorCode == '0') && (isUserDataValid()) && (getUserData('status') == 'CONFIRMED') && (!empty($content['userid']))) { + if (($errorCode == '0') && (isValidUserData()) && (getUserData('status') == 'CONFIRMED') && (!empty($content['userid']))) { // Check for old MD5 passwords if ((strlen(getUserData('password')) == 32) && (md5($passwd) == getUserData('password'))) { // Just set the hash to the password from DB... :) @@ -393,13 +393,13 @@ function doUserLogin ($userid, $passwd, $successUrl = '', $errorUrl = 'modules.p // Wrong password! $errorCode = getCode('WRONG_PASS'); } - } elseif ((isUserDataValid()) && (getUserData('status') != 'CONFIRMED')) { + } elseif ((isValidUserData()) && (getUserData('status') != 'CONFIRMED')) { // Create an error code from given status $errorCode = generateErrorCodeFromUserStatus(getUserData('status')); // Set userid in session setSession('userid', getUserData('userid')); - } elseif (!isUserDataValid()) { + } elseif (!isValidUserData()) { // User id not found $errorCode = getCode('WRONG_ID'); } else { @@ -466,7 +466,7 @@ function doNewUserPassword ($email, $userid) { ), getUserData('userid')); // ... and send it away - sendEmail(bigintval(getUserData('userid')), '{--GUEST_NEW_PASSWORD--}', $message); + sendEmail(bigintval(getUserData('userid')), '{--GUEST_NEW_PASSWORD_SUBJECT--}', $message); // Output note to user displayMessage('{--GUEST_NEW_PASSWORD_SEND--}'); @@ -578,19 +578,46 @@ function doConfirmUserAccount ($hash) { // Search for an unconfirmed or confirmed account $result = sqlQueryEscaped("SELECT `userid`, `refid` FROM `{?_MYSQL_PREFIX?}_user_data` WHERE `user_hash`='%s' AND (`status`='UNCONFIRMED' OR `status`='CONFIRMED') LIMIT 1", array($hash), __FILE__, __LINE__); - if (sqlNumRows($result) == 1) { - // Ok, he want's to confirm now so we load some data - list($userid, $refid) = sqlFetchRow($result); - // Fetch user data - if (!fetchUserData($userid)) { - // Not found, should not happen - reportBug(__FILE__, __LINE__, 'User account ' . $userid . ' not found.'); - } // END - if + // One result should be found + if (ifSqlHasZeroNumRows($result)) { + // Nothing found or tried to confirm twice? + displayMessage('{--GUEST_CONFIRMED_TWICE--}'); + return; + } // END - if - // Load all data and add points - $content = getUserDataArray(); + // Okay, the user want's to confirm now so we load some data + list($userid, $refid) = sqlFetchRow($result); + // Fetch user data + if (!fetchUserData($userid)) { + // Not found, should not happen + reportBug(__FILE__, __LINE__, 'User account ' . $userid . ' not found.'); + } // END - if + + // Load all data and add points + $content = merge_array($content, getUserDataArray()); + + // Is 'user' updated? + if (isExtensionInstalledAndNewer('user', '0.6.3')) { + // Unlock his account (but only when it is on UNCONFIRMED!) + sqlQueryEscaped("UPDATE + `{?_MYSQL_PREFIX?}_user_data` +SET + `status`='CONFIRMED', + `user_hash`=NULL, + `confirmed_timestamp`=NOW(), + `confirmed_ip_address`='%s' +WHERE + `user_hash`='%s' AND + `status`='UNCONFIRMED' +LIMIT 1", + array( + determineRealRemoteAddress(), + $hash + ), __FILE__, __LINE__ + ); + } else { // Unlock his account (but only when it is on UNCONFIRMED!) sqlQueryEscaped("UPDATE `{?_MYSQL_PREFIX?}_user_data` @@ -601,68 +628,65 @@ WHERE `user_hash`='%s' AND `status`='UNCONFIRMED' LIMIT 1", - array($hash), __FILE__, __LINE__); - - // Was it updated? - if (!ifSqlHasZeroAffectedRows()) { - // Send email if updated - $message = loadEmailTemplate('guest_user_confirmed', $content, bigintval($userid)); - - // And send him right away the confirmation mail - sendEmail($userid, '{--GUEST_THANX_CONFIRM--}', $message); - - // Maybe he got "referraled"? - if ((isValidId($refid)) && ($refid != $userid)) { - // Select the referral userid - if (fetchUserData($refid)) { - // Update ref counter... - updateReferralCounter($refid); - - // If version matches add ref bonus to refid's account - if ((isExtensionInstalledAndNewer('bonus', '0.4.4')) && (isBonusRallyeActive())) { - // Add points (directly only!) - sqlQueryEscaped("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(getBonusRef(), $refid); - } // END - if + array( + $hash + ), __FILE__, __LINE__ + ); + } - // Add one-time referral bonus over referral system or directly - initReferralSystem(); - addPointsThroughReferralSystem('referral_bonus', $refid, getPointsRef(), bigintval($userid)); - } // END - if - } // END - if + // Was it updated? + if (ifSqlHasZeroAffectedRows()) { + // Nobody was found unter this hash key... or our new member want's to confirm twice? + displayMessage('{--GUEST_CONFIRMED_TWICE--}'); + return; + } // END - if + + // Load email template + $message = loadEmailTemplate('guest_user_confirmed', $content, bigintval($userid)); + + // And send him right away the confirmation mail + sendEmail($userid, '{--GUEST_THANX_CONFIRM--}', $message); - if (isExtensionActive('rallye')) { - // Add user to rallye (or not?) - addUserToReferralRallye(bigintval($userid)); + // Maybe he got "referraled"? + if ((isValidId($refid)) && ($refid != $userid)) { + // Select the referral userid + if (fetchUserData($refid)) { + // Update ref counter... + updateReferralCounter($refid); + + // If version matches add ref bonus to refid's account + if ((isExtensionInstalledAndNewer('bonus', '0.4.4')) && (isBonusRallyeActive())) { + // Add points (directly only!) + sqlQueryEscaped("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(getBonusRef(), $refid); } // END - if - // Account confirmed! - if (isExtensionActive('lead')) { - // Set special lead cookie - setSession('lead_userid', bigintval($userid)); + // Add one-time referral bonus over referral system or directly + initReferralSystem(); + addPointsThroughReferralSystem('referral_bonus', $refid, getPointsRef(), bigintval($userid)); + } // END - if + } // END - if - // 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)); + // @TODO Rewrite this to 2 filters as a possible redirect must always come last + if (isExtensionActive('rallye')) { + // Add user to rallye (or not?) + addUserToReferralRallye(bigintval($userid)); + } // END - if - // 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--}'; - } + // Account confirmed! + if (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--}'; + // Regular confirmation + $content['message'] = '{--GUEST_CONFIRMED_DONE--}'; + $content['userid'] = bigintval($userid); } // Load template @@ -875,8 +899,8 @@ function isUserSubIdAssignedToMember ($subId, $userid = NULL) { 'user_subids', 'id', 'userid', - true, - sprintf(" AND `id`=%s", bigintval($subId)) + TRUE, + sprintf(' AND `id`=%s', bigintval($subId)) ) == 1 ) ); @@ -923,6 +947,74 @@ function getTotalMemberSubIds () { return $GLOBALS[__FUNCTION__]; } +// Displays generic user registration form +function doDisplayGenericUserRegistrationForm () { + // Do this only if form is sent + if (isFormSent()) { + if (postRequestElement('agree') == '!') { + registerOutputFailedMessage('HAVE_TO_AGREE'); + } // END - if + + if (postRequestElement('email') == '!') { + registerOutputFailedMessage('ENTER_EMAIL'); + setPostRequestElement('email', ''); + } elseif (postRequestElement('email') == '?') { + registerOutputFailedMessage('GUEST_EMAIL_IS_ALREADY_REGISTERED'); + setPostRequestElement('email', ''); + } + + if (postRequestElement('surname') == '!') { + registerOutputFailedMessage('ENTER_SURNAME'); + setPostRequestElement('surname', ''); + } // END - if + + if (postRequestElement('family') == '!') { + registerOutputFailedMessage('ENTER_FAMILY'); + setPostRequestElement('family', ''); + } // END - if + + if ((postRequestElement('password1') == '!') && (postRequestElement('password2') == '!')) { + registerOutputFailedMessage('ENTER_BOTH_PASSWORDS'); + } elseif (postRequestElement('password1') == '!') { + registerOutputFailedMessage('ENTER_PASSWORD1'); + } elseif (postRequestElement('password2') == '!') { + registerOutputFailedMessage('ENTER_PASSWORD2'); + } + + if ((isset($GLOBALS['registration_weak_password'])) && ($GLOBALS['registration_weak_password'] === TRUE)) { + registerOutputFailedMessage('GUEST_WEAK_PASSWORD'); + } // END - if + + if ((isset($GLOBALS['registration_ip_timeout'])) && ($GLOBALS['registration_ip_timeout'] === TRUE)) { + registerOutputFailedMessage('REMOTE_ADDR_TIMEOUT'); + } // END - if + + if ((!empty($GLOBALS['registration_selected_cats'])) && ($GLOBALS['registration_selected_cats'] < getLeastCats())) { + registerOutputFailedMessage('', '{--CHOOSE_MORE_CATEGORIES--}'); + } // END - if + } // END - if + + // Generate birthday selection + $content['birthday_selection'] = generateDayMonthYearSelectionBox(postRequestElement('day'),postRequestElement('month'),postRequestElement('year')); + + // ZIP codes are numerical values + $content['zip'] = ''; + if ((isPostRequestElementSet('zip')) && (isValidNumber(postRequestElement('zip')))) { + $content['zip'] = bigintval(postRequestElement('zip')); + } // END - if + + // Other values + foreach (array('gender', 'surname', 'family', 'street_nr', 'city', 'email') as $entry) { + $content[$entry] = sqlEscapeString(postRequestElement($entry)); + } // END - foreach + + // Set must-fillout fields + $content = runFilterChain('register_must_fillout', $content); + + // Display registration form + loadTemplate('guest_register', FALSE, $content); +} + //----------------------------------------------------------------------------- // EL code functions //----------------------------------------------------------------------------- @@ -948,7 +1040,7 @@ function doExpressionUser ($data) { // Fix all together $functionName = "getFetchedUserData('userid', " . $data['matches'][4][$data['key']] . ", '" . $data['callback'] . "')"; } - } elseif ((!empty($data['callback'])) && (isUserDataValid())) { + } elseif ((!empty($data['callback'])) && (isValidUserData())) { // "Call-back" alias column for current logged in user's data $functionName = "getUserData('" . $data['callback'] . "')"; }