/libraries/joomla/form/rule/color.php

https://gitlab.com/vitaliylukin91/lavka · PHP · 62 lines · 24 code · 8 blank · 30 comment · 8 complexity · a800bf8bdc353d1616853eb84c61fac4 MD5 · raw file

  1. <?php
  2. /**
  3. * @package Joomla.Platform
  4. * @subpackage Form
  5. *
  6. * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved.
  7. * @license GNU General Public License version 2 or later; see LICENSE
  8. */
  9. defined('JPATH_PLATFORM') or die;
  10. use Joomla\Registry\Registry;
  11. /**
  12. * Form Rule class for the Joomla Platform.
  13. *
  14. * @since 11.2
  15. */
  16. class JFormRuleColor extends JFormRule
  17. {
  18. /**
  19. * Method to test for a valid color in hexadecimal.
  20. *
  21. * @param SimpleXMLElement $element The SimpleXMLElement object representing the <field /> tag for the form field object.
  22. * @param mixed $value The form field value to validate.
  23. * @param string $group The field name group control value. This acts as as an array container for the field.
  24. * For example if the field has name="foo" and the group value is set to "bar" then the
  25. * full field name would end up being "bar[foo]".
  26. * @param Registry $input An optional Registry object with the entire data set to validate against the entire form.
  27. * @param JForm $form The form object for which the field is being tested.
  28. *
  29. * @return boolean True if the value is valid, false otherwise.
  30. *
  31. * @since 11.2
  32. */
  33. public function test(SimpleXMLElement $element, $value, $group = null, Registry $input = null, JForm $form = null)
  34. {
  35. $value = trim($value);
  36. if (empty($value))
  37. {
  38. // A color field can't be empty
  39. return false;
  40. }
  41. if ($value[0] != '#')
  42. {
  43. return false;
  44. }
  45. // Remove the leading # if present to validate the numeric part
  46. $value = ltrim($value, '#');
  47. // The value must be 6 or 3 characters long
  48. if (!((strlen($value) == 6 || strlen($value) == 3) && ctype_xdigit($value)))
  49. {
  50. return false;
  51. }
  52. return true;
  53. }
  54. }