Index: branches/5.2.x/units/affiliates/affiliates_tag_processor.php
===================================================================
--- branches/5.2.x/units/affiliates/affiliates_tag_processor.php	(revision 14655)
+++ branches/5.2.x/units/affiliates/affiliates_tag_processor.php	(revision 14656)
@@ -1,166 +1,174 @@
 <?php
 /**
 * @version	$Id$
 * @package	In-Commerce
 * @copyright	Copyright (C) 1997 - 2009 Intechnic. All rights reserved.
 * @license	Commercial License
 * This software is protected by copyright law and international treaties.
 * Unauthorized reproduction or unlicensed usage of the code of this program,
 * or any portion of it may result in severe civil and criminal penalties,
 * and will be prosecuted to the maximum extent possible under the law
 * See http://www.in-portal.org/commercial-license for copyright notices and details.
 */
 
 	defined('FULL_PATH') or die('restricted access!');
 
 	class AffiliatesTagProcessor extends kDBTagProcessor {
 
 		/**
 		 * Returns link to be placed on other sites
 		 *
 		 * @param Array $params
 		 * @return string
 		 */
 		function GetAffiliateLink($params)
 		{
 			$object =& $this->getObject($params);
+			/* @var $object kDBItem */
+
 			$params['affiliate'] = $object->GetDBField('AffiliateCode');
 			$params['prefix'] = '_FRONT_END_';
 			$params['index_file'] = 'index.php';
+
+			// to build non-SSL link without SID in case, when SSL is enabled (or SSL domain doesn't match non-SSL domain)
 			$params['__SSL__'] = 0;
-			$params['__NO_SID__'] = 1; // don't work
+			$params['__NO_SID__'] = 1;
 
 			$link = $this->Application->ProcessParsedTag('m', 'Link', $params);
 
 			// remove env manually
 			return preg_replace('/(.*)\/index.php\?env=(.*?)&amp;(.*)/', '\\1/index.php?\\3', $link);
 		}
 
 		/**
 		 * Returns link to be placed on other sites (for current user)
 		 *
 		 * @param Array $params
 		 * @return string
 		 */
 		function GetUserAffiliateLink($params)
 		{
-			$object =& $this->Application->recallObject( $this->getPrefixSpecial(), $this->Prefix, array_merge($params, array('skip_autoload'=>true)) );
-			$object->Load(array('PortalUserId' => $this->Application->RecallVar('user_id')));
+			$params['skip_autoload'] = true;
 
-//			return $this->GetAffiliateLink($params);
+			$object =& $this->getObject($params);
+			/* @var $object kDBItem */
+
+			$object->Load(array('PortalUserId' => $this->Application->RecallVar('user_id')));
 
 			$params['index_file'] = 'index.php';
 			$params['affiliate'] = $object->GetDBField('AffiliateCode');
+
+			// to build non-SSL link without SID in case, when SSL is enabled (or SSL domain doesn't match non-SSL domain)
 			$params['__SSL__'] = 0;
-			$params['__NO_SID__'] = 1; // don't work
+			$params['__NO_SID__'] = 1;
 
 			$link = $this->Application->ProcessParsedTag('m', 'Link', $params);
 
 			// remove env manually
 			return preg_replace('/(.*)\/index.php\?env=(.*?)&amp;(.*)/', '\\1/index.php?\\3', $link);
 		}
 
 		/**
 		 * [Aggregated Tag] Returns true if user is affiliate
 		 *
 		 * @param Array $params
 		 * @return bool
 		 * @access protected
 		 */
 		protected function User_IsAffiliate($params)
 		{
 			$object =& $this->Application->recallObject($this->Prefix . '.user');
 			/* @var $object kDBItem */
-			
+
 			return $object->isLoaded();
 		}
 
 		/**
 		 * [Aggregated Tag] Checks, that affiliate record for current user exists and is active
 		 *
 		 * @param $params
 		 * @return bool
 		 * @access protected
 		 */
 		protected function User_AffiliateIsActive($params)
 		{
 			$object =& $this->Application->recallObject($this->Prefix . '.user');
 			/* @var $object kDBItem */
 
 			return $object->isLoaded() && ($object->GetDBField('Status') == STATUS_ACTIVE);
 		}
 
 		/**
 		 * Returns url for editing user from current record
 		 *
 		 * @param Array $params
 		 * @return string
 		 */
 		function UserLink($params)
 		{
 			$object =& $this->getObject($params);
 			$user_id = $object->GetDBField('PortalUserId');
 
 			if ($user_id) {
 				$url_params =  Array (
 					'm_opener' => 'd',
 					'u_mode' => 't',
 					'u_event' => 'OnEdit',
 					'u_id' => $user_id,
 					'pass' => 'all,u'
 				);
 
 				return $this->Application->HREF($params['edit_template'], '', $url_params);
 			}
 		}
 
 		function CurrentUserAffiliateField($params)
 		{
 			$object =& $this->Application->recallObject( $this->getPrefixSpecial(), $this->Prefix, array_merge($params, Array('skip_autoload' => true)) );
 			$object->Load( Array('PortalUserId'=>$this->Application->RecallVar('user_id')) );
 			return $object->GetField($this->SelectParam($params, 'field,name'));
 		}
 
 		function IsAffiliateOrRegisterAsAffiliateAllowed($params)
 		{
 			$object =& $this->Application->recallObject($this->Prefix . '.user');
 			/* @var $object kDBItem */
 
 			return $this->Application->ConfigValue('Comm_RegisterAsAffiliate') || $object->isLoaded() ? 1 : 0;
 		}
 
 		/**
 		 * [AGGREGATED TAG] Checks if affiliate registration is allowed
 		 *
 		 * @param Array $params
 		 * @return int
 		 */
 		function AllowAffiliateRegistration($params)
 		{
 			return $this->Application->ConfigValue('Comm_RegisterAsAffiliate') ? 1 : 0;
 		}
 
 		function Main_RequireAffiliate($params)
 		{
 			$t = $params['registration_template'];
 
 			if ( !$this->User_IsAffiliate($params) ) {
 				$redirect_params = Array ('next_template' => $this->Application->GetVar('t'));
 				$this->Application->Redirect($t, $redirect_params);
 			}
 		}
 
 		/**
 		 * Calls OnNew event from template, when no other event submitted
 		 *
 		 * @param Array $params
 		 */
 		function PresetFormFields($params)
 		{
 			$prefix = $this->getPrefixSpecial();
-			
+
 			if ( !$this->Application->GetVar($prefix . '_event') && !$this->Application->GetVar('u.register_event') ) {
 				$this->Application->HandleEvent(new kEvent($prefix . ':OnNew'));
 			}
 		}
 	}
\ No newline at end of file