1 | <?php
|
---|
2 | /**
|
---|
3 | *
|
---|
4 | * @package acp
|
---|
5 | * @version $Id$
|
---|
6 | * @copyright (c) 2005 phpBB Group
|
---|
7 | * @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
---|
8 | */
|
---|
9 |
|
---|
10 | /**
|
---|
11 | * @ignore
|
---|
12 | */
|
---|
13 | if (!defined('IN_PHPBB'))
|
---|
14 | {
|
---|
15 | exit;
|
---|
16 | }
|
---|
17 |
|
---|
18 | /**
|
---|
19 | * @package acp
|
---|
20 | */
|
---|
21 | class acp_captcha
|
---|
22 | {
|
---|
23 | var $u_action;
|
---|
24 |
|
---|
25 | function main($id, $mode)
|
---|
26 | {
|
---|
27 | global $db, $user, $auth, $template;
|
---|
28 | global $config, $phpbb_root_path, $phpbb_admin_path, $phpEx;
|
---|
29 |
|
---|
30 | $user->add_lang('acp/board');
|
---|
31 |
|
---|
32 | include($phpbb_root_path . 'includes/captcha/captcha_factory.' . $phpEx);
|
---|
33 | $captchas = phpbb_captcha_factory::get_captcha_types();
|
---|
34 |
|
---|
35 | $selected = request_var('select_captcha', $config['captcha_plugin']);
|
---|
36 | $selected = (isset($captchas['available'][$selected]) || isset($captchas['unavailable'][$selected])) ? $selected : $config['captcha_plugin'];
|
---|
37 | $configure = request_var('configure', false);
|
---|
38 |
|
---|
39 |
|
---|
40 | // Oh, they are just here for the view
|
---|
41 | if (isset($_GET['captcha_demo']))
|
---|
42 | {
|
---|
43 | $this->deliver_demo($selected);
|
---|
44 | }
|
---|
45 |
|
---|
46 | // Delegate
|
---|
47 | if ($configure)
|
---|
48 | {
|
---|
49 | $config_captcha =& phpbb_captcha_factory::get_instance($selected);
|
---|
50 | $config_captcha->acp_page($id, $this);
|
---|
51 | }
|
---|
52 | else
|
---|
53 | {
|
---|
54 | $config_vars = array(
|
---|
55 | 'enable_confirm' => array('tpl' => 'REG_ENABLE', 'default' => false),
|
---|
56 | 'enable_post_confirm' => array('tpl' => 'POST_ENABLE', 'default' => false),
|
---|
57 | 'confirm_refresh' => array('tpl' => 'CONFIRM_REFRESH', 'default' => false),
|
---|
58 | 'max_reg_attempts' => array('tpl' => 'REG_LIMIT', 'default' => 0),
|
---|
59 | 'max_login_attempts' => array('tpl' => 'MAX_LOGIN_ATTEMPTS', 'default' => 0),
|
---|
60 | );
|
---|
61 |
|
---|
62 | $this->tpl_name = 'acp_captcha';
|
---|
63 | $this->page_title = 'ACP_VC_SETTINGS';
|
---|
64 | $form_key = 'acp_captcha';
|
---|
65 | add_form_key($form_key);
|
---|
66 |
|
---|
67 | $submit = request_var('main_submit', false);
|
---|
68 |
|
---|
69 | if ($submit && check_form_key($form_key))
|
---|
70 | {
|
---|
71 | foreach ($config_vars as $config_var => $options)
|
---|
72 | {
|
---|
73 | set_config($config_var, request_var($config_var, $options['default']));
|
---|
74 | }
|
---|
75 |
|
---|
76 | if ($selected !== $config['captcha_plugin'])
|
---|
77 | {
|
---|
78 | // sanity check
|
---|
79 | if (isset($captchas['available'][$selected]))
|
---|
80 | {
|
---|
81 | $old_captcha =& phpbb_captcha_factory::get_instance($config['captcha_plugin']);
|
---|
82 | $old_captcha->uninstall();
|
---|
83 |
|
---|
84 | set_config('captcha_plugin', $selected);
|
---|
85 | $new_captcha =& phpbb_captcha_factory::get_instance($config['captcha_plugin']);
|
---|
86 | $new_captcha->install();
|
---|
87 |
|
---|
88 | add_log('admin', 'LOG_CONFIG_VISUAL');
|
---|
89 | }
|
---|
90 | else
|
---|
91 | {
|
---|
92 | trigger_error($user->lang['CAPTCHA_UNAVAILABLE'] . adm_back_link($this->u_action));
|
---|
93 | }
|
---|
94 | }
|
---|
95 | trigger_error($user->lang['CONFIG_UPDATED'] . adm_back_link($this->u_action));
|
---|
96 | }
|
---|
97 | else if ($submit)
|
---|
98 | {
|
---|
99 | trigger_error($user->lang['FORM_INVALID'] . adm_back_link());
|
---|
100 | }
|
---|
101 | else
|
---|
102 | {
|
---|
103 | $captcha_select = '';
|
---|
104 | foreach ($captchas['available'] as $value => $title)
|
---|
105 | {
|
---|
106 | $current = ($selected !== false && $value == $selected) ? ' selected="selected"' : '';
|
---|
107 | $captcha_select .= '<option value="' . $value . '"' . $current . '>' . $user->lang[$title] . '</option>';
|
---|
108 | }
|
---|
109 |
|
---|
110 | foreach ($captchas['unavailable'] as $value => $title)
|
---|
111 | {
|
---|
112 | $current = ($selected !== false && $value == $selected) ? ' selected="selected"' : '';
|
---|
113 | $captcha_select .= '<option value="' . $value . '"' . $current . ' class="disabled-option">' . $user->lang[$title] . '</option>';
|
---|
114 | }
|
---|
115 |
|
---|
116 | $demo_captcha =& phpbb_captcha_factory::get_instance($selected);
|
---|
117 |
|
---|
118 | foreach ($config_vars as $config_var => $options)
|
---|
119 | {
|
---|
120 | $template->assign_var($options['tpl'], (isset($_POST[$config_var])) ? request_var($config_var, $options['default']) : $config[$config_var]) ;
|
---|
121 | }
|
---|
122 |
|
---|
123 | $template->assign_vars(array(
|
---|
124 | 'CAPTCHA_PREVIEW_TPL' => $demo_captcha->get_demo_template($id),
|
---|
125 | 'S_CAPTCHA_HAS_CONFIG' => $demo_captcha->has_config(),
|
---|
126 | 'CAPTCHA_SELECT' => $captcha_select,
|
---|
127 | ));
|
---|
128 | }
|
---|
129 | }
|
---|
130 | }
|
---|
131 |
|
---|
132 | /**
|
---|
133 | * Entry point for delivering image CAPTCHAs in the ACP.
|
---|
134 | */
|
---|
135 | function deliver_demo($selected)
|
---|
136 | {
|
---|
137 | global $db, $user, $config;
|
---|
138 |
|
---|
139 | $captcha =& phpbb_captcha_factory::get_instance($selected);
|
---|
140 | $captcha->init(CONFIRM_REG);
|
---|
141 | $captcha->execute_demo();
|
---|
142 |
|
---|
143 | garbage_collection();
|
---|
144 | exit_handler();
|
---|
145 | }
|
---|
146 | }
|
---|
147 |
|
---|
148 | ?>
|
---|