<?php
/*****************************************************************************
 *   Offensive Module (/inc/plugins/myplaza/offensive.php)
 *     - MyPlaza for MyBB 1.2
 *    By ZiNgA BuRgA, 2007-2008
 * 
 * Allows users to buy themselves into another usergroup.
 *****************************************************************************/

if(!defined("IN_MYBB"))
	die("This file cannot be accessed directly.");

function ugroup_lang()
{
	global $mybb, $lang;
	switch($mybb->settings['bblanguage'])
	{
		default:
			$lang->already_in_group = 'You are already a member of this usergroup.';
	}
}

function offensive_lang_admin()
{
	global $mybb, $lang;
	switch($mybb->settings['bblanguage'])
	{
		default:
			$lang->offensive_name = 'Offensive';
			$lang->offensive_description = 'Makes items, allowing users to do damage to other users :)';
			
			$lang->item_offensive_changesig_name = 'Change Other Signature';
			$lang->item_offensive_changesig_desc = 'Change someone else\'s signature!';
			$lang->item_offensive_changetitle_name = 'Change Other Usertitle';
			$lang->item_offensive_changetitle_desc = 'Change someone else\'s usertitle!';
			$lang->item_offensive_changeavatar_name = 'Change Other Avatar';
			$lang->item_offensive_changeavatar_desc = 'Change someone else\'s avatar!';
			$lang->item_offensive_steal_name = 'Steal '.$mybb->settings['myplaza_money_name'];
			$lang->item_offensive_steal_desc = 'Steal a random amount of '.$mybb->settings['myplaza_money_name'].' from another user!';
			$lang->item_offensive_ban_name = 'Ban User';
			$lang->item_offensive_ban_desc = 'Ban another user!';
			$lang->item_offensive_postflood_name = 'Increase Post Flooding Time';
			$lang->item_offensive_postflood_desc = 'Increase the post flooding time for another user!';
			$lang->item_offensive_protection_name = 'Protection';
			$lang->item_offensive_protection_desc = 'Protect yourself from offensive actions by other users.';
	}
}

function offensive_info()
{
	global $lang;
	return array(
		"website"		=> "http://myplaza.zingaburga.com",
		"author"		=> "ZiNgA BuRgA",
		"authorsite"	=> "http://zingaburga.com/",
		"version"		=> "1.0",
		
		'compatibility'	=> array(0.51,0.52)
	);
}

function offensive_activate()
{
	if(!defined("IN_MYPLAZA_ADMIN"))
		cperror('This is not a normal MyBB plugin!  Please upload this file to your /inc/plugins/myplaza directory.');
	
	myplaza_add_item(array(
		"idname" => 'offensive_changesig',
		"cost" => 3000,
		'htmlextra' => '{$lang->changesig_length}
						<br />{$lang->username}: <input type="text" name="username" value="" />
						<br />{lang->newsig}: <textarea name="newsig" />'
	));
	myplaza_add_item(array(
		"idname" => 'offensive_changetitle',
		"cost" => 1500,
		'htmlextra' => '{$lang->changetitle_length}
						<br />{$lang->username}: <input type="text" name="username" value="" />
						<br />{lang->newtitle}: <input type="text" name="newtitle" value="" />'
	));
	myplaza_add_item(array(
		"idname" => 'offensive_changeavatar',
		"cost" => 3000,
		'htmlextra' => '{$lang->changeavatar_length}
						<br />{$lang->username}: <input type="text" name="username" value="" />
						<br />{lang->newavatar}: <input type="text" name="newavatar" value="" />'
	));
	myplaza_add_item(array(
		"idname" => 'offensive_steal',
		"cost" => 3000,
		'htmlextra' => '{$lang->steal_chance}
						<br />{$lang->username}: <input type="text" name="username" value="" />'
	));
	myplaza_add_item(array(
		"idname" => 'offensive_ban',
		"cost" => 3000,
		'htmlextra' => '{$lang->ban_length}
						<br />{$lang->username}: <input type="text" name="username" value="" />'
	));
	myplaza_add_item(array(
		"idname" => 'offensive_postflood',
		"cost" => 3000,
		'htmlextra' => '{$lang->postflood_increase}
						<br />{$lang->username}: <input type="text" name="username" value="" />'
	));
	myplaza_add_item(array(
		"idname" => 'offensive_protection',
		"cost" => 3000,
		'htmlextra' => '{$lang->protection_time}'
	));
	
	db_add_columns('users', array(
		'backup_signature',
		'backup_avatar',
		'backup_title',
		'timeout_signature',
		'timeout_avatar',
		'timeout_title',
		'postflood_extra',
		'timeout_postflood',
		'timeout_protection'
	));
	
	add_settings(array(
		array(
			'name' => 'offensive_sig_timeout',
			'optionscode' => 'text',
			'value' => 1440 // 1 day
		),
		array(
			'name' => 'offensive_ava_timeout',
			'optionscode' => 'text',
			'value' => 1440 // 1 day
		),
		array(
			'name' => 'offensive_title_timeout',
			'optionscode' => 'text',
			'value' => 7200 // 5 days
		),
		array(
			'name' => 'offensive_steal_chance'
			'optionscode' => 'text',
			'value' => 80
		),
		array(
			'name' => 'offensive_steal_max'
			'optionscode' => 'text',
			'value' => 1000
		),
		array(
			'name' => 'offensive_ban_time'
			'optionscode' => 'text',
			'value' => 720 // 12 hours
		),
		array(
			'name' => 'offensive_ban_msg'
			'optionscode' => 'text',
			'value' => 'A user has decided to place the ban hammer on you, unfortunately...'
		),
		array(
			'name' => 'offensive_postflood_timeout'
			'optionscode' => 'text',
			'value' => 1440 // 1 day
		),
		array(
			'name' => 'offensive_postflood_amount'
			'optionscode' => 'text',
			'value' => 60
		),
		array(
			'name' => 'offensive_protection_timeout'
			'optionscode' => 'text',
			'value' => 7200 // 5 days
		)
	));
	
	
	plugins_add_passive_hook('datahandler_user_validate', 'offensive_uvalidate');
	plugins_add_passive_hook('datahandler_user_update', 'offensive_uupdate');
	plugins_add_passive_hook('global_end', 'offensive_revert_user');
}

function offensive_deactivate()
{
	myplaza_remove_module_items();
	db_remove_columns();
	
	global $db;
	$db->delete_query();
	
	plugins_remove_passive_hooks();
}

function offensive_run($item)
{
	global $mybb, $db, $lang, $buyRtnMsg, $buyLogMsg, $offensive_override;
	if($item['idname'] != 'offensive_protection')
	{
		$user = $db->fetch_array($db->simple_select(MY_TABLE_PREFIX.'users', '*', 'username=\''.$db->escape_string($mybb->input['username']).'\''));
		if(!$user)
		{
			return false;
		}
		if($user['uid'] == $mybb->user['uid'])
		{
			// do some stuff
		}
		else
		{
			// user under protection ?
			if($user['protection_timeout'] >= REQUEST_TIME)
			{
				
				return false;
			}
		}
		
		$offensive_override = true;
		$uhdata = array('uid' => $user['uid']);
		switch($item['idname'])
		{
			case 'offensive_changesig':
				// verify sig
				$uhdata['signature'] = $mybb->input['newsig'];
				$uhdata['backup_signature'] = $user['signature'];
				$uhdata['timeout_signature'] = REQUEST_TIME + intval($mybb->settings['offensive_signature_timeout'])*60;
				
				require_once MYBB_ROOT."inc/datahandlers/user.php";
				$uh = new UserDataHandler("update");
				$uh->set_data($user);
				if(!$uh->validate_user())
				{
					$buyRtnMsg = inline_error($uh->get_friendly_errors());
					return false;
				}
				$uh->update_user();
				unset($offensive_override);
				return true;
				
			case 'offensive_changetitle':
				// verify title
				$uhdata['usertitle'] = $mybb->input['newtitle'];
				$uhdata['backup_title'] = $user['usertitle'];
				$uhdata['timeout_title'] = REQUEST_TIME + intval($mybb->settings['offensive_title_timeout'])*60;
				
				require_once MYBB_ROOT."inc/datahandlers/user.php";
				$uh = new UserDataHandler("update");
				$uh->set_data($user);
				if(!$uh->validate_user())
				{
					$buyRtnMsg = inline_error($uh->get_friendly_errors());
					return false;
				}
				$uh->update_user();
				unset($offensive_override);
				return true;
				
			case 'offensive_steal':
				
			case 'offensive_ban':
				
			case 'offensive_postflood':
				
		}
	}
	else
	{
		// buying protection
		
		
		return true;
	}
	
}

function offensive_uvalidate($uh)
{
	if($uh->data['uid'] && !isset($uh->data['timeout_title']))
	{
		// ensure the timeouts are always set
		$u = get_user($user['uid']);
		$uh->data['timeout_title'] = $u['timeout_title'];
		$uh->data['timeout_avatar'] = $u['timeout_avatar'];
		$uh->data['timeout_signature'] = $u['timeout_signature'];
	}
}
function offensive_uupdate($uh)
{
	global $offensive_override, $db;
	if(!$uh->data['uid']) return; // this is only for updating a user
	$user = &$uh->data;
	if($offensive_override)
	{
		$uh->user_update_data['backup_title'] = $db->escape_string($user['backup_title']);
		$uh->user_update_data['backup_signature'] = $db->escape_string($user['backup_signature']);
		$uh->user_update_data['backup_avatar'] = $db->escape_string($user['backup_avatar']);
		$uh->user_update_data['timeout_title'] = intval($user['timeout_title']);
		$uh->user_update_data['timeout_avatar'] = intval($user['timeout_avatar']);
		$uh->user_update_data['timeout_signature'] = intval($user['timeout_signature']);
	}
	else
	{
		if(isset($user['usertitle']) && $user['timeout_title'] > REQUEST_TIME)
		{
			$uh->user_update_data['backup_title'] = $uh->user_update_data['usertitle'];
			unset($uh->user_update_data['usertitle']);
		}
		if(isset($user['avatar']) && $user['timeout_avatar'] > REQUEST_TIME)
		{
			$uh->user_update_data['backup_avatar'] = $db->escape_string($user['avatar'].'|'.$user['avatartype']);
			unset($uh->user_update_data['avatar']);
			unset($uh->user_update_data['avatartype']);
		}
		if(isset($user['signature']) && $user['timeout_signature'] > REQUEST_TIME)
		{
			$uh->user_update_data['backup_signature'] = $uh->user_update_data['signature'];
			unset($uh->user_update_data['signature']);
		}
	}
}

function offensive_revert_user()
{
	global $mybb;
	$update_user = array();
	if($mybb->user['timeout_title'] && $mybb->user['timeout_title'] <= REQUEST_TIME)
	{
		$update_user['timeout_title'] = $mybb->user['timeout_title'] = 0;
		$update_user['usertitle'] = $mybb->user['usertitle'] = $mybb->user['backup_title'];
		$update_user['backup_title'] = $mybb->user['backup_title'] = '';
	}
	if($mybb->user['timeout_signature'] && $mybb->user['timeout_signature'] <= REQUEST_TIME)
	{
		$update_user['timeout_signature'] = $mybb->user['timeout_signature'] = 0;
		$update_user['signature'] = $mybb->user['signature'] = $mybb->user['backup_signature'];
		$update_user['backup_signature'] = $mybb->user['backup_signature'] = '';
	}
	// need to do avatar
	
	if(!empty($update_user))
	{
		global $db;
		$db->update_query(MY_TABLE_PREFIX.'users', $update_user, 'uid='.$mybb->user['uid']);
	}
}
?>