PageRenderTime 51ms CodeModel.GetById 17ms RepoModel.GetById 0ms app.codeStats 0ms

/s5-members/library/pear/HTML/QuickForm2/Rule/NotRegex.php

https://bitbucket.org/awylie199/s5t
PHP | 106 lines | 29 code | 5 blank | 72 comment | 6 complexity | e65cec1acfc9e707127f58b80530a68e MD5 | raw file
Possible License(s): LGPL-2.1, MPL-2.0-no-copyleft-exception, Apache-2.0, LGPL-3.0, MIT, BSD-3-Clause
  1. <?php
  2. /**
  3. * Checks that the element's value does not match a regular expression
  4. *
  5. * PHP version 5
  6. *
  7. * LICENSE:
  8. *
  9. * Copyright (c) 2006-2010, Alexey Borzov <avb@php.net>,
  10. * Bertrand Mansion <golgote@mamasam.com>
  11. * All rights reserved.
  12. *
  13. * Redistribution and use in source and binary forms, with or without
  14. * modification, are permitted provided that the following conditions
  15. * are met:
  16. *
  17. * * Redistributions of source code must retain the above copyright
  18. * notice, this list of conditions and the following disclaimer.
  19. * * Redistributions in binary form must reproduce the above copyright
  20. * notice, this list of conditions and the following disclaimer in the
  21. * documentation and/or other materials provided with the distribution.
  22. * * The names of the authors may not be used to endorse or promote products
  23. * derived from this software without specific prior written permission.
  24. *
  25. * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
  26. * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
  27. * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
  28. * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  29. * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  30. * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  31. * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  32. * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
  33. * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  34. * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  35. * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  36. *
  37. * @category HTML
  38. * @package HTML_QuickForm2
  39. * @author Alexey Borzov <avb@php.net>
  40. * @author Bertrand Mansion <golgote@mamasam.com>
  41. * @license http://opensource.org/licenses/bsd-license.php New BSD License
  42. * @version SVN: $Id: NotRegex.php 304176 2010-10-07 10:46:52Z avb $
  43. * @link http://pear.php.net/package/HTML_QuickForm2
  44. */
  45. /**
  46. * Validates values using regular expressions
  47. */
  48. require_once 'HTML/QuickForm2/Rule/Regex.php';
  49. /**
  50. * Checks that the element's value does not match a regular expression
  51. *
  52. * The Rule behaves like Regex Rule, but it considers the element valid if its
  53. * value does not match the given regular expression.
  54. *
  55. * @category HTML
  56. * @package HTML_QuickForm2
  57. * @author Alexey Borzov <avb@php.net>
  58. * @author Bertrand Mansion <golgote@mamasam.com>
  59. * @version Release: @package_version@
  60. */
  61. class HTML_QuickForm2_Rule_NotRegex extends HTML_QuickForm2_Rule_Regex
  62. {
  63. /**
  64. * Validates the owner element
  65. *
  66. * @return bool whether element's value does not match given regular expression
  67. */
  68. protected function validateOwner()
  69. {
  70. $value = $this->owner->getValue();
  71. if ($this->owner instanceof HTML_QuickForm2_Element_InputFile) {
  72. if (!isset($value['error']) || UPLOAD_ERR_NO_FILE == $value['error']) {
  73. return true;
  74. }
  75. $value = $value['name'];
  76. } elseif (!strlen($value)) {
  77. return true;
  78. }
  79. return !preg_match($this->getConfig() . 'D', $value);
  80. }
  81. /**
  82. * Returns the client-side validation callback
  83. *
  84. * For this to work properly, slashes have to be used as regex delimiters.
  85. * The method takes care of transforming PHP unicode escapes in regexps to
  86. * JS unicode escapes if using 'u' modifier (see bug #12376)
  87. *
  88. * @return string
  89. */
  90. protected function getJavascriptCallback()
  91. {
  92. $regex = $this->getConfig();
  93. if ($pos = strpos($regex, 'u', strrpos($regex, '/'))) {
  94. $regex = substr($regex, 0, $pos) . substr($regex, $pos + 1);
  95. $regex = preg_replace('/(?<!\\\\)(?>\\\\\\\\)*\\\\x{([a-fA-F0-9]+)}/', '\\u$1', $regex);
  96. }
  97. return "function() { var value = " . $this->owner->getJavascriptValue() .
  98. "; return qf.rules.empty(value) || !{$regex}.test(value); }";
  99. }
  100. }
  101. ?>