[ Index ]

PHP Cross Reference of vtigercrm-6.1.0

title

Body

[close]

/libraries/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/ -> Number.php (source)

   1  <?php
   2  
   3  /**
   4   * Validates a number as defined by the CSS spec.
   5   */
   6  class HTMLPurifier_AttrDef_CSS_Number extends HTMLPurifier_AttrDef
   7  {
   8  
   9      /**
  10       * Bool indicating whether or not only positive values allowed.
  11       */
  12      protected $non_negative = false;
  13  
  14      /**
  15       * @param $non_negative Bool indicating whether negatives are forbidden
  16       */
  17      public function __construct($non_negative = false) {
  18          $this->non_negative = $non_negative;
  19      }
  20  
  21      /**
  22       * @warning Some contexts do not pass $config, $context. These
  23       *          variables should not be used without checking HTMLPurifier_Length
  24       */
  25      public function validate($number, $config, $context) {
  26  
  27          $number = $this->parseCDATA($number);
  28  
  29          if ($number === '') return false;
  30          if ($number === '0') return '0';
  31  
  32          $sign = '';
  33          switch ($number[0]) {
  34              case '-':
  35                  if ($this->non_negative) return false;
  36                  $sign = '-';
  37              case '+':
  38                  $number = substr($number, 1);
  39          }
  40  
  41          if (ctype_digit($number)) {
  42              $number = ltrim($number, '0');
  43              return $number ? $sign . $number : '0';
  44          }
  45  
  46          // Period is the only non-numeric character allowed
  47          if (strpos($number, '.') === false) return false;
  48  
  49          list($left, $right) = explode('.', $number, 2);
  50  
  51          if ($left === '' && $right === '') return false;
  52          if ($left !== '' && !ctype_digit($left)) return false;
  53  
  54          $left  = ltrim($left,  '0');
  55          $right = rtrim($right, '0');
  56  
  57          if ($right === '') {
  58              return $left ? $sign . $left : '0';
  59          } elseif (!ctype_digit($right)) {
  60              return false;
  61          }
  62  
  63          return $sign . $left . '.' . $right;
  64  
  65      }
  66  
  67  }
  68  
  69  // vim: et sw=4 sts=4


Generated: Fri Nov 28 20:08:37 2014 Cross-referenced by PHPXref 0.7.1