aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/includes/captcha/captcha_factory.php
diff options
context:
space:
mode:
authorNils Adermann <naderman@naderman.de>2011-08-22 03:51:03 -0400
committerNils Adermann <naderman@naderman.de>2011-09-29 15:42:47 +0200
commit61df8a87d19c062f5284f06047c1a9093c664cdf (patch)
treef7b2bbe8e1b8a339c71f24e182ff9c176f01f7ba /phpBB/includes/captcha/captcha_factory.php
parentd5a5cdd0d712ff7997f98659525ab98ee45fbe1f (diff)
downloadforums-61df8a87d19c062f5284f06047c1a9093c664cdf.tar
forums-61df8a87d19c062f5284f06047c1a9093c664cdf.tar.gz
forums-61df8a87d19c062f5284f06047c1a9093c664cdf.tar.bz2
forums-61df8a87d19c062f5284f06047c1a9093c664cdf.tar.xz
forums-61df8a87d19c062f5284f06047c1a9093c664cdf.zip
[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
Diffstat (limited to 'phpBB/includes/captcha/captcha_factory.php')
-rw-r--r--phpBB/includes/captcha/captcha_factory.php43
1 files changed, 22 insertions, 21 deletions
diff --git a/phpBB/includes/captcha/captcha_factory.php b/phpBB/includes/captcha/captcha_factory.php
index c2ec8c5bda..2779a23d34 100644
--- a/phpBB/includes/captcha/captcha_factory.php
+++ b/phpBB/includes/captcha/captcha_factory.php
@@ -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");
- }
+ include($phpbb_root_path . "includes/captcha/plugins/$old_class.$phpEx");
+ $class = preg_replace('/_plugin$/', '', $old_class);
+ }
- 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'));
- }
- }
+ 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;