diff options
Diffstat (limited to 'phpBB/includes/captcha')
10 files changed, 73 insertions, 115 deletions
| diff --git a/phpBB/includes/captcha/captcha_factory.php b/phpBB/includes/captcha/captcha_factory.php index 131c0b3b77..d57b333c69 100644 --- a/phpBB/includes/captcha/captcha_factory.php +++ b/phpBB/includes/captcha/captcha_factory.php @@ -2,9 +2,8 @@  /**  *  * @package VC -* @version $Id$  * @copyright (c) 2008 phpBB Group -* @license http://opensource.org/licenses/gpl-license.php GNU Public License +* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2  *  */ @@ -26,7 +25,7 @@ class phpbb_captcha_factory  	/**  	* return an instance of class $name in file $name_plugin.php  	*/ -	function &get_instance($name) +	public static function get_instance($name)  	{  		global $phpbb_root_path, $phpEx; @@ -59,42 +58,40 @@ 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 +			->extension_directory('/captcha') +			->suffix('_plugin') +			->core_path('includes/captcha/plugins/') +			->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;  	}  } - -?>
\ No newline at end of file diff --git a/phpBB/includes/captcha/captcha_gd.php b/phpBB/includes/captcha/captcha_gd.php index ecdad43978..f58b590c4b 100644 --- a/phpBB/includes/captcha/captcha_gd.php +++ b/phpBB/includes/captcha/captcha_gd.php @@ -2,9 +2,8 @@  /**  *  * @package VC -* @version $Id$  * @copyright (c) 2006 phpBB Group -* @license http://opensource.org/licenses/gpl-license.php GNU Public License +* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2  *  */ @@ -2636,5 +2635,3 @@ class colour_manager  		}  	}  } - -?>
\ No newline at end of file diff --git a/phpBB/includes/captcha/captcha_gd_wave.php b/phpBB/includes/captcha/captcha_gd_wave.php index 27422513d9..e19f54f777 100644 --- a/phpBB/includes/captcha/captcha_gd_wave.php +++ b/phpBB/includes/captcha/captcha_gd_wave.php @@ -2,9 +2,8 @@  /**  *  * @package VC -* @version $Id$  * @copyright (c) 2006 phpBB Group -* @license http://opensource.org/licenses/gpl-license.php GNU Public License +* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2  *  */ @@ -841,5 +840,3 @@ class captcha  		);  	}  } - -?>
\ No newline at end of file diff --git a/phpBB/includes/captcha/captcha_non_gd.php b/phpBB/includes/captcha/captcha_non_gd.php index f82896f628..c2b97423e6 100644 --- a/phpBB/includes/captcha/captcha_non_gd.php +++ b/phpBB/includes/captcha/captcha_non_gd.php @@ -2,9 +2,8 @@  /**  *  * @package VC -* @version $Id$  * @copyright (c) 2006 phpBB Group -* @license http://opensource.org/licenses/gpl-license.php GNU Public License +* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2  *  */ @@ -388,5 +387,3 @@ class captcha  		);  	}  } - -?>
\ No newline at end of file diff --git a/phpBB/includes/captcha/plugins/captcha_abstract.php b/phpBB/includes/captcha/plugins/captcha_abstract.php index 21cacd730c..7fd88feeb5 100644 --- a/phpBB/includes/captcha/plugins/captcha_abstract.php +++ b/phpBB/includes/captcha/plugins/captcha_abstract.php @@ -2,9 +2,8 @@  /**  *  * @package VC -* @version $Id$  * @copyright (c) 2006, 2008 phpBB Group -* @license http://opensource.org/licenses/gpl-license.php GNU Public License +* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2  *  */ @@ -22,7 +21,7 @@ if (!defined('IN_PHPBB'))  *  * @package VC  */ -class phpbb_default_captcha +class phpbb_captcha_plugins_captcha_abstract  {  	var $confirm_id;  	var $confirm_code; @@ -207,7 +206,6 @@ class phpbb_default_captcha  		{  			if ($this->check_code())  			{ -				// $this->delete_code(); commented out to allow posting.php to repeat the question  				$this->solved = true;  			}  			else @@ -329,17 +327,6 @@ class phpbb_default_captcha  		return (strcasecmp($this->code, $this->confirm_code) === 0);  	} -	function delete_code() -	{ -		global $db, $user; - -		$sql = 'DELETE FROM ' . CONFIRM_TABLE . " -			WHERE confirm_id = '" . $db->sql_escape($confirm_id) . "' -				AND session_id = '" . $db->sql_escape($user->session_id) . "' -				AND confirm_type = " . $this->type; -		$db->sql_query($sql); -	} -  	function get_attempt_count()  	{  		return $this->attempts; @@ -377,4 +364,9 @@ class phpbb_default_captcha  } -?>
\ No newline at end of file +/** +* Old class name for legacy use. The new class name is auto loadable. +*/ +class phpbb_default_captcha extends phpbb_captcha_plugins_captcha_abstract +{ +} diff --git a/phpBB/includes/captcha/plugins/phpbb_captcha_gd_plugin.php b/phpBB/includes/captcha/plugins/phpbb_captcha_gd_plugin.php index 6e899adc16..6c1f3bf00b 100644 --- a/phpBB/includes/captcha/plugins/phpbb_captcha_gd_plugin.php +++ b/phpBB/includes/captcha/plugins/phpbb_captcha_gd_plugin.php @@ -2,9 +2,8 @@  /**  *  * @package VC -* @version $Id$  * @copyright (c) 2006, 2008 phpBB Group -* @license http://opensource.org/licenses/gpl-license.php GNU Public License +* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2  *  */ @@ -19,7 +18,7 @@ if (!defined('IN_PHPBB'))  /**  * Placeholder for autoload  */ -if (!class_exists('phpbb_default_captcha')) +if (!class_exists('phpbb_default_captcha', false))  {  	include($phpbb_root_path . 'includes/captcha/plugins/captcha_abstract.' . $phpEx);  } @@ -50,9 +49,9 @@ class phpbb_captcha_gd extends phpbb_default_captcha  		}  	} -	function &get_instance() +	public static function get_instance()  	{ -		$instance =& new phpbb_captcha_gd(); +		$instance = new phpbb_captcha_gd();  		return $instance;  	} @@ -152,14 +151,19 @@ class phpbb_captcha_gd extends phpbb_default_captcha  		global $config;  		$config_old = $config; + +		$config = new phpbb_config(array()); +		foreach ($config_old as $key => $value) +		{ +			$config->set($key, $value); +		} +  		foreach ($this->captcha_vars as $captcha_var => $template_var)  		{ -				$config[$captcha_var] = request_var($captcha_var, (int) $config[$captcha_var]); +			$config->set($captcha_var, request_var($captcha_var, (int) $config[$captcha_var]));  		}  		parent::execute_demo();  		$config = $config_old;  	}  } - -?>
\ No newline at end of file diff --git a/phpBB/includes/captcha/plugins/phpbb_captcha_gd_wave_plugin.php b/phpBB/includes/captcha/plugins/phpbb_captcha_gd_wave_plugin.php index 2f55d15efd..a5588178bb 100644 --- a/phpBB/includes/captcha/plugins/phpbb_captcha_gd_wave_plugin.php +++ b/phpBB/includes/captcha/plugins/phpbb_captcha_gd_wave_plugin.php @@ -2,9 +2,8 @@  /**  *  * @package VC -* @version $Id$  * @copyright (c) 2006, 2008 phpBB Group -* @license http://opensource.org/licenses/gpl-license.php GNU Public License +* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2  *  */ @@ -19,7 +18,7 @@ if (!defined('IN_PHPBB'))  /**  * Placeholder for autoload  */ -if (!class_exists('phpbb_default_captcha')) +if (!class_exists('phpbb_default_captcha', false))  {  	include($phpbb_root_path . 'includes/captcha/plugins/captcha_abstract.' . $phpEx);  } @@ -40,7 +39,7 @@ class phpbb_captcha_gd_wave extends phpbb_default_captcha  		}  	} -	function get_instance() +	public static function get_instance()  	{  		return new phpbb_captcha_gd_wave();  	} @@ -79,5 +78,3 @@ class phpbb_captcha_gd_wave extends phpbb_default_captcha  		trigger_error($user->lang['CAPTCHA_NO_OPTIONS'] . adm_back_link($module->u_action));  	}  } - -?>
\ No newline at end of file diff --git a/phpBB/includes/captcha/plugins/phpbb_captcha_nogd_plugin.php b/phpBB/includes/captcha/plugins/phpbb_captcha_nogd_plugin.php index ac30ed4297..96f13fbe1b 100644 --- a/phpBB/includes/captcha/plugins/phpbb_captcha_nogd_plugin.php +++ b/phpBB/includes/captcha/plugins/phpbb_captcha_nogd_plugin.php @@ -2,9 +2,8 @@  /**  *  * @package VC -* @version $Id$  * @copyright (c) 2006, 2008 phpBB Group -* @license http://opensource.org/licenses/gpl-license.php GNU Public License +* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2  *  */ @@ -19,7 +18,7 @@ if (!defined('IN_PHPBB'))  /**  * Placeholder for autoload  */ -if (!class_exists('phpbb_default_captcha')) +if (!class_exists('phpbb_default_captcha', false))  {  	include($phpbb_root_path . 'includes/captcha/plugins/captcha_abstract.' . $phpEx);  } @@ -40,9 +39,9 @@ class phpbb_captcha_nogd extends phpbb_default_captcha  		}  	} -	function &get_instance() +	public static function get_instance()  	{ -		$instance =& new phpbb_captcha_nogd(); +		$instance = new phpbb_captcha_nogd();  		return $instance;  	} @@ -68,5 +67,3 @@ class phpbb_captcha_nogd extends phpbb_default_captcha  		trigger_error($user->lang['CAPTCHA_NO_OPTIONS'] . adm_back_link($module->u_action));  	}  } - -?>
\ No newline at end of file diff --git a/phpBB/includes/captcha/plugins/phpbb_captcha_qa_plugin.php b/phpBB/includes/captcha/plugins/phpbb_captcha_qa_plugin.php index 45f76bd676..99813189d7 100644 --- a/phpBB/includes/captcha/plugins/phpbb_captcha_qa_plugin.php +++ b/phpBB/includes/captcha/plugins/phpbb_captcha_qa_plugin.php @@ -2,9 +2,8 @@  /**  *  * @package VC -* @version $Id$  * @copyright (c) 2006, 2008 phpBB Group -* @license http://opensource.org/licenses/gpl-license.php GNU Public License +* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2  *  */ @@ -87,7 +86,7 @@ class phpbb_captcha_qa  			}  			$db->sql_freeresult($result);  		} -	 +  		// okay, if there is a confirm_id, we try to load that confirm's state. If not, we try to find one  		if (!$this->load_answer() && (!$this->load_confirm_id() || !$this->load_answer()))  		{ @@ -99,9 +98,9 @@ class phpbb_captcha_qa  	/**  	*  API function  	*/ -	function &get_instance() +	public static function get_instance()  	{ -		$instance =& new phpbb_captcha_qa(); +		$instance = new phpbb_captcha_qa();  		return $instance;  	} @@ -113,7 +112,7 @@ class phpbb_captcha_qa  	{  		global $db, $phpbb_root_path, $phpEx; -		if (!class_exists('phpbb_db_tools')) +		if (!class_exists('phpbb_db_tools', false))  		{  			include("$phpbb_root_path/includes/db/db_tools.$phpEx");  		} @@ -365,12 +364,12 @@ class phpbb_captcha_qa  		global $config, $db, $user;  		$error = ''; -		 +  		if (!sizeof($this->question_ids))  		{  			return false;  		} -		 +  		if (!$this->confirm_id)  		{  			$error = $user->lang['CONFIRM_QUESTION_WRONG']; @@ -379,7 +378,6 @@ class phpbb_captcha_qa  		{  			if ($this->check_answer())  			{ -				// $this->delete_code(); commented out to allow posting.php to repeat the question  				$this->solved = true;  			}  			else @@ -434,7 +432,7 @@ class phpbb_captcha_qa  	function reselect_question()  	{  		global $db, $user; -		 +  		if (!sizeof($this->question_ids))  		{  			return false; @@ -482,8 +480,8 @@ class phpbb_captcha_qa  		global $db, $user;  		$sql = 'SELECT confirm_id -			FROM ' . CAPTCHA_QA_CONFIRM_TABLE . "  -			WHERE  +			FROM ' . CAPTCHA_QA_CONFIRM_TABLE . " +			WHERE  				session_id = '" . $db->sql_escape($user->session_id) . "'  				AND lang_iso = '" . $db->sql_escape($this->question_lang) . "'  				AND confirm_type = " . $this->type; @@ -505,7 +503,7 @@ class phpbb_captcha_qa  	function load_answer()  	{  		global $db, $user; -		 +  		if (!strlen($this->confirm_id) || !sizeof($this->question_ids))  		{  			return false; @@ -567,20 +565,6 @@ class phpbb_captcha_qa  	}  	/** -	*  API function - clean the entry -	*/ -	function delete_code() -	{ -		global $db, $user; - -		$sql = 'DELETE FROM ' . CAPTCHA_QA_CONFIRM_TABLE . " -			WHERE confirm_id = '" . $db->sql_escape($confirm_id) . "' -				AND session_id = '" . $db->sql_escape($user->session_id) . "' -				AND confirm_type = " . $this->type; -		$db->sql_query($sql); -	} - -	/**  	*  API function  	*/  	function get_attempt_count() @@ -990,9 +974,9 @@ class phpbb_captcha_qa  		return $langs;  	} -	 -	 -	 + + +  	/**  	*  See if there is a question other than the one we have  	*/ @@ -1018,5 +1002,3 @@ class phpbb_captcha_qa  		}  	}  } - -?>
\ No newline at end of file diff --git a/phpBB/includes/captcha/plugins/phpbb_recaptcha_plugin.php b/phpBB/includes/captcha/plugins/phpbb_recaptcha_plugin.php index 0b0270f568..70c24a8c30 100644 --- a/phpBB/includes/captcha/plugins/phpbb_recaptcha_plugin.php +++ b/phpBB/includes/captcha/plugins/phpbb_recaptcha_plugin.php @@ -2,9 +2,8 @@  /**  *  * @package VC -* @version $Id$  * @copyright (c) 2006, 2008 phpBB Group -* @license http://opensource.org/licenses/gpl-license.php GNU Public License +* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2  *  */ @@ -16,7 +15,7 @@ if (!defined('IN_PHPBB'))  	exit;  } -if (!class_exists('phpbb_default_captcha')) +if (!class_exists('phpbb_default_captcha', false))  {  	// we need the classic captcha code for tracking solutions and attempts  	include($phpbb_root_path . 'includes/captcha/plugins/captcha_abstract.' . $phpEx); @@ -41,7 +40,8 @@ class phpbb_recaptcha extends phpbb_default_captcha  	// PHP4 Constructor  	function phpbb_recaptcha()  	{ -		$this->recaptcha_server = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') ? $this->recaptcha_server_secure : $this->recaptcha_server; +		global $request; +		$this->recaptcha_server = $request->is_secure() ? $this->recaptcha_server_secure : $this->recaptcha_server;  	}  	function init($type) @@ -54,9 +54,9 @@ class phpbb_recaptcha extends phpbb_default_captcha  		$this->response = request_var('recaptcha_response_field', '');  	} -	function &get_instance() +	public static function get_instance()  	{ -		$instance =& new phpbb_recaptcha(); +		$instance = new phpbb_recaptcha();  		return $instance;  	} @@ -341,5 +341,3 @@ class phpbb_recaptcha extends phpbb_default_captcha  		return $req;  	}  } - -?>
\ No newline at end of file | 
