<?xml version="1.0" encoding="ISO-8859-1"?>

<product productid="chgtpowner38" active="1">
	<title>Change Posts Owner</title>
	<description>Changes the owner and date of selected posts and threads</description>
	<version>1.8.0</version>
	<url><![CDATA[http://www.vbulletin.org/forum/misc.php?do=producthelp&pid=chgtpowner38]]></url>
	<versioncheckurl><![CDATA[http://www.vbulletin.org/forum/misc.php?do=productcheck&pid=chgtpowner38]]></versioncheckurl>
	<codes>
		<code version="*">
			<installcode><![CDATA[
$oldproduct = "changetpowner";
$check = $db->query_first_slave("SELECT * FROM ".TABLE_PREFIX."product WHERE productid = '".$db->escape_string($oldproduct )."'");
if ($check['version'])
{
	delete_product($oldproduct );
}
]]></installcode>
			<uninstallcode />
			</code>
	</codes>
	<templates>
		<template name="forumdisplay_changethreadsowner_link" templatetype="template" date="1149171180" username="Phalynx" version="1.6.0"><![CDATA[
		<option value="changethreadsowner">$vbphrase[changethreadsowner_link]</option>]]></template>
		<template name="showthread_changepostsowner_link" templatetype="template" date="1149171180" username="Phalynx" version="1.6.0"><![CDATA[
		<option value="changepostsowner">$vbphrase[changepostsowner_link]</option>]]></template>
		<template name="forumdisplay_changethreadsowner" templatetype="template" date="1149171180" username="Phalynx" version="1.7.0"><![CDATA[
<form action="inlinemod.php" method="post" name="vbform">
<input type="hidden" name="s" value="$session[sessionhash]" />
<input type="hidden" name="securitytoken" value="$bbuserinfo[securitytoken]" />

<if condition="$_POST['do']=='changethreadsowner'">
<input type="hidden" name="threadids" value="$threadids" />
<input type="hidden" name="do" value="dochangethreadsowner" />
</if>

<if condition="$_POST['do']=='changepostsowner'">
<input type="hidden" name="postids" value="$postids" />
<input type="hidden" name="do" value="dochangepostsowner" />
</if>

<input type="hidden" name="url" value="$url"  />

<table class="tborder" cellpadding="$stylevar[cellpadding]" cellspacing="$stylevar[cellspacing]" border="0" width="100%" align="center">
<tr>
	<td class="tcat">$vbphrase[changethreadsowner_title]</td>
</tr>
<tr>
	<td class="panelsurround" align="center">
	<div class="panel">
		<div style="width:$stylevar[formwidth]" align="$stylevar[left]">
	
		<!-- newthreadowner field -->
		<fieldset class="fieldset">
			<legend>$vbphrase[changethreadsowner_name_legend]</legend>
				<div>$vbphrase[changethreadsowner_name]:</div>
				<div id="changethreadowner"><input accesskey="t" type="text" id="changethreadowner_txt" name="newthreadowner" cols="50" tabindex="1"/></div>
				$vbphrase[changethreadsowner_note]
				<if condition="$show['popups']">
					<div class="vbmenu_popup" id="changethreadowner_menu" style="display:none; z-index:50"></div>
					<script type="text/javascript" src="clientscript/vbulletin_ajax_namesugg.js"></script>
					<script type="text/javascript">
					<!--
					vbmenu_register('changethreadowner', true);
					recip_sugg = new vB_AJAX_NameSuggest('recip_sugg', 'changethreadowner_txt', 'changethreadowner');
					recip_sugg.allow_multiple = false;
					//-->
					</script>
				</if>
		</fieldset>
		<!-- / newthreadowner field -->
		
<fieldset class="fieldset">
			<legend>$vbphrase[changethreadsowner_unregistered_legend]</legend>
			<div style="padding:$stylevar[formspacer]px">
				<div class="fieldset">
					<input class="bginput" type="checkbox" name="setunregistered" />	$vbphrase[changethreadsowner_unregistered]
				</div>
			</div>
		</fieldset>
				
<script type="text/javascript">
<!--
function toggleme(status)
{
	fetch_object("date_day").disabled = (status ? false : true);
	fetch_object("date_month").disabled = (status ? false : true);
	fetch_object("date_year").disabled = (status ? false : true);
	fetch_object("date_hour").disabled = (status ? false : true);
	fetch_object("date_minute").disabled = (status ? false : true);
	fetch_object("date_second").disabled = (status ? false : true);
}

function toggle_disabled(status, objid)
{
	obj = fetch_object(objid);
	if (obj)
	{
		obj.disabled = (status ? false : true);
	}
}

//-->
</script>

		<fieldset class="fieldset">
			<legend>$vbphrase[date]</legend>
			<div style="padding:$stylevar[formspacer]px">
				<div class="fieldset">
					<input class="bginput" type="checkbox" name="date[change]" onclick="toggleme(this.checked)" />	$vbphrase[changethreadsowner_change_date]
				</div>
				<div class="fieldset">
				Date
				<input class="bginput" type="text" id="date_day" name="date[day]" value="$mydate[day]" size="2" maxlength="2" disabled="disabled" />
				<input class="bginput" type="text" id="date_month" name="date[month]" value="$mydate[month]" size="2" maxlength="2" disabled="disabled" />
				<input class="bginput" type="text" id="date_year" name="date[year]" value="$mydate[year]" size="4" maxlength="4" disabled="disabled" />
				</div>
				<div class="fieldset">
				Time 
				<input class="bginput" type="text" id="date_hour" name="date[hour]" value="$mydate[hour]" size="2" maxlength="2" disabled="disabled" />
				<input class="bginput" type="text" id="date_minute" name="date[minute]" value="$mydate[minute]" size="2" maxlength="2" disabled="disabled" />
				<input class="bginput" type="text" id="date_second" name="date[second]" value="$mydate[second]" size="2" maxlength="2" disabled="disabled" />				
				</div>
			</div>
		</fieldset>
		
		</div>
	</div>
	
	<div style="margin-top:$stylevar[cellpadding]px">
		<input type="submit" class="button" value="$vbphrase[submit]" accesskey="s" />
		<input type="reset" class="button" value="$vbphrase[reset_fields]" accesskey="r" />
	</div>
	</td>
</tr>
</table>

</form>]]></template>
	</templates>
	<plugins>
		<plugin active="1">
			<title>Change Thread/Post owner (add modlogtypes)</title>
			<hookname>fetch_modlogtypes</hookname>
			<phpcode><![CDATA[$modlogtypes['changethreadsowner_modaction'] = 200;]]></phpcode>
		</plugin>
		<plugin active="1">
			<title>Change Thread/Post owner (add modlogaction)</title>
			<hookname>fetch_modlogactions</hookname>
			<phpcode><![CDATA[$modlogactions['200'] = 'changethreadsowner_modaction';]]></phpcode>
		</plugin>
		<plugin active="1">
			<title>Change Thread/Post owner (cache templates)</title>
			<hookname>cache_templates</hookname>
			<phpcode><![CDATA[
			$globaltemplates = array_merge($globaltemplates, array(
	'forumdisplay_changethreadsowner',
	'forumdisplay_changethreadsowner_link',
	'showthread_changepostsowner_link'
			));]]></phpcode>
		</plugin>
		<plugin active="1">
			<title>Change Thread/Post owner (attach link)</title>
			<hookname>forumdisplay_start</hookname>
			<phpcode><![CDATA[eval('$template_hook[inlinemod_thread_bottom] .= " ' . fetch_template('forumdisplay_changethreadsowner_link') . '";');]]></phpcode>
		</plugin>
				<plugin active="1">
			<title>Change Thread/Post owner (attach link)</title>
			<hookname>search_complete</hookname>
			<phpcode><![CDATA[eval('$template_hook[inlinemod_thread_bottom] .= " ' . fetch_template('forumdisplay_changethreadsowner_link') . '";');
			eval('$template_hook[inlinemod_post_bottom] .= " ' . fetch_template('showthread_changepostsowner_link') . '";');]]></phpcode>
		</plugin>		
		<plugin active="1">
			<title>Change Post Owner (attach link)</title>
			<hookname>showthread_start</hookname>
			<phpcode><![CDATA[eval('$template_hook[inlinemod_post_bottom] .= " ' . fetch_template('showthread_changepostsowner_link') . '";');]]></phpcode>
		</plugin> 
		<plugin active="1">
			<title>Change Thread/Post owner (validate action)</title>
			<hookname>inlinemod_action_switch</hookname>
			<phpcode><![CDATA[
if ($_POST['do']=="changethreadsowner" || $_POST['do']=="dochangethreadsowner" || $_POST['do']=="changepostsowner" || $_POST['do']=="dochangepostsowner")
{
	$handled_do=true;
}]]></phpcode>
		</plugin>
		<plugin active="1">
			<title>Change Thread/Post owner (inline)</title>
			<hookname>inlinemod_start</hookname>
			<phpcode><![CDATA[

if ($_POST['do']=="changethreadsowner" || $_POST['do']=="dochangethreadsowner" || $_POST['do']=="changepostsowner" || $_POST['do']=="dochangepostsowner")
{
	$has_permission = false;
	if ($vbulletin->options['changethreadsowner_gp']) {
		foreach(split(",", $vbulletin->options['changethreadsowner_gp']) as $gp) {
			if (is_member_of($vbulletin->userinfo, $gp)) {	
				$has_permission = true;
				break;
			}
		}

	} else {
		$has_permission = can_moderate($threadinfo['forumid']);
	}

	if (!$has_permission) {
		print_no_permission();
	} 

	if (count($vbulletin->GPC['tlist']) > $threadlimit)	{
		eval(standard_error(fetch_error('you_are_limited_to_working_with_x_threads', $threadlimit)));
	}

	if (count($vbulletin->GPC['plist']) > $postlimit) {
		eval(standard_error(fetch_error('you_are_limited_to_working_with_x_posts', $postlimit)));
	}

}


// ##########################
// ### Change Posts Owner ###
// ##########################
if ($_POST['do']=="dochangepostsowner" || $_POST['do']=="dochangethreadsowner" )
{
	
	

	$changedate = false;
	$arrnewdate = $vbulletin->input->clean_gpc('p', 'date', TYPE_ARRAY);
	$newdate = mktime($arrnewdate['hour'], $arrnewdate['minute'], $arrnewdate['second'], $arrnewdate['month'], $arrnewdate['day'], $arrnewdate['year']);
	if ($arrnewdate['change'] == 'on')
	{
		$changedate = true;
	}
		
	$newpostowner = $vbulletin->input->clean_gpc('p', 'newthreadowner', TYPE_NOHTML);
	$setunregistered = $vbulletin->input->clean_gpc('p', 'setunregistered', TYPE_NOHTML);
	$newpostowner = $db->escape_string($newpostowner);
	
	if ($setunregistered == 'on')
	{
		$changeuser = true;
		$userinfo['userid'] = 0;
		if (strlen($newpostowner) > 0)
		{
			$userinfo['username'] = $newpostowner;
		} else {
			$userinfo['username'] = $vbphrase['unregistered'];
		}
		
		$userinfo['ipaddress'] = "";
	} else {
		$changeuser = false;

		if (is_numeric($newpostowner))
		{
			$querywhat = "userid";
		} else {
			$querywhat = "username";
		}
		
		$getuseridq = $vbulletin->db->query_read("SELECT ipaddress, userid, username FROM " . TABLE_PREFIX . "user WHERE ".$querywhat."='".$newpostowner."'");
		if ($db->num_rows($getuseridq) > 0)
		{
			$userinfo = $vbulletin->db->fetch_array($getuseridq);
			$changeuser = true;
		}
	}


	if (!$changeuser AND !$changedate)
	{
		eval(standard_error(fetch_error('invalidid', $vbphrase['user'], $vbulletin->options['contactuslink'])));
	}
	
	
}

if ($_POST['do']=="changepostsowner")
{

		
	if (empty($vbulletin->GPC['plist']))
	{
		eval(standard_error(fetch_error('no_applicable_posts_selected')));
	}

	$postids = implode(',', $vbulletin->GPC['plist']);
	$navbits[''] = $vbphrase['changethreadsowner_title'];
	$template = 'forumdisplay_changethreadsowner';	
	
	$postq = $db->query_read("SELECT
		p.dateline
		FROM " . TABLE_PREFIX . "post as p
		WHERE p.postid=".$vbulletin->GPC['plist'][0]);
	
	if ($db->num_rows($postq) > 0)
	{
		$datepost = $db->fetch_array($postq);
		$mydate['day'] = date("d", $datepost['dateline']);
		$mydate['month'] = date("m", $datepost['dateline']);
		$mydate['year'] = date("Y", $datepost['dateline']);
		
		$mydate['hour'] = date("H", $datepost['dateline']);
		$mydate['minute'] = date("i", $datepost['dateline']);
		$mydate['second'] = date("s", $datepost['dateline']);
	}

}


if ($_POST['do']=="dochangepostsowner")
{
	$vbulletin->input->clean_array_gpc('p', array('postids' => TYPE_STR));
	$postids = explode(',', $vbulletin->GPC['postids']);
	foreach ($postids AS $index => $postid)
	{
		$post['postid'] = $postid;
		
		$postq = $db->query_read("SELECT
			p.userid,
			p.username,
			p.threadid,
			t.forumid
			FROM " . TABLE_PREFIX . "post as p
			INNER JOIN " . TABLE_PREFIX . "thread as t ON p.threadid=t.threadid
			WHERE p.postid=".$post['postid']);
		
		if ($db->num_rows($postq)>0)
		{
			$oldpost = $db->fetch_array($postq);
		}

		$postdm =& datamanager_init('Post', $vbulletin, ERRTYPE_STANDARD, 'threadpost'); 
		$postdm->set_existing($post);	
		if ($changeuser) 
		{
			if ($vbulletin->options['changethreadsowner_ip'])
			{
				$postdm->set('ipaddress', $userinfo['ipaddress'], true, false);
			}
			$postdm->set('userid', $userinfo['userid'], true, false);
			$postdm->set('username', $userinfo['username'], true, false);
		}
		if ($changedate) 
		{
			$postdm->set('dateline', $newdate, true, false);
		}
		
		$postdm->save();
		unset($postdm);
		
		if ($changeuser) 
		{
			// Update Attachments
			$updateattq = $db->query_write("UPDATE " . TABLE_PREFIX . "attachment SET userid=".$userinfo['userid']." WHERE postid=".$post['postid']);
		}
		
		$threadlist["$oldpost[threadid]"] = true;
		$forumlist["$oldpost[forumid]"] = true; 
		
		if ($changeuser) 
		{
			$userdm =& datamanager_init('User', $vbulletin, ERRTYPE_STANDARD);
			$userdm->set_existing($oldpost);
			$userdm->set('posts', 'IF(posts > 1, posts - 1, 0)', false);
			$userdm->save();
			unset($userdm);
		
			$userdm =& datamanager_init('User', $vbulletin, ERRTYPE_STANDARD);
			$userdm->set_existing($userinfo);
			$userdm->set('posts', 'posts + 1', false);
			$userdm->save();
			unset($userdm);
		}

		$modlog[] = array(
			'userid'   =>& $vbulletin->userinfo['userid'],
			'forumid'  =>& $oldpost['forumid'],
			'threadid' =>  $oldpost['threadid'],
			'postid'   => $post['postid'],
		);
		
		log_moderator_action($modlog, 'changethreadsowner_modaction', array($oldpost['username'], $userinfo['username']));
	} 
		
	foreach (array_keys($threadlist) AS $threadid)
	{
		build_thread_counters($threadid);
	}
	
	foreach (array_keys($forumlist) AS $forumid)
	{
		build_forum_counters($forumid);
	}




	// empty cookie
	setcookie('vbulletin_inlinepost', '', TIMENOW - 3600, '/');
		
	//Finished, go to last thread
	$vbulletin->url = 'showthread.php?' . $vbulletin->session->vars['sessionurl'] . "t=".$oldpost['threadid'];
	eval(print_standard_redirect('redirect_changethreadsowner_success', true)); 
		
}








// ############################
// ### Change Thread/Post owner ###
// ############################
if ($_POST['do']=="changethreadsowner") {
	if (empty($vbulletin->GPC['tlist'])) {
		eval(standard_error(fetch_error('you_did_not_select_any_valid_threads')));
	}

	$threadids = implode(',', $vbulletin->GPC['tlist']);
	$navbits[''] = $vbphrase['changethreadsowner_title'];
	$template = 'forumdisplay_changethreadsowner';	
	
	
	$postq = $db->query_read("SELECT
		t.dateline
		FROM " . TABLE_PREFIX . "thread as t
		WHERE t.threadid=".$vbulletin->GPC['tlist'][0]);
	
	if ($db->num_rows($postq) > 0)
	{
		$datepost = $db->fetch_array($postq);
		$mydate['day'] = date("d", $datepost['dateline']);
		$mydate['month'] = date("m", $datepost['dateline']);
		$mydate['year'] = date("Y", $datepost['dateline']);
		
		$mydate['hour'] = date("h", $datepost['dateline']);
		$mydate['minute'] = date("i", $datepost['dateline']);
		$mydate['second'] = date("s", $datepost['dateline']);
	}
	
	
}


if ($_POST['do']=="dochangethreadsowner")
{
	//Get Threads
	
	$vbulletin->input->clean_array_gpc('p', array('threadids' => TYPE_STR));
	$threadids = explode(',', $vbulletin->GPC['threadids']);
	foreach ($threadids AS $index => $threadid)
	{

		//Get Thread
		$threaddm =& datamanager_init('Thread', $vbulletin, ERRTYPE_STANDARD, 'threadpost');
		$threaddm->set_existing(fetch_threadinfo($threadid));
		$firstpostid=$threaddm->fetch_field('firstpostid');
		$olduser['userid']=$threaddm->fetch_field('postuserid');
		$olduser['username']=$threaddm->fetch_field('postusername');
		$forumid=$threaddm->fetch_field('forumid');
		
		$forumlist["$forumid"] = true; 
		
		//Update Thread
		if ($changeuser) 
		{
			$threaddm->set('postuserid', $userinfo['userid'], true, false); 
			$threaddm->set('postusername', $userinfo['username'], true, false); 
		}
		
		if ($changedate) 
		{
			$threaddm->set('dateline', $newdate, true, false);
		}

		$threaddm->save();

		//Update post
		$postdm =& datamanager_init('Post', $vbulletin, ERRTYPE_STANDARD, 'threadpost'); 
		$postdm->set_existing(fetch_postinfo($firstpostid));
		if ($changeuser) 
		{
			if ($vbulletin->options['changethreadsowner_ip'])
			{
				$postdm->set('ipaddress', $userinfo['ipaddress'], true, false);
			}
			$postdm->set('userid', $userinfo['userid'], true, false);
			$postdm->set('username', $userinfo['username'], true, false);
		}
		
		if ($changedate) 
		{
			$postdm->set('dateline', $newdate, true, false);
		}
		
		$postdm->save();
		
		if ($changeuser) 
		{
			//Update user's postcount
			$userdm =& datamanager_init('User', $vbulletin, ERRTYPE_STANDARD);
			$userdm->set_existing($olduser);
			$userdm->set('posts', 'IF(posts > 1, posts - 1, 0)', false);
			$userdm->save();
			unset($userdm);
		
			$userdm =& datamanager_init('User', $vbulletin, ERRTYPE_STANDARD);
			$userdm->set_existing($userinfo);
			$userdm->set('posts', 'posts + 1', false);
			$userdm->save();
			unset($userdm);
		}
		
		if ($changeuser) 
		{
			// Update Attachments
			$updateattq = $db->query_write("UPDATE " . TABLE_PREFIX . "attachment SET userid=".$userinfo['userid']." WHERE postid=".$firstpostid);
		}
		
		unset($threaddm);
		unset($postdm);
		
		$modlog[] = array(
			'userid'   =>& $vbulletin->userinfo['userid'],
			'forumid'  =>& $forumid,
			'threadid' => $threadid,
		);
		
		build_thread_counters($threadid);
		
		log_moderator_action($modlog, 'changethreadsowner_modaction', array($olduser['username'], $userinfo['username']));
	}
	

	foreach (array_keys($forumlist) AS $forumid) {
		build_forum_counters($forumid);
	}


	// empty cookie
	setcookie('vbulletin_inlinethread', '', TIMENOW - 3600, '/');
		
	//Finished
	$vbulletin->url = 'forumdisplay.php?' . $vbulletin->session->vars['sessionurl'] . "f=".$forumid;
	eval(print_standard_redirect('redirect_changethreadsowner_success', true)); 

}]]></phpcode>
		</plugin>
	</plugins>
	<phrases>
		<phrasetype name="Front-End Redirect Messages" fieldname="frontredirect">
			<phrase name="changethreadsowner_success"><![CDATA[Successfully changed!]]></phrase>
		</phrasetype>
		<phrasetype name="global" fieldname="global">
			<phrase name="changethreadsowner_modaction"><![CDATA[Changed Owner from {1} to {2}]]></phrase>
			<phrase name="changethreadsowner_invalid_user"><![CDATA[Invalid user]]></phrase>
			<phrase name="changethreadsowner_link"><![CDATA[Change Threads Owner]]></phrase>
			<phrase name="changepostsowner_link"><![CDATA[Change Posts Owner]]></phrase>
			<phrase name="changethreadsowner_title"><![CDATA[Change Thread/Post Owner]]></phrase>
			<phrase name="changethreadsowner_change_owner"><![CDATA[Change Thread/Post Owner]]></phrase>
			<phrase name="changethreadsowner_change_date"><![CDATA[If checked, the date will be applied to all selected posts/threads!]]></phrase>
			<phrase name="changethreadsowner_name"><![CDATA[Name the new Username or UserID of existing user]]></phrase>
			<phrase name="changethreadsowner_name_legend"><![CDATA[New Owner]]></phrase>
			<phrase name="changethreadsowner_unregistered"><![CDATA[If checked, the UserID of the post will be set to 0. A username will be assigned if entered above, otherwise it will use "Unregistered"-phrase.]]></phrase>
			<phrase name="changethreadsowner_unregistered_legend"><![CDATA[Unregistered]]></phrase>
			<phrase name="changethreadsowner_note"><![CDATA[You are changing the creator of the selected Threads. You cannot revert this action. If you selected Thread(s), the creator of the first post will also be modified.]]></phrase>
		</phrasetype>
		<phrasetype name="vBulletin-Einstellungen" fieldname="vbsettings">
			<phrase name="setting_changethreadsowner_ip_desc"><![CDATA[Should the IP Address of the new owner be applied to post?]]></phrase>
			<phrase name="setting_changethreadsowner_ip_title"><![CDATA[Assign IP Address]]></phrase>
			<phrase name="setting_changethreadsowner_gp_desc"><![CDATA[Which usergroups should be able to change the Owner? Seperate them by a comma, e.g. 6,7,9]]></phrase>
			<phrase name="setting_changethreadsowner_gp_title"><![CDATA[Use group permission?]]></phrase>
			<phrase name="settinggroup_changethreadsowner"><![CDATA[Change thread/Posts Owner]]></phrase>
		</phrasetype>
	</phrases>
	<options>
		<settinggroup name="changethreadsowner" displayorder="7800">
			<setting varname="changethreadsowner_gp" displayorder="20">
				<defaultvalue>6</defaultvalue>
			</setting>
			<setting varname="changethreadsowner_ip" displayorder="200">
				<datatype>boolean</datatype>
				<optioncode>yesno</optioncode>
				<defaultvalue>1</defaultvalue>
			</setting>
			ipaddress
		</settinggroup> 
	</options> 
</product>  