Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 2 |
CRAP | |
0.00% |
0 / 138 |
| acp_captcha | |
0.00% |
0 / 1 |
|
0.00% |
0 / 2 |
506 | |
0.00% |
0 / 134 |
| main | |
0.00% |
0 / 1 |
462 | |
0.00% |
0 / 126 |
|||
| deliver_demo | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 8 |
|||
| <?php | |
| /** | |
| * | |
| * This file is part of the phpBB Forum Software package. | |
| * | |
| * @copyright (c) phpBB Limited <https://www.phpbb.com> | |
| * @license GNU General Public License, version 2 (GPL-2.0) | |
| * | |
| * For full copyright and license information, please see | |
| * the docs/CREDITS.txt file. | |
| * | |
| */ | |
| /** | |
| * @ignore | |
| */ | |
| if (!defined('IN_PHPBB')) | |
| { | |
| exit; | |
| } | |
| class acp_captcha | |
| { | |
| var $u_action; | |
| function main($id, $mode) | |
| { | |
| global $user, $template, $phpbb_log, $request; | |
| global $config, $phpbb_container; | |
| $user->add_lang('acp/board'); | |
| /* @var $factory \phpbb\captcha\factory */ | |
| $factory = $phpbb_container->get('captcha.factory'); | |
| $captchas = $factory->get_captcha_types(); | |
| $selected = $request->variable('select_captcha', $config['captcha_plugin']); | |
| $selected = (isset($captchas['available'][$selected]) || isset($captchas['unavailable'][$selected])) ? $selected : $config['captcha_plugin']; | |
| $configure = $request->variable('configure', false); | |
| // Oh, they are just here for the view | |
| if (isset($_GET['captcha_demo'])) | |
| { | |
| $this->deliver_demo($selected); | |
| } | |
| // Delegate | |
| if ($configure) | |
| { | |
| $config_captcha = $factory->get_instance($selected); | |
| $config_captcha->acp_page($id, $this); | |
| } | |
| else | |
| { | |
| $config_vars = array( | |
| 'enable_confirm' => array( | |
| 'tpl' => 'REG_ENABLE', | |
| 'default' => false, | |
| 'validate' => 'bool', | |
| 'lang' => 'VISUAL_CONFIRM_REG', | |
| ), | |
| 'enable_post_confirm' => array( | |
| 'tpl' => 'POST_ENABLE', | |
| 'default' => false, | |
| 'validate' => 'bool', | |
| 'lang' => 'VISUAL_CONFIRM_POST', | |
| ), | |
| 'confirm_refresh' => array( | |
| 'tpl' => 'CONFIRM_REFRESH', | |
| 'default' => false, | |
| 'validate' => 'bool', | |
| 'lang' => 'VISUAL_CONFIRM_REFRESH', | |
| ), | |
| 'max_reg_attempts' => array( | |
| 'tpl' => 'REG_LIMIT', | |
| 'default' => 0, | |
| 'validate' => 'int:0:99999', | |
| 'lang' => 'REG_LIMIT', | |
| ), | |
| 'max_login_attempts' => array( | |
| 'tpl' => 'MAX_LOGIN_ATTEMPTS', | |
| 'default' => 0, | |
| 'validate' => 'int:0:99999', | |
| 'lang' => 'MAX_LOGIN_ATTEMPTS', | |
| ), | |
| ); | |
| $this->tpl_name = 'acp_captcha'; | |
| $this->page_title = 'ACP_VC_SETTINGS'; | |
| $form_key = 'acp_captcha'; | |
| add_form_key($form_key); | |
| $submit = $request->variable('main_submit', false); | |
| $error = $cfg_array = array(); | |
| if ($submit) | |
| { | |
| foreach ($config_vars as $config_var => $options) | |
| { | |
| $cfg_array[$config_var] = $request->variable($config_var, $options['default']); | |
| } | |
| validate_config_vars($config_vars, $cfg_array, $error); | |
| if (!check_form_key($form_key)) | |
| { | |
| $error[] = $user->lang['FORM_INVALID']; | |
| } | |
| if ($error) | |
| { | |
| $submit = false; | |
| } | |
| } | |
| if ($submit) | |
| { | |
| foreach ($cfg_array as $key => $value) | |
| { | |
| $config->set($key, $value); | |
| } | |
| if ($selected !== $config['captcha_plugin']) | |
| { | |
| // sanity check | |
| if (isset($captchas['available'][$selected])) | |
| { | |
| $old_captcha = $factory->get_instance($config['captcha_plugin']); | |
| $old_captcha->uninstall(); | |
| $config->set('captcha_plugin', $selected); | |
| $new_captcha = $factory->get_instance($config['captcha_plugin']); | |
| $new_captcha->install(); | |
| $phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_CONFIG_VISUAL'); | |
| } | |
| else | |
| { | |
| trigger_error($user->lang['CAPTCHA_UNAVAILABLE'] . adm_back_link($this->u_action), E_USER_WARNING); | |
| } | |
| } | |
| trigger_error($user->lang['CONFIG_UPDATED'] . adm_back_link($this->u_action)); | |
| } | |
| else | |
| { | |
| $captcha_select = ''; | |
| foreach ($captchas['available'] as $value => $title) | |
| { | |
| $current = ($selected !== false && $value == $selected) ? ' selected="selected"' : ''; | |
| $captcha_select .= '<option value="' . $value . '"' . $current . '>' . $user->lang($title) . '</option>'; | |
| } | |
| foreach ($captchas['unavailable'] as $value => $title) | |
| { | |
| $current = ($selected !== false && $value == $selected) ? ' selected="selected"' : ''; | |
| $captcha_select .= '<option value="' . $value . '"' . $current . ' class="disabled-option">' . $user->lang($title) . '</option>'; | |
| } | |
| $demo_captcha = $factory->get_instance($selected); | |
| foreach ($config_vars as $config_var => $options) | |
| { | |
| $template->assign_var($options['tpl'], (isset($_POST[$config_var])) ? $request->variable($config_var, $options['default']) : $config[$config_var]) ; | |
| } | |
| $template->assign_vars(array( | |
| 'CAPTCHA_PREVIEW_TPL' => $demo_captcha->get_demo_template($id), | |
| 'S_CAPTCHA_HAS_CONFIG' => $demo_captcha->has_config(), | |
| 'CAPTCHA_SELECT' => $captcha_select, | |
| 'ERROR_MSG' => implode('<br />', $error), | |
| 'U_ACTION' => $this->u_action, | |
| )); | |
| } | |
| } | |
| } | |
| /** | |
| * Entry point for delivering image CAPTCHAs in the ACP. | |
| */ | |
| function deliver_demo($selected) | |
| { | |
| global $phpbb_container; | |
| $captcha = $phpbb_container->get('captcha.factory')->get_instance($selected); | |
| $captcha->init(CONFIRM_REG); | |
| $captcha->execute_demo(); | |
| garbage_collection(); | |
| exit_handler(); | |
| } | |
| } |