aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/includes/acp/acp_captcha.php
blob: dc28eb15836f20bdfdb9c7c3f478af9fcaf87fbe (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
<?php
/** 
*
* @package acp
* @version $Id$
* @copyright (c) 2005 phpBB Group 
* @license http://opensource.org/licenses/gpl-license.php GNU Public License 
*/

/**
* @package acp
*/
class acp_captcha
{
	var $u_action;

	function main($id, $mode)
	{
		global $db, $user, $auth, $template;
		global $config, $phpbb_root_path, $phpbb_admin_path, $phpEx;

		$user->add_lang('acp/board');

		$config_vars = array('enable_confirm'			=> 'REG_ENABLE',
						'enable_post_confirm'			=> 'POST_ENABLE',
						'policy_overlap'				=> 'OVERLAP_ENABLE',
						'policy_overlap_noise_pixel'	=> 'OVERLAP_NOISE_PIXEL',
						'policy_overlap_noise_line'		=> 'OVERLAP_NOISE_LINE_ENABLE',
						'policy_entropy'				=> 'ENTROPY_ENABLE',
						'policy_entropy_noise_pixel'	=> 'ENTROPY_NOISE_PIXEL',
						'policy_entropy_noise_line'		=> 'ENTROPY_NOISE_LINE_ENABLE',
						'policy_shape'					=> 'SHAPE_ENABLE',
						'policy_shape_noise_pixel'		=> 'SHAPE_NOISE_PIXEL',
						'policy_shape_noise_line'		=> 'SHAPE_NOISE_LINE_ENABLE',
						'policy_3dbitmap'				=> 'THREEDBITMAP_ENABLE',
						'policy_cells'					=> 'CELLS_ENABLE',
						'policy_stencil'				=> 'STENCIL_ENABLE',
						'policy_composite'				=> 'COMPOSITE_ENABLE'
					);

		$policy_modules = array('policy_entropy', 'policy_3dbitmap', 'policy_overlap', 'policy_shape', 'policy_cells', 'policy_stencil', 'policy_composite');

		switch ($mode)
		{
			case 'visual':
				$this->tpl_name = 'acp_captcha';
				$this->page_title = 'ACP_VC_SETTINGS';
				$submit = request_var('submit', '');
				if ($submit)
				{
					$config_vars = array_keys($config_vars);
					foreach ($config_vars as $config_var)
					{
						set_config($config_var, request_var($config_var, ''));
					}
					trigger_error($user->lang['CONFIG_UPDATED'] . adm_back_link($this->u_action));
				}
				else
				{
					$array = array();

					foreach ($config_vars as $config_var => $template_var)
					{
						$array[$template_var] = $config[$config_var];
					}
					$template->assign_vars($array);

					
					if (@extension_loaded('gd'))
					{
						$template->assign_var('GD', true);
						foreach ($policy_modules as $module_name)
						{
							$template->assign_var('U_' . strtoupper($module_name), sprintf($user->lang['CAPTCHA_EXPLAIN'], '<a href="' . append_sid("{$phpbb_root_path}/adm/index.$phpEx", 'i=captcha&amp;mode=img&amp;policy=' . $module_name) . '" target="_blank">', '</a>'));
						}
						if (function_exists('imagettfbbox') && function_exists('imagettftext'))
						{
							$template->assign_var('TTF', true);
						}
					}
				}
			break;

			case 'img':
				$policy = request_var('policy', '');

				if (!@extension_loaded('gd'))
				{
					trigger_error($user->lang['NO_GD']);
				}

				if (($policy !== 'policy_entropy' || $policy !== 'policy_3dbitmap') && !(function_exists('imagettfbbox') && function_exists('imagettftext')))
				{
					trigger_error($user->lang['NO_TTF']);
				}

				if (!in_array($policy, $policy_modules))
				{
					trigger_error($user->lang['BAD_POLICY']);
				}

				include($phpbb_root_path . 'includes/captcha/captcha_gd.' . $phpEx);

				$captcha = new captcha();
				$captcha->execute(gen_rand_string(), $policy);
			break;
		}
	}
}

?>