mirror of
https://github.com/phpbb/phpbb.git
synced 2025-06-28 06:08:52 +00:00
[feature/extension-manager] Allow extensions to define captcha plugins.
The base class for captcha plugins has been renamed, but the old name continues to exist as an empty subclass of it for backwards compatability. PHPBB3-10323
This commit is contained in:
parent
d5a5cdd0d7
commit
61df8a87d1
3 changed files with 33 additions and 25 deletions
|
@ -104,13 +104,13 @@ class acp_captcha
|
|||
foreach ($captchas['available'] as $value => $title)
|
||||
{
|
||||
$current = ($selected !== false && $value == $selected) ? ' selected="selected"' : '';
|
||||
$captcha_select .= '<option value="' . $value . '"' . $current . '>' . $user->lang[$title] . '</option>';
|
||||
$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>';
|
||||
$captcha_select .= '<option value="' . $value . '"' . $current . ' class="disabled-option">' . $user->lang($title) . '</option>';
|
||||
}
|
||||
|
||||
$demo_captcha = phpbb_captcha_factory::get_instance($selected);
|
||||
|
|
|
@ -59,38 +59,39 @@ class phpbb_captcha_factory
|
|||
*/
|
||||
function get_captcha_types()
|
||||
{
|
||||
global $phpbb_root_path, $phpEx;
|
||||
global $phpbb_root_path, $phpEx, $phpbb_extension_manager;
|
||||
|
||||
$captchas = array(
|
||||
'available' => array(),
|
||||
'unavailable' => array(),
|
||||
);
|
||||
|
||||
$dp = @opendir($phpbb_root_path . 'includes/captcha/plugins');
|
||||
$finder = $phpbb_extension_manager->get_finder();
|
||||
$captcha_plugin_classes = $finder
|
||||
->directory('/captcha')
|
||||
->suffix('_plugin')
|
||||
->default_path('includes/captcha/plugins/')
|
||||
->default_directory('')
|
||||
->get_classes();
|
||||
|
||||
if ($dp)
|
||||
foreach ($captcha_plugin_classes as $class)
|
||||
{
|
||||
while (($file = readdir($dp)) !== false)
|
||||
// check if this class needs to be loaded in legacy mode
|
||||
$old_class = preg_replace('/^phpbb_captcha_plugins_/', '', $class);
|
||||
if (file_exists($phpbb_root_path . "includes/captcha/plugins/$old_class.$phpEx") && !class_exists($old_class))
|
||||
{
|
||||
if ((preg_match('#_plugin\.' . $phpEx . '$#', $file)))
|
||||
{
|
||||
$name = preg_replace('#^(.*?)_plugin\.' . $phpEx . '$#', '\1', $file);
|
||||
if (!class_exists($name))
|
||||
{
|
||||
include($phpbb_root_path . "includes/captcha/plugins/$file");
|
||||
}
|
||||
|
||||
if (call_user_func(array($name, 'is_available')))
|
||||
{
|
||||
$captchas['available'][$name] = call_user_func(array($name, 'get_name'));
|
||||
}
|
||||
else
|
||||
{
|
||||
$captchas['unavailable'][$name] = call_user_func(array($name, 'get_name'));
|
||||
}
|
||||
}
|
||||
include($phpbb_root_path . "includes/captcha/plugins/$old_class.$phpEx");
|
||||
$class = preg_replace('/_plugin$/', '', $old_class);
|
||||
}
|
||||
|
||||
if (call_user_func(array($class, 'is_available')))
|
||||
{
|
||||
$captchas['available'][$class] = call_user_func(array($class, 'get_name'));
|
||||
}
|
||||
else
|
||||
{
|
||||
$captchas['unavailable'][$class] = call_user_func(array($class, 'get_name'));
|
||||
}
|
||||
closedir($dp);
|
||||
}
|
||||
|
||||
return $captchas;
|
||||
|
|
|
@ -22,7 +22,7 @@ if (!defined('IN_PHPBB'))
|
|||
*
|
||||
* @package VC
|
||||
*/
|
||||
class phpbb_default_captcha
|
||||
class phpbb_captcha_plugins_captcha_abstract
|
||||
{
|
||||
var $confirm_id;
|
||||
var $confirm_code;
|
||||
|
@ -364,3 +364,10 @@ class phpbb_default_captcha
|
|||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Old class name for legacy use. The new class name is auto loadable.
|
||||
*/
|
||||
class phpbb_default_captcha extends phpbb_captcha_plugins_captcha_abstract
|
||||
{
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue