You've already forked joomla_test
							
							first commit
This commit is contained in:
		
							
								
								
									
										36
									
								
								libraries/joomla/form/rule/boolean.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								libraries/joomla/form/rule/boolean.php
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,36 @@ | ||||
| <?php | ||||
| /** | ||||
|  * @package     Joomla.Platform | ||||
|  * @subpackage  Form | ||||
|  * | ||||
|  * @copyright   Copyright (C) 2005 - 2013 Open Source Matters, Inc. All rights reserved. | ||||
|  * @license     GNU General Public License version 2 or later; see LICENSE | ||||
|  */ | ||||
|  | ||||
| defined('JPATH_PLATFORM') or die; | ||||
|  | ||||
| /** | ||||
|  * Form Rule class for the Joomla Platform. | ||||
|  * | ||||
|  * @package     Joomla.Platform | ||||
|  * @subpackage  Form | ||||
|  * @since       11.1 | ||||
|  */ | ||||
| class JFormRuleBoolean extends JFormRule | ||||
| { | ||||
| 	/** | ||||
| 	 * The regular expression to use in testing a form field value. | ||||
| 	 * | ||||
| 	 * @var    string | ||||
| 	 * @since  11.1 | ||||
| 	 */ | ||||
| 	protected $regex = '^(?:[01]|true|false)$'; | ||||
|  | ||||
| 	/** | ||||
| 	 * The regular expression modifiers to use when testing a form field value. | ||||
| 	 * | ||||
| 	 * @var    string | ||||
| 	 * @since  11.1 | ||||
| 	 */ | ||||
| 	protected $modifiers = 'i'; | ||||
| } | ||||
							
								
								
									
										62
									
								
								libraries/joomla/form/rule/color.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										62
									
								
								libraries/joomla/form/rule/color.php
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,62 @@ | ||||
| <?php | ||||
| /** | ||||
|  * @package     Joomla.Platform | ||||
|  * @subpackage  Form | ||||
|  * | ||||
|  * @copyright   Copyright (C) 2005 - 2013 Open Source Matters, Inc. All rights reserved. | ||||
|  * @license     GNU General Public License version 2 or later; see LICENSE | ||||
|  */ | ||||
|  | ||||
| defined('JPATH_PLATFORM') or die; | ||||
|  | ||||
| /** | ||||
|  * Form Rule class for the Joomla Platform. | ||||
|  * | ||||
|  * @package     Joomla.Platform | ||||
|  * @subpackage  Form | ||||
|  * @since       11.2 | ||||
|  */ | ||||
| class JFormRuleColor extends JFormRule | ||||
| { | ||||
| 	/** | ||||
| 	 * Method to test for a valid color in hexadecimal. | ||||
| 	 * | ||||
| 	 * @param   SimpleXMLElement  $element  The SimpleXMLElement object representing the <field /> tag for the form field object. | ||||
| 	 * @param   mixed             $value    The form field value to validate. | ||||
| 	 * @param   string            $group    The field name group control value. This acts as as an array container for the field. | ||||
| 	 *                                      For example if the field has name="foo" and the group value is set to "bar" then the | ||||
| 	 *                                      full field name would end up being "bar[foo]". | ||||
| 	 * @param   JRegistry         $input    An optional JRegistry object with the entire data set to validate against the entire form. | ||||
| 	 * @param   JForm             $form     The form object for which the field is being tested. | ||||
| 	 * | ||||
| 	 * @return  boolean  True if the value is valid, false otherwise. | ||||
| 	 * | ||||
| 	 * @since   11.2 | ||||
| 	 */ | ||||
| 	public function test(SimpleXMLElement $element, $value, $group = null, JRegistry $input = null, JForm $form = null) | ||||
| 	{ | ||||
| 		$value = trim($value); | ||||
|  | ||||
| 		if (empty($value)) | ||||
| 		{ | ||||
| 			// A color field can't be empty | ||||
| 			return true; | ||||
| 		} | ||||
|  | ||||
| 		if ($value[0] != '#') | ||||
| 		{ | ||||
| 			return false; | ||||
| 		} | ||||
|  | ||||
| 		// Remove the leading # if present to validate the numeric part | ||||
| 		$value = ltrim($value, '#'); | ||||
|  | ||||
| 		// The value must be 6 or 3 characters long | ||||
| 		if (!((strlen($value) == 6 || strlen($value) == 3) && ctype_xdigit($value))) | ||||
| 		{ | ||||
| 			return false; | ||||
| 		} | ||||
|  | ||||
| 		return true; | ||||
| 	} | ||||
| } | ||||
							
								
								
									
										128
									
								
								libraries/joomla/form/rule/email.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										128
									
								
								libraries/joomla/form/rule/email.php
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,128 @@ | ||||
| <?php | ||||
| /** | ||||
|  * @package     Joomla.Platform | ||||
|  * @subpackage  Form | ||||
|  * | ||||
|  * @copyright   Copyright (C) 2005 - 2013 Open Source Matters, Inc. All rights reserved. | ||||
|  * @license     GNU General Public License version 2 or later; see LICENSE | ||||
|  */ | ||||
|  | ||||
| defined('JPATH_PLATFORM') or die; | ||||
|  | ||||
| /** | ||||
|  * Form Rule class for the Joomla Platform. | ||||
|  * | ||||
|  * @package     Joomla.Platform | ||||
|  * @subpackage  Form | ||||
|  * @since       11.1 | ||||
|  */ | ||||
| class JFormRuleEmail extends JFormRule | ||||
| { | ||||
| 	/** | ||||
| 	 * The regular expression to use in testing a form field value. | ||||
| 	 * | ||||
| 	 * @var    string | ||||
| 	 * @since  11.1 | ||||
| 	 * @see    http://www.w3.org/TR/html-markup/input.email.html | ||||
| 	 */ | ||||
| 	protected $regex = '^[a-zA-Z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$'; | ||||
|  | ||||
| 	/** | ||||
| 	 * Method to test the email address and optionally check for uniqueness. | ||||
| 	 * | ||||
| 	 * @param   SimpleXMLElement  $element  The SimpleXMLElement object representing the <field /> tag for the form field object. | ||||
| 	 * @param   mixed             $value    The form field value to validate. | ||||
| 	 * @param   string            $group    The field name group control value. This acts as as an array container for the field. | ||||
| 	 *                                      For example if the field has name="foo" and the group value is set to "bar" then the | ||||
| 	 *                                      full field name would end up being "bar[foo]". | ||||
| 	 * @param   JRegistry         $input    An optional JRegistry object with the entire data set to validate against the entire form. | ||||
| 	 * @param   JForm             $form     The form object for which the field is being tested. | ||||
| 	 * | ||||
| 	 * @return  boolean  True if the value is valid, false otherwise. | ||||
| 	 * | ||||
| 	 * @since   11.1 | ||||
| 	 */ | ||||
| 	public function test(SimpleXMLElement $element, $value, $group = null, JRegistry $input = null, JForm $form = null) | ||||
| 	{ | ||||
| 		// If the field is empty and not required, the field is valid. | ||||
| 		$required = ((string) $element['required'] == 'true' || (string) $element['required'] == 'required'); | ||||
|  | ||||
| 		if (!$required && empty($value)) | ||||
| 		{ | ||||
| 			return true; | ||||
| 		} | ||||
|  | ||||
| 		// If the tld attribute is present, change the regular expression to require at least 2 characters for it. | ||||
| 		$tld = ((string) $element['tld'] == 'tld' || (string) $element['tld'] == 'required'); | ||||
|  | ||||
| 		if ($tld) | ||||
| 		{ | ||||
| 			$this->regex = '^[a-zA-Z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]{2,})$'; | ||||
| 		} | ||||
|  | ||||
| 		// Determine if the multiple attribute is present | ||||
| 		$multiple = ((string) $element['multiple'] == 'true' || (string) $element['multiple'] == 'multiple'); | ||||
|  | ||||
| 		if ($multiple) | ||||
| 		{ | ||||
| 			$values = explode(',', $value); | ||||
| 		} | ||||
|  | ||||
| 		if (!$multiple) | ||||
| 		{ | ||||
| 			// Handle idn e-mail addresses by converting to punycode. | ||||
| 			$value = JStringPunycode::emailToPunycode($value); | ||||
|  | ||||
| 			// Test the value against the regular expression. | ||||
| 			if (!parent::test($element, $value, $group, $input, $form)) | ||||
| 			{ | ||||
| 				return false; | ||||
| 			} | ||||
| 		} | ||||
| 		else | ||||
| 		{ | ||||
| 			foreach ($values as $value) | ||||
| 			{ | ||||
| 				// Handle idn e-mail addresses by converting to punycode. | ||||
| 				$value = JStringPunycode::emailToPunycode($value); | ||||
|  | ||||
| 				// Test the value against the regular expression. | ||||
| 				if (!parent::test($element, $value, $group, $input, $form)) | ||||
| 				{ | ||||
| 					return false; | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
|  | ||||
| 		// Check if we should test for uniqueness. This only can be used if multiple is not true | ||||
| 		$unique = ((string) $element['unique'] == 'true' || (string) $element['unique'] == 'unique'); | ||||
|  | ||||
| 		if ($unique && !$multiple) | ||||
| 		{ | ||||
|  | ||||
| 			// Get the database object and a new query object. | ||||
| 			$db = JFactory::getDbo(); | ||||
| 			$query = $db->getQuery(true); | ||||
|  | ||||
| 			// Build the query. | ||||
| 			$query->select('COUNT(*)') | ||||
| 				->from('#__users') | ||||
| 				->where('email = ' . $db->quote($value)); | ||||
|  | ||||
| 			// Get the extra field check attribute. | ||||
| 			$userId = ($form instanceof JForm) ? $form->getValue('id') : ''; | ||||
| 			$query->where($db->quoteName('id') . ' <> ' . (int) $userId); | ||||
|  | ||||
| 			// Set and query the database. | ||||
| 			$db->setQuery($query); | ||||
| 			$duplicate = (bool) $db->loadResult(); | ||||
|  | ||||
| 			if ($duplicate) | ||||
| 			{ | ||||
| 				return false; | ||||
| 			} | ||||
| 		} | ||||
|  | ||||
| 		return true; | ||||
| 	} | ||||
| } | ||||
							
								
								
									
										68
									
								
								libraries/joomla/form/rule/equals.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										68
									
								
								libraries/joomla/form/rule/equals.php
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,68 @@ | ||||
| <?php | ||||
| /** | ||||
|  * @package     Joomla.Platform | ||||
|  * @subpackage  Form | ||||
|  * | ||||
|  * @copyright   Copyright (C) 2005 - 2013 Open Source Matters, Inc. All rights reserved. | ||||
|  * @license     GNU General Public License version 2 or later; see LICENSE | ||||
|  */ | ||||
|  | ||||
| defined('JPATH_PLATFORM') or die; | ||||
|  | ||||
| /** | ||||
|  * Form Rule class for the Joomla Platform. | ||||
|  * | ||||
|  * @package     Joomla.Platform | ||||
|  * @subpackage  Form | ||||
|  * @since       11.1 | ||||
|  */ | ||||
| class JFormRuleEquals extends JFormRule | ||||
| { | ||||
| 	/** | ||||
| 	 * Method to test if two values are equal. To use this rule, the form | ||||
| 	 * XML needs a validate attribute of equals and a field attribute | ||||
| 	 * that is equal to the field to test against. | ||||
| 	 * | ||||
| 	 * @param   SimpleXMLElement  $element  The SimpleXMLElement object representing the <field /> tag for the form field object. | ||||
| 	 * @param   mixed             $value    The form field value to validate. | ||||
| 	 * @param   string            $group    The field name group control value. This acts as as an array container for the field. | ||||
| 	 *                                      For example if the field has name="foo" and the group value is set to "bar" then the | ||||
| 	 *                                      full field name would end up being "bar[foo]". | ||||
| 	 * @param   JRegistry         $input    An optional JRegistry object with the entire data set to validate against the entire form. | ||||
| 	 * @param   JForm             $form     The form object for which the field is being tested. | ||||
| 	 * | ||||
| 	 * @return  boolean  True if the value is valid, false otherwise. | ||||
| 	 * | ||||
| 	 * @since   11.1 | ||||
| 	 * @throws  InvalidArgumentException | ||||
| 	 * @throws  UnexpectedValueException | ||||
| 	 */ | ||||
| 	public function test(SimpleXMLElement $element, $value, $group = null, JRegistry $input = null, JForm $form = null) | ||||
| 	{ | ||||
| 		$field = (string) $element['field']; | ||||
|  | ||||
| 		// Check that a validation field is set. | ||||
| 		if (!$field) | ||||
| 		{ | ||||
| 			throw new UnexpectedValueException(sprintf('$field empty in %s::test', get_class($this))); | ||||
| 		} | ||||
|  | ||||
| 		if (is_null($form)) | ||||
| 		{ | ||||
| 			throw new InvalidArgumentException(sprintf('The value for $form must not be null in %s', get_class($this))); | ||||
| 		} | ||||
|  | ||||
| 		if (is_null($input)) | ||||
| 		{ | ||||
| 			throw new InvalidArgumentException(sprintf('The value for $input must not be null in %s', get_class($this))); | ||||
| 		} | ||||
|  | ||||
| 		// Test the two values against each other. | ||||
| 		if ($value == $input->get($field)) | ||||
| 		{ | ||||
| 			return true; | ||||
| 		} | ||||
|  | ||||
| 		return false; | ||||
| 	} | ||||
| } | ||||
							
								
								
									
										1
									
								
								libraries/joomla/form/rule/index.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								libraries/joomla/form/rule/index.html
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1 @@ | ||||
| <!DOCTYPE html><title></title> | ||||
							
								
								
									
										48
									
								
								libraries/joomla/form/rule/options.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										48
									
								
								libraries/joomla/form/rule/options.php
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,48 @@ | ||||
| <?php | ||||
| /** | ||||
|  * @package     Joomla.Platform | ||||
|  * @subpackage  Form | ||||
|  * @copyright   Copyright (C) 2005 - 2013 Open Source Matters, Inc. All rights reserved. | ||||
|  * @license     GNU General Public License version 2 or later; see LICENSE.txt | ||||
|  */ | ||||
|  | ||||
| defined('JPATH_PLATFORM') or die; | ||||
|  | ||||
| /** | ||||
|  * Form Rule class for the Joomla Platform. | ||||
|  * Requires the value entered be one of the options in a field of type="list" | ||||
|  * | ||||
|  * @package     Joomla.Platform | ||||
|  * @subpackage  Form | ||||
|  * @since       11.1 | ||||
|  */ | ||||
| class JFormRuleOptions extends JFormRule | ||||
| { | ||||
| 	/** | ||||
| 	 * Method to test the value. | ||||
| 	 * | ||||
| 	 * @param   SimpleXMLElement  $element  The SimpleXMLElement object representing the <field /> tag for the form field object. | ||||
| 	 * @param   mixed             $value    The form field value to validate. | ||||
| 	 * @param   string            $group    The field name group control value. This acts as as an array container for the field. | ||||
| 	 *                                      For example if the field has name="foo" and the group value is set to "bar" then the | ||||
| 	 *                                      full field name would end up being "bar[foo]". | ||||
| 	 * @param   JRegistry         $input    An optional JRegistry object with the entire data set to validate against the entire form. | ||||
| 	 * @param   JForm             $form     The form object for which the field is being tested. | ||||
| 	 * | ||||
| 	 * @return  boolean  True if the value is valid, false otherwise. | ||||
| 	 * | ||||
| 	 * @since   11.1 | ||||
| 	 */ | ||||
| 	public function test(SimpleXMLElement $element, $value, $group = null, JRegistry $input = null, JForm $form = null) | ||||
| 	{ | ||||
| 		// Check each value and return true if we get a match | ||||
| 		foreach ($element->option as $option) | ||||
| 		{ | ||||
| 			if ($value == (string) $option->attributes()->value) | ||||
| 			{ | ||||
| 				return true; | ||||
| 			} | ||||
| 		} | ||||
| 		return false; | ||||
| 	} | ||||
| } | ||||
							
								
								
									
										114
									
								
								libraries/joomla/form/rule/rules.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										114
									
								
								libraries/joomla/form/rule/rules.php
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,114 @@ | ||||
| <?php | ||||
| /** | ||||
|  * @package     Joomla.Platform | ||||
|  * @subpackage  Form | ||||
|  * | ||||
|  * @copyright   Copyright (C) 2005 - 2013 Open Source Matters, Inc. All rights reserved. | ||||
|  * @license     GNU General Public License version 2 or later; see LICENSE | ||||
|  */ | ||||
|  | ||||
| defined('JPATH_PLATFORM') or die; | ||||
|  | ||||
| /** | ||||
|  * Form Rule class for the Joomla Platform. | ||||
|  * | ||||
|  * @package     Joomla.Platform | ||||
|  * @subpackage  Form | ||||
|  * @since       11.1 | ||||
|  */ | ||||
| class JFormRuleRules extends JFormRule | ||||
| { | ||||
| 	/** | ||||
| 	 * Method to test the value. | ||||
| 	 * | ||||
| 	 * @param   SimpleXMLElement  $element  The SimpleXMLElement object representing the <field /> tag for the form field object. | ||||
| 	 * @param   mixed             $value    The form field value to validate. | ||||
| 	 * @param   string            $group    The field name group control value. This acts as as an array container for the field. | ||||
| 	 *                                      For example if the field has name="foo" and the group value is set to "bar" then the | ||||
| 	 *                                      full field name would end up being "bar[foo]". | ||||
| 	 * @param   JRegistry         $input    An optional JRegistry object with the entire data set to validate against the entire form. | ||||
| 	 * @param   JForm             $form     The form object for which the field is being tested. | ||||
| 	 * | ||||
| 	 * @return  boolean  True if the value is valid, false otherwise. | ||||
| 	 * | ||||
| 	 * @since   11.1 | ||||
| 	 */ | ||||
| 	public function test(SimpleXMLElement $element, $value, $group = null, JRegistry $input = null, JForm $form = null) | ||||
| 	{ | ||||
| 		// Get the possible field actions and the ones posted to validate them. | ||||
| 		$fieldActions = self::getFieldActions($element); | ||||
| 		$valueActions = self::getValueActions($value); | ||||
|  | ||||
| 		// Make sure that all posted actions are in the list of possible actions for the field. | ||||
| 		foreach ($valueActions as $action) | ||||
| 		{ | ||||
| 			if (!in_array($action, $fieldActions)) | ||||
| 			{ | ||||
| 				return false; | ||||
| 			} | ||||
| 		} | ||||
|  | ||||
| 		return true; | ||||
| 	} | ||||
|  | ||||
| 	/** | ||||
| 	 * Method to get the list of permission action names from the form field value. | ||||
| 	 * | ||||
| 	 * @param   mixed  $value  The form field value to validate. | ||||
| 	 * | ||||
| 	 * @return  array  A list of permission action names from the form field value. | ||||
| 	 * | ||||
| 	 * @since   11.1 | ||||
| 	 */ | ||||
| 	protected function getValueActions($value) | ||||
| 	{ | ||||
| 		$actions = array(); | ||||
|  | ||||
| 		// Iterate over the asset actions and add to the actions. | ||||
| 		foreach ((array) $value as $name => $rules) | ||||
| 		{ | ||||
| 			$actions[] = $name; | ||||
| 		} | ||||
|  | ||||
| 		return $actions; | ||||
| 	} | ||||
|  | ||||
| 	/** | ||||
| 	 * Method to get the list of possible permission action names for the form field. | ||||
| 	 * | ||||
| 	 * @param   SimpleXMLElement  $element  The SimpleXMLElement object representing the <field /> tag for the | ||||
| 	 *                                      form field object. | ||||
| 	 * | ||||
| 	 * @return  array   A list of permission action names from the form field element definition. | ||||
| 	 * | ||||
| 	 * @since   11.1 | ||||
| 	 */ | ||||
| 	protected function getFieldActions(SimpleXMLElement $element) | ||||
| 	{ | ||||
| 		$actions = array(); | ||||
|  | ||||
| 		// Initialise some field attributes. | ||||
| 		$section = $element['section'] ? (string) $element['section'] : ''; | ||||
| 		$component = $element['component'] ? (string) $element['component'] : ''; | ||||
|  | ||||
| 		// Get the asset actions for the element. | ||||
| 		$elActions = JAccess::getActions($component, $section); | ||||
|  | ||||
| 		// Iterate over the asset actions and add to the actions. | ||||
| 		foreach ($elActions as $item) | ||||
| 		{ | ||||
| 			$actions[] = $item->name; | ||||
| 		} | ||||
|  | ||||
| 		// Iterate over the children and add to the actions. | ||||
| 		foreach ($element->children() as $el) | ||||
| 		{ | ||||
| 			if ($el->getName() == 'action') | ||||
| 			{ | ||||
| 				$actions[] = (string) $el['name']; | ||||
| 			} | ||||
| 		} | ||||
|  | ||||
| 		return $actions; | ||||
| 	} | ||||
| } | ||||
							
								
								
									
										105
									
								
								libraries/joomla/form/rule/tel.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										105
									
								
								libraries/joomla/form/rule/tel.php
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,105 @@ | ||||
| <?php | ||||
| /** | ||||
|  * @package     Joomla.Platform | ||||
|  * @subpackage  Form | ||||
|  * | ||||
|  * @copyright   Copyright (C) 2005 - 2013 Open Source Matters, Inc. All rights reserved. | ||||
|  * @license     GNU General Public License version 2 or later; see LICENSE | ||||
|  */ | ||||
|  | ||||
| defined('JPATH_PLATFORM') or die; | ||||
|  | ||||
| /** | ||||
|  * Form Rule class for the Joomla Platform | ||||
|  * | ||||
|  * @package     Joomla.Platform | ||||
|  * @subpackage  Form | ||||
|  * @since       11.1 | ||||
|  */ | ||||
| class JFormRuleTel extends JFormRule | ||||
| { | ||||
| 	/** | ||||
| 	 * Method to test the url for a valid parts. | ||||
| 	 * | ||||
| 	 * @param   SimpleXMLElement  $element  The SimpleXMLElement object representing the <field /> tag for the form field object. | ||||
| 	 * @param   mixed             $value    The form field value to validate. | ||||
| 	 * @param   string            $group    The field name group control value. This acts as as an array container for the field. | ||||
| 	 *                                      For example if the field has name="foo" and the group value is set to "bar" then the | ||||
| 	 *                                      full field name would end up being "bar[foo]". | ||||
| 	 * @param   JRegistry         $input    An optional JRegistry object with the entire data set to validate against the entire form. | ||||
| 	 * @param   JForm             $form     The form object for which the field is being tested. | ||||
| 	 * | ||||
| 	 * @return  boolean  True if the value is valid, false otherwise. | ||||
| 	 * | ||||
| 	 * @since   11.1 | ||||
| 	 */ | ||||
| 	public function test(SimpleXMLElement $element, $value, $group = null, JRegistry $input = null, JForm $form = null) | ||||
| 	{ | ||||
| 		// If the field is empty and not required, the field is valid. | ||||
| 		$required = ((string) $element['required'] == 'true' || (string) $element['required'] == 'required'); | ||||
| 		if (!$required && empty($value)) | ||||
| 		{ | ||||
| 			return true; | ||||
| 		} | ||||
|  | ||||
| 		/* | ||||
| 		 * @see http://www.nanpa.com/ | ||||
| 		 * @see http://tools.ietf.org/html/rfc4933 | ||||
| 		 * @see http://www.itu.int/rec/T-REC-E.164/en | ||||
| 		 * | ||||
| 		 * Regex by Steve Levithan | ||||
| 		 * @see http://blog.stevenlevithan.com/archives/validate-phone-number | ||||
| 		 * @note that valid ITU-T and EPP must begin with +. | ||||
| 		 */ | ||||
| 		$regexarray = array('NANP' => '/^(?:\+?1[-. ]?)?\(?([2-9][0-8][0-9])\)?[-. ]?([2-9][0-9]{2})[-. ]?([0-9]{4})$/', | ||||
| 			'ITU-T' => '/^\+(?:[0-9] ?){6,14}[0-9]$/', 'EPP' => '/^\+[0-9]{1,3}\.[0-9]{4,14}(?:x.+)?$/'); | ||||
| 		if (isset($element['plan'])) | ||||
| 		{ | ||||
|  | ||||
| 			$plan = (string) $element['plan']; | ||||
| 			if ($plan == 'northamerica' || $plan == 'us') | ||||
| 			{ | ||||
| 				$plan = 'NANP'; | ||||
| 			} | ||||
| 			elseif ($plan == 'International' || $plan == 'int' || $plan == 'missdn' || !$plan) | ||||
| 			{ | ||||
| 				$plan = 'ITU-T'; | ||||
| 			} | ||||
| 			elseif ($plan == 'IETF') | ||||
| 			{ | ||||
| 				$plan = 'EPP'; | ||||
| 			} | ||||
|  | ||||
| 			$regex = $regexarray[$plan]; | ||||
|  | ||||
| 			// Test the value against the regular expression. | ||||
| 			if (preg_match($regex, $value) == false) | ||||
| 			{ | ||||
|  | ||||
| 				return false; | ||||
| 			} | ||||
| 		} | ||||
| 		else | ||||
| 		{ | ||||
| 			/* | ||||
| 			 * If the rule is set but no plan is selected just check that there are between | ||||
| 			 * 7 and 15 digits inclusive and no illegal characters (but common number separators | ||||
| 			 * are allowed). | ||||
| 			 */ | ||||
| 			$cleanvalue = preg_replace('/[+. \-(\)]/', '', $value); | ||||
| 			$regex = '/^[0-9]{7,15}?$/'; | ||||
| 			if (preg_match($regex, $cleanvalue) == true) | ||||
| 			{ | ||||
|  | ||||
| 				return true; | ||||
| 			} | ||||
| 			else | ||||
| 			{ | ||||
|  | ||||
| 				return false; | ||||
| 			} | ||||
| 		} | ||||
|  | ||||
| 		return true; | ||||
| 	} | ||||
| } | ||||
							
								
								
									
										98
									
								
								libraries/joomla/form/rule/url.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										98
									
								
								libraries/joomla/form/rule/url.php
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,98 @@ | ||||
| <?php | ||||
| /** | ||||
|  * @package     Joomla.Platform | ||||
|  * @subpackage  Form | ||||
|  * | ||||
|  * @copyright   Copyright (C) 2005 - 2013 Open Source Matters, Inc. All rights reserved. | ||||
|  * @license     GNU General Public License version 2 or later; see LICENSE | ||||
|  */ | ||||
|  | ||||
| defined('JPATH_PLATFORM') or die; | ||||
|  | ||||
| /** | ||||
|  * Form Rule class for the Joomla Platform. | ||||
|  * | ||||
|  * @package     Joomla.Platform | ||||
|  * @subpackage  Form | ||||
|  * @since       11.1 | ||||
|  */ | ||||
| class JFormRuleUrl extends JFormRule | ||||
| { | ||||
| 	/** | ||||
| 	 * Method to test an external url for a valid parts. | ||||
| 	 * | ||||
| 	 * @param   SimpleXMLElement  $element  The SimpleXMLElement object representing the <field /> tag for the form field object. | ||||
| 	 * @param   mixed             $value    The form field value to validate. | ||||
| 	 * @param   string            $group    The field name group control value. This acts as as an array container for the field. | ||||
| 	 *                                      For example if the field has name="foo" and the group value is set to "bar" then the | ||||
| 	 *                                      full field name would end up being "bar[foo]". | ||||
| 	 * @param   JRegistry         $input    An optional JRegistry object with the entire data set to validate against the entire form. | ||||
| 	 * @param   JForm             $form     The form object for which the field is being tested. | ||||
| 	 * | ||||
| 	 * @return  boolean  True if the value is valid, false otherwise. | ||||
| 	 * | ||||
| 	 * @since   11.1 | ||||
| 	 * @link    http://www.w3.org/Addressing/URL/url-spec.txt | ||||
| 	 * @see	    Jstring | ||||
| 	 */ | ||||
| 	public function test(SimpleXMLElement $element, $value, $group = null, JRegistry $input = null, JForm $form = null) | ||||
| 	{ | ||||
| 		// If the field is empty and not required, the field is valid. | ||||
| 		$required = ((string) $element['required'] == 'true' || (string) $element['required'] == 'required'); | ||||
| 		if (!$required && empty($value)) | ||||
| 		{ | ||||
| 			return true; | ||||
| 		} | ||||
| 		$urlParts = JString::parse_url($value); | ||||
|  | ||||
| 		// See http://www.w3.org/Addressing/URL/url-spec.txt | ||||
| 		// Use the full list or optionally specify a list of permitted schemes. | ||||
| 		if ($element['schemes'] == '') | ||||
| 		{ | ||||
| 			$scheme = array('http', 'https', 'ftp', 'ftps', 'gopher', 'mailto', 'news', 'prospero', 'telnet', 'rlogin', 'tn3270', 'wais', 'url', | ||||
| 				'mid', 'cid', 'nntp', 'tel', 'urn', 'ldap', 'file', 'fax', 'modem', 'git'); | ||||
| 		} | ||||
| 		else | ||||
| 		{ | ||||
| 			$scheme = explode(',', $element['schemes']); | ||||
| 		} | ||||
|  | ||||
| 		/* | ||||
| 		 * This rule is only for full URLs with schemes because parse_url does not parse | ||||
| 		 * accurately without a scheme. | ||||
| 		 * @see http://php.net/manual/en/function.parse-url.php | ||||
| 		 */ | ||||
| 		if ($urlParts && !array_key_exists('scheme', $urlParts)) | ||||
| 		{ | ||||
| 			return false; | ||||
| 		} | ||||
| 		$urlScheme = (string) $urlParts['scheme']; | ||||
| 		$urlScheme = strtolower($urlScheme); | ||||
| 		if (in_array($urlScheme, $scheme) == false) | ||||
| 		{ | ||||
| 			return false; | ||||
| 		} | ||||
| 		// For some schemes here must be two slashes. | ||||
| 		if (($urlScheme == 'http' || $urlScheme == 'https' || $urlScheme == 'ftp' || $urlScheme == 'sftp' || $urlScheme == 'gopher' | ||||
| 			|| $urlScheme == 'wais' || $urlScheme == 'gopher' || $urlScheme == 'prospero' || $urlScheme == 'telnet' || $urlScheme == 'git') | ||||
| 			&& ((substr($value, strlen($urlScheme), 3)) !== '://')) | ||||
| 		{ | ||||
| 			return false; | ||||
| 		} | ||||
| 		// The best we can do for the rest is make sure that the strings are valid UTF-8 | ||||
| 		// and the port is an integer. | ||||
| 		if (array_key_exists('host', $urlParts) && !JString::valid((string) $urlParts['host'])) | ||||
| 		{ | ||||
| 			return false; | ||||
| 		} | ||||
| 		if (array_key_exists('port', $urlParts) && !is_int((int) $urlParts['port'])) | ||||
| 		{ | ||||
| 			return false; | ||||
| 		} | ||||
| 		if (array_key_exists('path', $urlParts) && !JString::valid((string) $urlParts['path'])) | ||||
| 		{ | ||||
| 			return false; | ||||
| 		} | ||||
| 		return true; | ||||
| 	} | ||||
| } | ||||
							
								
								
									
										62
									
								
								libraries/joomla/form/rule/username.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										62
									
								
								libraries/joomla/form/rule/username.php
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,62 @@ | ||||
| <?php | ||||
| /** | ||||
|  * @package     Joomla.Platform | ||||
|  * @subpackage  Form | ||||
|  * | ||||
|  * @copyright   Copyright (C) 2005 - 2013 Open Source Matters, Inc. All rights reserved. | ||||
|  * @license     GNU General Public License version 2 or later; see LICENSE | ||||
|  */ | ||||
|  | ||||
| defined('JPATH_PLATFORM') or die; | ||||
|  | ||||
| /** | ||||
|  * Form Rule class for the Joomla Platform. | ||||
|  * | ||||
|  * @package     Joomla.Platform | ||||
|  * @subpackage  Form | ||||
|  * @since       11.1 | ||||
|  */ | ||||
| class JFormRuleUsername extends JFormRule | ||||
| { | ||||
| 	/** | ||||
| 	 * Method to test the username for uniqueness. | ||||
| 	 * | ||||
| 	 * @param   SimpleXMLElement  $element  The SimpleXMLElement object representing the <field /> tag for the form field object. | ||||
| 	 * @param   mixed             $value    The form field value to validate. | ||||
| 	 * @param   string            $group    The field name group control value. This acts as as an array container for the field. | ||||
| 	 *                                      For example if the field has name="foo" and the group value is set to "bar" then the | ||||
| 	 *                                      full field name would end up being "bar[foo]". | ||||
| 	 * @param   JRegistry         $input    An optional JRegistry object with the entire data set to validate against the entire form. | ||||
| 	 * @param   JForm             $form     The form object for which the field is being tested. | ||||
| 	 * | ||||
| 	 * @return  boolean  True if the value is valid, false otherwise. | ||||
| 	 * | ||||
| 	 * @since   11.1 | ||||
| 	 */ | ||||
| 	public function test(SimpleXMLElement $element, $value, $group = null, JRegistry $input = null, JForm $form = null) | ||||
| 	{ | ||||
| 		// Get the database object and a new query object. | ||||
| 		$db = JFactory::getDbo(); | ||||
| 		$query = $db->getQuery(true); | ||||
|  | ||||
| 		// Build the query. | ||||
| 		$query->select('COUNT(*)') | ||||
| 			->from('#__users') | ||||
| 			->where('username = ' . $db->quote($value)); | ||||
|  | ||||
| 		// Get the extra field check attribute. | ||||
| 		$userId = ($form instanceof JForm) ? $form->getValue('id') : ''; | ||||
| 		$query->where($db->quoteName('id') . ' <> ' . (int) $userId); | ||||
|  | ||||
| 		// Set and query the database. | ||||
| 		$db->setQuery($query); | ||||
| 		$duplicate = (bool) $db->loadResult(); | ||||
|  | ||||
| 		if ($duplicate) | ||||
| 		{ | ||||
| 			return false; | ||||
| 		} | ||||
|  | ||||
| 		return true; | ||||
| 	} | ||||
| } | ||||
		Reference in New Issue
	
	Block a user
	 alazhar
					alazhar