<?xml version="1.0" encoding="ISO-8859-1"?>

<product productid="chgtpowner38" active="1">
	<title>Themen/Beitrag Besitzer ändern</title>
	<description>Ändert den Besitzer eines Themas/Beitrags</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[Erfolgreich geändert]]></phrase>
		</phrasetype>
		<phrasetype name="global" fieldname="global">
			<phrase name="changethreadsowner_modaction"><![CDATA[Änderte den Besitzer von {1} auf {2}]]></phrase>
			<phrase name="changethreadsowner_invalid_user"><![CDATA[Ungültiger Benutzer]]></phrase>
			<phrase name="changethreadsowner_link"><![CDATA[Besitzer ändern]]></phrase>
			<phrase name="changepostsowner_link"><![CDATA[Besitzer ändern]]></phrase>
			<phrase name="changethreadsowner_title"><![CDATA[Besitzer ändern]]></phrase>
			<phrase name="changethreadsowner_change_owner"><![CDATA[Besitzer ändern]]></phrase>
			<phrase name="changethreadsowner_change_date"><![CDATA[Wenn markiert, wird das Datum auf alle markierten Beiträge/Themen angewendet!]]></phrase>
			<phrase name="changethreadsowner_name"><![CDATA[Nenn den neuen Benutzernamen oder seine Benutzer ID]]></phrase>
			<phrase name="changethreadsowner_name_legend"><![CDATA[Neuer Besiter]]></phrase>
			<phrase name="changethreadsowner_unregistered"><![CDATA[Wenn markiert, wird die Benutzer des Beitrags auf 0 gesetzt. Es wird, wenn gesetzt, der oben genannte Benutzername zugewiesen, ansonsten "Gast"]]></phrase>
			<phrase name="changethreadsowner_unregistered_legend"><![CDATA[Unregistriert]]></phrase>
			<phrase name="changethreadsowner_note"><![CDATA[Du änderst hiermit den Besitzer eines Themas oder eines Beitrags. Diese Aktion kann nicht mehr rückgängig gemacht werden. Wenn Du ein Thema änderst, wird der erste Beitrag ebenfalls auf den neuen Besitzer angepasst.]]></phrase>
		</phrasetype>
		<phrasetype name="vBulletin-Einstellungen" fieldname="vbsettings">
			<phrase name="setting_changethreadsowner_ip_desc"><![CDATA[Soll die IP Adresse des neuen Benutzers auf den zu ändernden Beitrag zugewiesen werden?]]></phrase>
			<phrase name="setting_changethreadsowner_ip_title"><![CDATA[IP Adresse zuweisen]]></phrase>
			<phrase name="setting_changethreadsowner_gp_desc"><![CDATA[Welche Benutzergruppen sollen den Besitzer ändern können? Trenne die ID's mit einem Komma, bsp. 6,7,9]]></phrase>
			<phrase name="setting_changethreadsowner_gp_title"><![CDATA[Berechtigung einschränken?]]></phrase>
			<phrase name="settinggroup_changethreadsowner"><![CDATA[Ändert den Besitzer eines Themas/Beitrags]]></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>  