diff options
| author | Marc Alexander <admin@m-a-styles.de> | 2014-08-11 12:20:35 +0200 |
|---|---|---|
| committer | Marc Alexander <admin@m-a-styles.de> | 2014-08-11 12:20:35 +0200 |
| commit | 91df95a90dd3266f4beeb7df7534f75882909581 (patch) | |
| tree | 4aa78d8abf67a08571dd7421251d104415dd2bf4 /phpBB/phpbb/captcha/factory.php | |
| parent | c10c6bd34297afbf6b32f5047a85c33fa546c23d (diff) | |
| parent | 756aa68b34e8584c7e010b2295ff63e485be1907 (diff) | |
| download | forums-91df95a90dd3266f4beeb7df7534f75882909581.tar forums-91df95a90dd3266f4beeb7df7534f75882909581.tar.gz forums-91df95a90dd3266f4beeb7df7534f75882909581.tar.bz2 forums-91df95a90dd3266f4beeb7df7534f75882909581.tar.xz forums-91df95a90dd3266f4beeb7df7534f75882909581.zip | |
Merge pull request #2842 from Nicofuma/ticket/11854
[ticket/11854] Move captchas to phpbb/ and use DI for plugins
Diffstat (limited to 'phpBB/phpbb/captcha/factory.php')
| -rw-r--r-- | phpBB/phpbb/captcha/factory.php | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/phpBB/phpbb/captcha/factory.php b/phpBB/phpbb/captcha/factory.php new file mode 100644 index 0000000000..dd44aca8bb --- /dev/null +++ b/phpBB/phpbb/captcha/factory.php @@ -0,0 +1,88 @@ +<?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. +* +*/ + +namespace phpbb\captcha; + +class factory +{ + /** + * @var \Symfony\Component\DependencyInjection\ContainerInterface + */ + private $container; + + /** + * @var \phpbb\di\service_collection + */ + private $plugins; + + /** + * Constructor + * + * @param \Symfony\Component\DependencyInjection\ContainerInterface $container + * @param \phpbb\di\service_collection $plugins + */ + public function __construct(\Symfony\Component\DependencyInjection\ContainerInterface $container, \phpbb\di\service_collection $plugins) + { + $this->container = $container; + $this->plugins = $plugins; + } + + /** + * Return a new instance of a given plugin + * + * @param $name + * @return object + */ + public function get_instance($name) + { + return $this->container->get($name); + } + + /** + * Call the garbage collector + * + * @param string $name The name to the captcha service. + */ + function garbage_collect($name) + { + $captcha = $this->get_instance($name); + $captcha->garbage_collect(0); + } + + /** + * Return a list of all registered CAPTCHA plugins + * + * @returns array + */ + function get_captcha_types() + { + $captchas = array( + 'available' => array(), + 'unavailable' => array(), + ); + + foreach ($this->plugins as $plugin => $plugin_instance) + { + if ($plugin_instance->is_available()) + { + $captchas['available'][$plugin] = $plugin_instance->get_name(); + } + else + { + $captchas['unavailable'][$plugin] = $plugin_instance->get_name(); + } + } + + return $captchas; + } +} |
