-// Determines referral id and sets it
-function determineReferralId () {
- // Do we have it already detected?
- if (isReferralIdValid()) {
- // Do not determine it, just return it
- return getReferralId();
- } // END - if
-
- // Skip this in non-html-mode and outside ref.php
- if ((!isHtmlOutputMode()) && (basename($_SERVER['PHP_SELF']) != 'ref.php')) {
- return false;
- } // END - if
-
- // Check if refid is set
- if (isReferralIdValid()) {
- // This is fine...
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Using refid from GLOBALS (' . getReferralId() . ')');
- } elseif (isPostRequestElementSet('refid')) {
- // Get referral id from POST element refid
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Using refid from POST data (' . postRequestElement('refid') . ')');
- setReferralId(secureString(postRequestElement('refid')));
- } elseif (isGetRequestElementSet('refid')) {
- // Get referral id from GET parameter refid
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Using refid from GET data (' . getRequestElement('refid') . ')');
- setReferralId(secureString(getRequestElement('refid')));
- } elseif (isGetRequestElementSet('ref')) {
- // Set refid=ref (the referral link uses such variable)
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Using ref from GET data (' . getRequestElement('refid') . ')');
- setReferralId(secureString(getRequestElement('ref')));
- } elseif ((isGetRequestElementSet('user')) && (basename($_SERVER['PHP_SELF']) == 'click.php')) {
- // The variable user comes from click.php
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Using user from GET data (' . getRequestElement('user') . ')');
- setReferralId(bigintval(getRequestElement('user')));
- } elseif ((isSessionVariableSet('refid')) && (isValidUserId(getSession('refid')))) {
- // Set session refid as global
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Using refid from SESSION data (' . getSession('refid') . ')');
- setReferralId(bigintval(getSession('refid')));
- } elseif ((isExtensionInstalledAndNewer('user', '0.3.4')) && (isRandomReferralIdEnabled())) {
- // Select a random user which has confirmed enougth mails
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Checking random referral id');
- setReferralId(determineRandomReferralId());
- } elseif ((isExtensionInstalledAndNewer('sql_patches', '0.1.2')) && (isValidUserId(getDefRefid()))) {
- // Set default refid as refid in URL
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Using default refid (' . getDefRefid() . ')');
- setReferralId(getDefRefid());
- } else {
- // No default id when sql_patches is not installed or none set
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Using NULL as refid');
- setReferralId(NULL);
- }
-
- // Set cookie when default refid > 0
- if ((!isSessionVariableSet('refid')) || (!isValidUserId(getReferralId())) || ((!isValidUserId(getSession('refid'))) && (isExtensionInstalledAndNewer('sql_patches', '0.1.2')) && (isValidUserId(getDefRefid())))) {
- // Default is not found
- $found = false;
-
- // Do we have nickname or userid set?
- if ((isExtensionActive('nickname')) && (isNicknameUsed(getReferralId()))) {
- // Nickname in URL, so load the id
- $found = fetchUserData(getReferralId(), 'nickname');
-
- // If we found it, use the userid as referral id
- if ($found === true) {
- // Set the userid as 'refid'
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Using refid from user account by nickname (' . getUserData('userid') . ')');
- setReferralId(getUserData('userid'));
- } // END - if
- } elseif (isValidUserId(getReferralId())) {
- // Direct userid entered
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Using direct userid (' . getReferralId() . ')');
- $found = fetchUserData(getReferralId());
- }
-
- // Is the record valid?
- if ((($found === false) || (!isUserDataValid())) && (isExtensionInstalledAndNewer('sql_patches', '0.1.2'))) {
- // No, then reset referral id
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Using default refid (' . getDefRefid() . ')');
- setReferralId(getDefRefid());
- } // END - if
-
- // Set cookie
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Saving refid to session (' . getReferralId() . ') #1');
- setSession('refid', getReferralId());
- } elseif ((!isReferralIdValid()) || (!fetchUserData(getReferralId()))) {
- // Not valid!
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Not valid referral id (' . getReferralId() . '), setting NULL in session');
- setReferralId(NULL);
- setSession('refid', NULL);
- } else {
- // Set it from GLOBALS array in session
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Saving refid to session (' . getReferralId() . ') #2');
- setSession('refid', getReferralId());
- }
-
- // Return determined refid
- return getReferralId();
-}
-