Index: branches/5.2.x/units/private_messages/private_message_tp.php
===================================================================
--- branches/5.2.x/units/private_messages/private_message_tp.php	(revision 15154)
+++ branches/5.2.x/units/private_messages/private_message_tp.php	(revision 15155)
@@ -1,164 +1,164 @@
 <?php
 /**
 * @version	$Id$
 * @package	In-Bulletin
 * @copyright	Copyright (C) 1997 - 2009 Intechnic. All rights reserved.
 * @license      GNU/GPL
 * In-Portal is Open Source software.
 * This means that this software may have been modified pursuant
 * the GNU General Public License, and as distributed it includes
 * or is derivative of works licensed under the GNU General Public License
 * or other free or open source software licenses.
 * See http://www.in-portal.org/license for copyright notices and details.
 */
 
 	defined('FULL_PATH') or die('restricted access!');
 
 	class PrivateMessageTagProcessor extends kDBTagProcessor {
 
 		/**
 		 * Checks if private message is unread
 		 *
 		 * @param Array $params
 		 * @return bool
 		 */
 		function IsNew($params)
 		{
-			$object =& $this->getObject();
+			$object = $this->getObject($params);
 			/* @var $object kDBItem */
 
 			return $object->GetDBField('Status') < PM_STATUS_READ;
 		}
 
 		/**
 		 * Allows to check what folder is currently active
 		 *
 		 * @param Array $params
 		 * @return bool
 		 */
 		function FolderSelected($params)
 		{
 			$folder_mapping = Array ('inbox' => PM_FOLDER_INBOX, 'sent' => PM_FOLDER_SENT);
 
 			return (int)$this->Application->GetVar('folder_id') == $folder_mapping[ strtolower($params['folder']) ];
 		}
 
 		/**
 		 * Creates link to specific private message folder
 		 *
 		 * @param Array $params
 		 * @return string
 		 */
 		function FolderLink($params)
 		{
 			$folder_mapping = Array ('inbox' => PM_FOLDER_INBOX, 'sent' => PM_FOLDER_SENT);
 			$params['folder_id'] = $folder_mapping[ strtolower($params['folder']) ];
 			unset($params['folder']);
 
 			return $this->Application->ProcessParsedTag('m', 'Link', $params);
 		}
 
 		function MessageSubject($params)
 		{
-			$object =& $this->getObject();
+			$object = $this->getObject($params);
 			/* @var $object kDBItem */
 
 			$params['field'] = 'Subject';
 			$value = $this->Field($params);
 
 			if (!$value && isset($params['empty_title'])) {
 				return '['.$this->Application->Phrase($params['empty_title']).']';
 			}
 
 			return $value;
 		}
 
 		function MessageBody($params)
 		{
-			$object =& $this->getObject($params);
+			$object = $this->getObject($params);
 
 			$post_helper = $this->Application->recallObject('PostHelper');
 			/* @var $post_helper PostHelper */
 
 			// 2. parse post body
 			$sub_blocks = Array (
 				'smileys' => $params['smiley_render_as'],
 				'bbcode' => $params['bbcode_render_as'],
 			);
 
 			return $post_helper->parsePostBody($object->GetDBField('Body'), $object->GetDBField('Options'), $sub_blocks);
 		}
 
 		function DeleteLink($params)
 		{
 			$params['pass'] = 'm,'.$this->getPrefixSpecial();
 			$params[$this->getPrefixSpecial().'_event'] = 'OnDelete';
 			return $this->Application->ProcessParsedTag('m', 'Link', $params);
 		}
 
 		function ReplyLink($params)
 		{
 			$params['reply_to'] = $this->Application->GetVar($this->getPrefixSpecial().'_id');
 			return $this->Application->ProcessParsedTag('m', 'Link', $params);
 		}
 
 		/**
 		 * User can reply message only in case, when it is not it's own message
 		 *
 		 * @param Array $params
 		 * @return bool
 		 */
 		function CanReplyMessage($params)
 		{
-			$object =& $this->getObject();
+			$object = $this->getObject($params);
 			/* @var $object kDBItem */
 
 			return $object->GetDBField('FromId') != $this->Application->RecallVar('user_id');
 		}
 
 		/**
 		 * Marks private message as read
 		 *
 		 * @param Array $params
 		 */
 		function MarkAsRead($params)
 		{
-			$object =& $this->getObject();
+			$object = $this->getObject($params);
 			/* @var $object kDBItem */
 
 			if ($object->GetDBField('Status') < PM_STATUS_READ) {
 				$object->SetDBField('Status', PM_STATUS_READ);
 				$object->Update();
 			}
 		}
 
 		/**
 		 * Returns link to private message sender/recipient public profile
 		 *
 		 * @param Array $params
 		 * @return string
 		 */
 		function ProfileLink($params)
 		{
 			$user_field = strtolower($params['type']) == 'from' ? 'FromId' : 'ToId';
 			unset($params['type']);
 
-			$object =& $this->getObject($params);
+			$object = $this->getObject($params);
 			$params['user_id'] = $object->GetDBField($user_field);
 
 			return $this->Application->ProcessParsedTag('m', 'Link', $params);
 		}
 
 		/**
 		 * Returns link for sending private message from user's public profile page
 		 *
 		 * @param Array $params
 		 * @return string
 		 */
 		function SendMessageLink($params)
 		{
 			$params['user_id'] = $this->Application->GetVar('user_id');
 			return $this->Application->ProcessParsedTag('m', 'Link', $params);
 		}
 
 	}
\ No newline at end of file
Index: branches/5.2.x/units/topics/topics_tag_processor.php
===================================================================
--- branches/5.2.x/units/topics/topics_tag_processor.php	(revision 15154)
+++ branches/5.2.x/units/topics/topics_tag_processor.php	(revision 15155)
@@ -1,79 +1,79 @@
 <?php
 /**
 * @version	$Id$
 * @package	In-Bulletin
 * @copyright	Copyright (C) 1997 - 2009 Intechnic. All rights reserved.
 * @license      GNU/GPL
 * In-Portal is Open Source software.
 * This means that this software may have been modified pursuant
 * the GNU General Public License, and as distributed it includes
 * or is derivative of works licensed under the GNU General Public License
 * or other free or open source software licenses.
 * See http://www.in-portal.org/license for copyright notices and details.
 */
 
 	defined('FULL_PATH') or die('restricted access!');
 
 	class TopicsTagProcessor extends kCatDBTagProcessor {
 
 		function TopicLink($params)
 		{
 			return $this->ItemLink($params, 'topic');
 		}
 
 		function ListTopics($params)
 		{
 			return $this->PrintList2($params);
 		}
 
 		function PostingLink($params)
 		{
 			$item_id = getArrayValue($params, 'posting_id');
 			if (!$item_id) {
 				$item_id = $this->Application->GetVar($this->Prefix.'_post_id');
 			}
 			$params[$this->Prefix.'_post_id'] = $item_id;
 			return $this->TopicLink($params);
 		}
 
 		function PostingDeleteLink($params)
 		{
 			$params['Action'] = 'bb_post_delete';
 			return $this->PostingLink($params);
 		}
 
 		/**
 		 * Returns topic replies count
 		 *
 		 * @param Array $params
 		 * @return int
 		 */
 		function TopicReplies($params)
 		{
-			$object =& $this->getObject($params);
+			$object = $this->getObject($params);
 
 			// -1 - don't count post created together with topic
 			return $object->GetDBField('Posts') ? $object->GetDBField('Posts') - 1 : 0;
 		}
 
 		/**
 		 * Returns topic lock statis
 		 *
 		 * @param Array $params
 		 * @return bool
 		 */
 		function IsLocked($params)
 		{
-			$object =& $this->getObject($params);
+			$object = $this->getObject($params);
 
 			return $object->GetDBField('TopicType') == 0;
 		}
 
 		function LockToggleLink($params)
 		{
 			$params[$this->Prefix.'_event'] = 'OnTopicLockToggle';
 			$params['pass'] = 'm,'.$this->Prefix;
 
 			return $this->Application->ProcessParsedTag('m', 'Link', $params);
 		}
 	}
\ No newline at end of file
Index: branches/5.2.x/units/posts/post_tp.php
===================================================================
--- branches/5.2.x/units/posts/post_tp.php	(revision 15154)
+++ branches/5.2.x/units/posts/post_tp.php	(revision 15155)
@@ -1,311 +1,311 @@
 <?php
 /**
 * @version	$Id$
 * @package	In-Bulletin
 * @copyright	Copyright (C) 1997 - 2009 Intechnic. All rights reserved.
 * @license      GNU/GPL
 * In-Portal is Open Source software.
 * This means that this software may have been modified pursuant
 * the GNU General Public License, and as distributed it includes
 * or is derivative of works licensed under the GNU General Public License
 * or other free or open source software licenses.
 * See http://www.in-portal.org/license for copyright notices and details.
 */
 
 	defined('FULL_PATH') or die('restricted access!');
 
 	class PostTagProcessor extends kDBTagProcessor {
 
 		function ListPosts($params)
 		{
 			$parent_prefix = $this->Application->getUnitOption($this->Prefix, 'ParentPrefix');
 			$main_object = $this->Application->recallObject($parent_prefix);
 			/* @var $main_object kCatDBItem */
 
 			if ($main_object->isLoaded()) {
 				$main_object->RegisterHit();
 			}
 
 			return $this->PrintList2($params);
 		}
 
 		/**
 		 * Returns link to post author public profile
 		 *
 		 * @param Array $params
 		 * @return string
 		 */
 		function ProfileLink($params)
 		{
-			$object =& $this->getObject($params);
+			$object = $this->getObject($params);
 			$params['user_id'] = $object->GetDBField('CreatedById');
 
 			return $this->Application->ProcessParsedTag('m', 'Link', $params);
 		}
 
 		function PosterField($params)
 		{
 			static $posters = null;
 
-			$object =& $this->getObject($params);
+			$object = $this->getObject($params);
 			/* @var $object kDBItem */
 
 			$poster = $this->Application->recallObject('u.poster', null, Array('skip_autoload' => true));
 			/* @var $poster UsersItem */
 
 			if ( !isset($posters) ) {
 				$poster_ids = array_unique( $object->GetCol('CreatedById') );
 
 				$sql = 	$poster->GetSelectSQL() . '
 						WHERE ' . $poster->TableName . '.' . $poster->IDField . ' IN (' . implode(',', $poster_ids) . ')';
 				$posters = $this->Conn->Query($sql, $poster->IDField);
 			}
 
 			$poster_id = $object->GetDBField('CreatedById');
 
 			if ($poster_id <= 0) {
 				// guest and root users
 				return '';
 			}
 
 			if ($poster->GetID() != $poster_id) {
 				// previous poster differs from requested
 				$poster->LoadFromHash( $posters[$poster_id] );
 			}
 
 			return $this->Application->ProcessParsedTag('u.poster', 'Field', $params);
 		}
 
 		/**
 		 * Checks if post is made by real user (not Guest or root)
 		 *
 		 * @param Array $params
 		 * @return bool
 		 */
 		function PosterFound($params)
 		{
-			$object =& $this->getObject($params);
+			$object = $this->getObject($params);
 
 			return $object->GetDBField('CreatedById') > 0;
 		}
 
 		/**
 		 * Posts count created by current poster
 		 *
 		 * @param Array $params
 		 * @return int
 		 */
 		function PosterPostsCount($params)
 		{
 			static $posts_count = null;
 
-			$object =& $this->getObject($params);
+			$object = $this->getObject($params);
 
 			if (!isset($posts_count)) {
 				$poster_ids = array_unique($object->GetCol('CreatedById'));
 
 				$sql = 'SELECT VariableValue, PortalUserId
 						FROM '.TABLE_PREFIX.'UserPersistentSessionData
 						WHERE PortalUserId IN ('.implode(',', $poster_ids).') AND VariableName = "bb_posts"';
 				$posts_count = $this->Conn->GetCol($sql, 'PortalUserId');
 			}
 
 			return $posts_count[$object->GetDBField('CreatedById')];
 		}
 
 		function PostSubject($params)
 		{
-			$object =& $this->getObject($params);
+			$object = $this->getObject($params);
 
 			$post_helper = $this->Application->recallObject('PostHelper');
 			/* @var $post_helper PostHelper */
 
 			return $post_helper->CensorText( $object->GetDBField('Subject') );
 		}
 
 		function PostBody($params)
 		{
-			$object =& $this->getObject($params);
+			$object = $this->getObject($params);
 
 			$post_helper = $this->Application->recallObject('PostHelper');
 			/* @var $post_helper PostHelper */
 
 			$body = $object->GetDBField('PostingText');
 
 			// 2. parse post body
 			$sub_blocks = Array (
                 	'smileys' => $params['smiley_render_as'],
                 	'bbcode' => $params['bbcode_render_as'],
                 	'quote' => $params['quote_render_as'],
                 );
 			$body = $post_helper->parsePostBody($body, $object->GetDBField('Options'), $sub_blocks);
 
 			return $body;
 		}
 
 		/**
 		 * Checks if poster signature needs to be shown together with post
 		 *
 		 * @param Array $params
 		 * @return bool
 		 */
 		function ShowPostSignature($params)
 		{
-			$object =& $this->getObject($params);
+			$object = $this->getObject($params);
 			$post_options = $object->GetDBField('Options');
 
 			$post_helper = $this->Application->recallObject('PostHelper');
 			/* @var $post_helper PostHelper */
 
 			// show poster signature in this post
 			if ($post_helper->GetPostOption('show_sig', $post_options)) {
 				// logged-in user wishes to view signatures in posts
                 $show_other_signatures = $this->Application->RecallPersistentVar('bb_signatures');
                 if ($show_other_signatures) {
                 	// don't show signature when it is empty
                 	$signature = $this->getUserSignature($object->GetDBField('CreatedById'));
                 	return strlen(trim($signature)) ? true : false;
                 }
 			}
 
 			return false;
 		}
 
 		/**
 		 * Returns parsed poster (from current post) signature
 		 *
 		 * @param Array $params
 		 * @return string
 		 */
 		function PostSignature($params)
 		{
-			$object =& $this->getObject($params);
+			$object = $this->getObject($params);
 
 			$post_helper = $this->Application->recallObject('PostHelper');
 			/* @var $post_helper PostHelper */
 
 			$sub_blocks = Array (
 				'smileys' => $params['smiley_render_as'],
 				'bbcode' => $params['bbcode_render_as'],
 			);
 
 			$signature = $this->getUserSignature($object->GetDBField('CreatedById'));
 			return $post_helper->parsePostBody($signature, $object->GetDBField('Options'), $sub_blocks);
 		}
 
 		/**
 		 * Returns user signature (cached for all viewed posts on page)
 		 *
 		 * @param int $user_id
 		 * @return string
 		 */
 		function getUserSignature($user_id)
 		{
 			static $user_signatures = null;
 
-			$object =& $this->getObject();
+			$object = $this->getObject();
 
 			if (!isset($user_signatures)) {
 				$poster_ids = array_unique($object->GetCol('CreatedById'));
 
 				$sql = 'SELECT VariableValue, PortalUserId
 						FROM '.TABLE_PREFIX.'UserPersistentSessionData
 						WHERE PortalUserId IN ('.implode(',', $poster_ids).') AND VariableName = "my_signature"';
 				$user_signatures = $this->Conn->GetCol($sql, 'PortalUserId');
 			}
 
 			$poster_id = $object->GetDBField('CreatedById');
 			return isset($user_signatures[$poster_id]) ? $user_signatures[$poster_id] : '';
 		}
 
 		/**
 		 * Creates link to individual post in topic
 		 *
 		 * @param Array $params
 		 * @return string
 		 */
 		function PostLink($params)
 		{
 			$params['pass'] = 'm,bb,bb-post';
 
 			return $this->Application->ProcessParsedTag('m', 'Link', $params);
 		}
 
 		function ReplyQuotedLink($params)
 		{
-			$object =& $this->getObject($params);
+			$object = $this->getObject($params);
 
 			$params['pass'] = 'm,bb';
 			$params['reply_to'] = $object->GetID();
 
 			return $this->Application->ProcessParsedTag('m', 'Link', $params);
 		}
 
 		/**
 		 * Checks if user have one of required permissions
 		 *
 		 * @param Array $params
 		 * @return bool
 		 */
 		function HasPermission($params)
 		{
 			static $category_path = null;
 
 			if (!isset($category_path)) {
 				// get topic category
 				$parent_prefix = $this->Application->getUnitOption($this->Prefix, 'ParentPrefix');
 				$parent_item = $this->Application->recallObject($parent_prefix, null, Array ('raise_warnings' => 0));
 				$category_path = $parent_item->isLoaded() ? $parent_item->GetDBField('ParentPath') : $this->Application->GetVar('m_cat_id');
 			}
 
 			$perm_helper = $this->Application->recallObject('PermissionsHelper');
 			/* @var $perm_helper kPermissionsHelper */
 
 			$params['raise_warnings'] = 0;
-			$object =& $this->getObject($params);
+			$object = $this->getObject($params);
 			/* @var $object kDBItem */
 
 			// 1. category restriction
 			$params['cat_id'] = $category_path;
 
 			// 2. owner restriction
 			$is_owner = $object->GetDBField('CreatedById') == $this->Application->RecallVar('user_id');
 
 			return $perm_helper->TagPermissionCheck($params, $is_owner);
 		}
 
 		function CategoryItemCount($params)
 		{
 			$count_helper = $this->Application->recallObject('CountHelper');
 			/* @var $count_helper kCountHelper */
 
 			return $count_helper->CategoryItemCount('bb', $params, 'SUM(Posts)'); //  - COUNT(TopicId)
 		}
 
 		function ItemCount($params)
 		{
 			$count_helper = $this->Application->recallObject('CountHelper');
 			/* @var $count_helper kCountHelper */
 
 			$today_only = isset($params['today']) && $params['today'];
 			return $count_helper->ItemCount('bb', $today_only, 'SUM(Posts)'); // - COUNT(TopicId)
 		}
 
 		/**
 		 * Preserve main item id in subitem pagination url
 		 *
 		 * @param Array $params
 		 * @return string
 		 */
 		function PageLink($params)
 		{
-			$object =& $this->getObject($params);
+			$object = $this->getObject($params);
 			/* @var kDBList */
 
 			$parent_info = $object->getLinkedInfo();
 			if ($parent_info['ParentId'] > 0) {
 				$params['pass'] = 'm,'.$this->getPrefixSpecial().','.$parent_info['ParentPrefix'];
 			}
 			return parent::PageLink($params);
 		}
 	}
\ No newline at end of file
Index: branches/5.2.x/units/polls/poll_tp.php
===================================================================
--- branches/5.2.x/units/polls/poll_tp.php	(revision 15154)
+++ branches/5.2.x/units/polls/poll_tp.php	(revision 15155)
@@ -1,119 +1,119 @@
 <?php
 /**
 * @version	$Id$
 * @package	In-Bulletin
 * @copyright	Copyright (C) 1997 - 2009 Intechnic. All rights reserved.
 * @license      GNU/GPL
 * In-Portal is Open Source software.
 * This means that this software may have been modified pursuant
 * the GNU General Public License, and as distributed it includes
 * or is derivative of works licensed under the GNU General Public License
 * or other free or open source software licenses.
 * See http://www.in-portal.org/license for copyright notices and details.
 */
 
 	defined('FULL_PATH') or die('restricted access!');
 
 	class PollTagProcessor extends kDBTagProcessor {
 
 		/**
 		 * Allows to tell if user from current ip has voted already for current poll
 		 *
 		 * @param Array $params
 		 * @return bool
 		 */
 		function HasVoted($params)
 		{
-			$object =& $this->getObject($params);
+			$object = $this->getObject($params);
 			/* @var $object kDBItem */
 
 			if (!$object->GetDBField('AllowMultipleVotings')) {
 				$sql = 'SELECT StatisticsId
 						FROM '.TABLE_PREFIX.'PollsStatistics
 						WHERE PollId = '.$object->GetID().' AND CreatedById = '.$this->Application->RecallVar('user_id').' AND UserIP = '.$this->Conn->qstr(getenv('REMOTE_ADDR'));
 				return $this->Conn->GetOne($sql) > 0;
 			}
 
 			return false;
 		}
 
 		/**
 		 * Allows to tell if user from current ip has voted already for current poll
 		 *
 		 * @param Array $params
 		 * @return bool
 		 */
 		function HasCommented($params)
 		{
-			$object =& $this->getObject($params);
+			$object = $this->getObject($params);
 			/* @var $object kDBItem */
 
 			$spam_helper = $this->Application->recallObject('SpamHelper');
 			/* @var $spam_helper SpamHelper */
 
 			$spam_helper->InitHelper($object->GetID(), 'PollComment', 0); // PollId used for SpamControl only
 
 			return $spam_helper->InSpamControl();
 		}
 
 		/**
 		 * Prints out only filled in answers of current poll
 		 *
 		 * @param Array $params
 		 * @return string
 		 */
 		function PrintPoll($params)
 		{
-			$object =& $this->getObject($params);
+			$object = $this->getObject($params);
 
 			$sql = 'SELECT COUNT(AnswerNum), AnswerNum
 					FROM '.TABLE_PREFIX.'PollsStatistics
 					WHERE PollId = '.$object->GetID().'
 					GROUP BY AnswerNum';
 			$statistics = $this->Conn->GetCol($sql, 'AnswerNum');
 
 			$total_votes = array_sum($statistics);
 
 			$block_params = $this->prepareTagParams($params);
 			$block_params['name'] = $params['render_as'];
 
 			$i = 1;
 			$ret = '';
 			while ($i < 8) {
 				$answer = $object->GetDBField('Answer'.$i);
 				if ($answer) {
 					$answer_votes = isset($statistics[$i]) ? $statistics[$i] : 0;
 					if ($total_votes > 0) {
 						$block_params['percent'] = round((100 * $answer_votes) / $total_votes, 0);
 					}
 					else {
 						$block_params['percent'] = 0;
 					}
 
 					$block_params['answer'] = $answer;
 					$block_params['answer_num'] = $i;
 
 					$ret .= $this->Application->ParseBlock($block_params);
 				}
 				$i++;
 			}
 
 			return $ret;
 		}
 
 		/**
 		 * Prints link to comments of of current poll
 		 *
 		 * @param Array $params
 		 * @return string
 		 */
 		function CommentsLink($params)
 		{
-			$object =& $this->getObject($params);
+			$object = $this->getObject($params);
 
 			$params['pass'] = 'm,poll';
 			$params['poll_id']	= $object->GetID();
 
 		 	return $this->Application->ProcessParsedTag('m', 'Link', $params);
 		}
 	}
\ No newline at end of file