<?php
/*

 * Extra Safety Check While Registering For MyBB 1.2.9
 * By: LeX-
 * Website: http://www.thingiej.be
 * Version: 1.0

*/
$plugins->add_hook('member_register_start', 'wnr_register');

$plugins->add_hook('datahandler_user_validate', 'wnr_do_register');

function wnr_info()
{
	return array(
		'name'			=> 'Extra Safety Check While Registering',
		'description'	=> 'New Users Need To Answer A Question Correct Before Completing The Registration.',
		'website'		=> 'http://www.thingiej.be/',
		'author'		=> 'LeX-',
		'authorsite'	=> 'http://www.thingiej.be/',
		'version'		=> '1.0',
	);
}

function wnr_activate()
{
	global $db, $mybb;

	$wnr_template = array(
		"tid"		=> NULL,
		"title"		=> 'member_register_wnr',
		"template"	=> $db->escape_string('<br />
<fieldset class="trow2">
<legend><strong>Extra Check</strong></legend>
<table cellspacing="0" cellpadding="{$theme[\'tablespace\']}">
<tr>
<td><span class="smalltext">Please Enter The Correct Answer To The Question Before Proceeding Your Registration.</span></td>
<td rowspan="2" align="center"><strong>{$wnr_question}</td>
</tr>
<tr>
<td><input type="text" class="textbox" name="wnr_answer" value="" /><input type="hidden" name="wnr_hidden" value="{$wnr_hidden}" /></td>
</tr>
</table>
</fieldset>'),
		"sid"		=> "-1",
		"version"	=> "1.0",
		"dateline"	=> "1148741714",
	);

	$db->insert_query(TABLE_PREFIX."templates", $wnr_template);

	require MYBB_ROOT.'/inc/adminfunctions_templates.php';
	// MEMBERPROFILE
	find_replace_templatesets("member_register", '#{\$regimage}#', "{\$regimage}{\$wnr}");


	$wnr_group = array(
		"name"			=> "wnr_group",
		"title"			=> "Extra Registration Safety.",
		"description"	=> "New Users Need To Answer A Question Correct Before Completing The Registration.",
		"disporder"		=> "25",
		"isdefault"		=> "no",
	);

	$db->insert_query(TABLE_PREFIX."settinggroups", $wnr_group);
	$gid = $db->insert_id();

	$new_setting = array(
		'name'			=> 'wnr_status',
		'title'			=> 'Extra Safety : Status',
		'description'	=> 'Show Extra Check While New User Tries To Register?',
		'optionscode'	=> 'yesno',
		'value'			=> 'yes',
		'disporder'		=> '1',
		'gid'			=> intval($gid)
	);

	$db->insert_query(TABLE_PREFIX.'settings', $new_setting);

	$new_setting2 = array(
		'name'			=> 'wnr_question',
		'title'			=> 'Extra Safety : Questions',
		'description'	=> 'Possible Questions A New User Can See? For Adding A New Question, Make A New Line And Add It !<br /> New Question: <strong>question|answer</strong>',
		'optionscode'	=> 'textarea',
		'value'			=> 'Is a cherry red or green?|red
Whats the color of a banana|yellow',
		'disporder'		=> '2',
		'gid'			=> intval($gid)
	);

	$db->insert_query(TABLE_PREFIX.'settings', $new_setting2);

	$new_setting3 = array(
		'name'			=> 'wnr_error',
		'title'			=> 'Extra Safety : Error Message',
		'description'	=> 'Whats The Error That Will Be Displayed If They Dont Fill In The Correct Answer?',
		'optionscode'	=> 'text',
		'value'			=> 'You Didnt Fill In The Correct Answer! Please Try Again',
		'disporder'		=> '3',
		'gid'			=> intval($gid)
	);

	$db->insert_query(TABLE_PREFIX.'settings', $new_setting3);

	rebuildsettings();
}

function wnr_deactivate()
{
	global $mybb, $db;
	$db->query("DELETE FROM ".TABLE_PREFIX."templates WHERE title = 'member_register_wnr'");

	$db->query("DELETE FROM ".TABLE_PREFIX."settings WHERE name='wnr_status'");
	$db->query("DELETE FROM ".TABLE_PREFIX."settings WHERE name='wnr_question'");
	$db->query("DELETE FROM ".TABLE_PREFIX."settings WHERE name='wnr_error'");
	$db->delete_query(TABLE_PREFIX."settinggroups","name='wnr_group'");

	require MYBB_ROOT.'/inc/adminfunctions_templates.php';
	//REMOVING MEMBERPROFILE
	find_replace_templatesets("member_register", '#'.preg_quote('{$wnr}').'#', '',0);

	rebuildsettings();
}

function wnr_register()
{
	global $db, $mybb, $templates, $wnr, $theme;

	if($mybb->settings['wnr_status'] != "no")
	{
		// GET A QUESTION
		$question = explode("\n", stripslashes($mybb->settings['wnr_question']));
		srand((double)microtime()*1000000);
		$numb = (rand(1, sizeof($question)) - 1);
		$answerex = explode("|", $question[$numb]);
		$wnr_question = $answerex[0];
		$wnr_hidden = $numb;
		eval("\$wnr = \"".$templates->get("member_register_wnr")."\";");
	}
}
function wnr_do_register($this)
{
	global $db, $mybb, $templates, $wnr, $theme;

	if($mybb->settings['wnr_status'] != "no" && strpos($_SERVER['REQUEST_URI'], 'member.php'))
	{
		// ANSWER
		$wnr_answer = trim($db->escape_string($mybb->input['wnr_answer']));
		// HIDDEN VAR
		$wnr_hidden = intval($mybb->input['wnr_hidden']);
		// GET CORRECT ANSWER FROM QUESTION
		$question = explode("\n", stripslashes($mybb->settings['wnr_question']));
		$answer = explode("|", $question[$wnr_hidden]);
		$correct_answer = trim($answer[1]);
		if($wnr_answer != $correct_answer || $wnr_answer == "")
		{
			$this->set_error($db->escape_string($mybb->settings['wnr_error']));
		}
	}
}
?>