mirror of
https://github.com/phpbb/phpbb.git
synced 2025-03-14 12:40:13 +01:00
There is a phpbb_config class which simply holds an array and does not persist any data. It implements ArrayAccess, Countable and IteratorAggregate to allow regular use of configuration as if it was still an array. The phpbb_config_db class depends on an instance of the dbal and a cache driver. It obtains the configuration data from cache and database as necessary and persists data to the database. The functions set_config and set_config_count remain for backward compatability but they only call methods on the new config class now instead of directly manipulating the database and cache. PHPBB3-9988
171 lines
3.4 KiB
PHP
171 lines
3.4 KiB
PHP
<?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
|
|
*/
|
|
if (!class_exists('phpbb_default_captcha', false))
|
|
{
|
|
include($phpbb_root_path . 'includes/captcha/plugins/captcha_abstract.' . $phpEx);
|
|
}
|
|
|
|
/**
|
|
* @package VC
|
|
*/
|
|
class phpbb_captcha_gd extends phpbb_default_captcha
|
|
{
|
|
|
|
var $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',
|
|
'captcha_gd_wave' => 'CAPTCHA_GD_WAVE',
|
|
'captcha_gd_3d_noise' => 'CAPTCHA_GD_3D_NOISE',
|
|
'captcha_gd_fonts' => 'CAPTCHA_GD_FONTS',
|
|
);
|
|
|
|
function phpbb_captcha_gd()
|
|
{
|
|
global $phpbb_root_path, $phpEx;
|
|
|
|
if (!class_exists('captcha'))
|
|
{
|
|
include($phpbb_root_path . 'includes/captcha/captcha_gd.' . $phpEx);
|
|
}
|
|
}
|
|
|
|
function &get_instance()
|
|
{
|
|
$instance =& new phpbb_captcha_gd();
|
|
return $instance;
|
|
}
|
|
|
|
function is_available()
|
|
{
|
|
global $phpbb_root_path, $phpEx;
|
|
|
|
if (@extension_loaded('gd'))
|
|
{
|
|
return true;
|
|
}
|
|
|
|
if (!function_exists('can_load_dll'))
|
|
{
|
|
include($phpbb_root_path . 'includes/functions_install.' . $phpEx);
|
|
}
|
|
|
|
return can_load_dll('gd');
|
|
}
|
|
|
|
/**
|
|
* API function
|
|
*/
|
|
function has_config()
|
|
{
|
|
return true;
|
|
}
|
|
|
|
function get_name()
|
|
{
|
|
return 'CAPTCHA_GD';
|
|
}
|
|
|
|
function get_class_name()
|
|
{
|
|
return 'phpbb_captcha_gd';
|
|
}
|
|
|
|
function acp_page($id, &$module)
|
|
{
|
|
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',
|
|
'confirm_refresh' => 'CONFIRM_REFRESH',
|
|
'captcha_gd' => 'CAPTCHA_GD',
|
|
);
|
|
|
|
$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($this->captcha_vars);
|
|
foreach ($captcha_vars as $captcha_var)
|
|
{
|
|
$value = request_var($captcha_var, 0);
|
|
if ($value >= 0)
|
|
{
|
|
set_config($captcha_var, $value);
|
|
}
|
|
}
|
|
|
|
add_log('admin', 'LOG_CONFIG_VISUAL');
|
|
trigger_error($user->lang['CONFIG_UPDATED'] . adm_back_link($module->u_action));
|
|
}
|
|
else if ($submit)
|
|
{
|
|
trigger_error($user->lang['FORM_INVALID'] . adm_back_link($module->u_action));
|
|
}
|
|
else
|
|
{
|
|
foreach ($this->captcha_vars as $captcha_var => $template_var)
|
|
{
|
|
$var = (isset($_REQUEST[$captcha_var])) ? request_var($captcha_var, 0) : $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(),
|
|
'U_ACTION' => $module->u_action,
|
|
));
|
|
}
|
|
}
|
|
|
|
function execute_demo()
|
|
{
|
|
global $config;
|
|
|
|
$config_old = $config;
|
|
|
|
$config = new phpbb_config(array());
|
|
foreach ($old_config as $key => $value)
|
|
{
|
|
$config->set($key, $value);
|
|
}
|
|
|
|
foreach ($this->captcha_vars as $captcha_var => $template_var)
|
|
{
|
|
$config->set($captcha_var, request_var($captcha_var, (int) $config[$captcha_var]));
|
|
}
|
|
parent::execute_demo();
|
|
$config = $config_old;
|
|
}
|
|
|
|
}
|