aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/includes/captcha/plugins/phpbb_captcha_gd_plugin.php
blob: bb4d550903278795fae6d05cdb9e48b1aea66601 (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
<?php
/**
*
* @package VC
* @version $Id$
* @copyright (c) 2006 2008 phpBB Group
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*
*/
/**
* @ignore
*/
if (!defined('IN_PHPBB'))
{
	exit;
}

/**
* Placeholder for autoload
*/
include_once(PHPBB_ROOT_PATH . 'includes/captcha/plugins/captcha_abstract.' . PHP_EXT);

class phpbb_captcha_gd extends phpbb_default_captcha implements phpbb_captcha_plugin
{

	function __construct()
	{
		include_once(PHPBB_ROOT_PATH . 'includes/captcha/captcha_gd.' . PHP_EXT);
	}

	public static function get_instance()
	{
		return new phpbb_captcha_gd();
	}

	static function is_available()
	{
		return (@extension_loaded('gd') || can_load_dll('gd'));
	}

	static function get_name()
	{
		return 'CAPTCHA_GD';
	}

	static function get_class_name()
	{
		return 'phpbb_captcha_gd';
	}

	function acp_page($id, &$module)
	{
		$captcha_vars = array(
			'captcha_gd_x_grid'				=> 'CAPTCHA_GD_X_GRID',
			'captcha_gd_y_grid'				=> 'CAPTCHA_GD_Y_GRID',
			'captcha_gd_foreground_noise'	=> 'CAPTCHA_GD_FOREGROUND_NOISE',
			'captcha_gd'					=> 'CAPTCHA_GD_PREVIEWED'
		);

		$module->tpl_name = 'captcha_gd_acp';
		$module->page_title = 'ACP_VC_SETTINGS';
		$form_key = 'acp_captcha';
		add_form_key($form_key);

		$submit = request_var('submit', '');

		if ($submit && check_form_key($form_key))
		{
			$captcha_vars = array_keys($captcha_vars);
			foreach ($captcha_vars as $captcha_var)
			{
				$value = request_var($captcha_var, 0);
				if ($value >= 0)
				{
					set_config($captcha_var, $value);
				}
			}
			trigger_error(phpbb::$user->lang['CONFIG_UPDATED'] . adm_back_link($module->u_action));
		}
		else if ($submit)
		{
			trigger_error(phpbb::$user->lang['FORM_INVALID'] . adm_back_link($module->u_action));
		}
		else
		{
			foreach ($captcha_vars as $captcha_var => $template_var)
			{
				$var = request_var($captcha_var, (int) phpbb::$config[$captcha_var]);
				$template->assign_var($template_var, $var);
			}
			$template->assign_vars(array(
				'CAPTCHA_PREVIEW'	=> $this->get_demo_template($id),
				'CAPTCHA_NAME'		=> $this->get_class_name(),
			));

		}
	}
}

?>