[ Index ]

PHP Cross Reference of vtigercrm-6.1.0

title

Body

[close]

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

   1  <?php
   2  
   3  /**
   4   * Framework class for strings that involve multiple values.
   5   *
   6   * Certain CSS properties such as border-width and margin allow multiple
   7   * lengths to be specified.  This class can take a vanilla border-width
   8   * definition and multiply it, usually into a max of four.
   9   *
  10   * @note Even though the CSS specification isn't clear about it, inherit
  11   *       can only be used alone: it will never manifest as part of a multi
  12   *       shorthand declaration.  Thus, this class does not allow inherit.
  13   */
  14  class HTMLPurifier_AttrDef_CSS_Multiple extends HTMLPurifier_AttrDef
  15  {
  16  
  17      /**
  18       * Instance of component definition to defer validation to.
  19       * @todo Make protected
  20       */
  21      public $single;
  22  
  23      /**
  24       * Max number of values allowed.
  25       * @todo Make protected
  26       */
  27      public $max;
  28  
  29      /**
  30       * @param $single HTMLPurifier_AttrDef to multiply
  31       * @param $max Max number of values allowed (usually four)
  32       */
  33      public function __construct($single, $max = 4) {
  34          $this->single = $single;
  35          $this->max = $max;
  36      }
  37  
  38      public function validate($string, $config, $context) {
  39          $string = $this->parseCDATA($string);
  40          if ($string === '') return false;
  41          $parts = explode(' ', $string); // parseCDATA replaced \r, \t and \n
  42          $length = count($parts);
  43          $final = '';
  44          for ($i = 0, $num = 0; $i < $length && $num < $this->max; $i++) {
  45              if (ctype_space($parts[$i])) continue;
  46              $result = $this->single->validate($parts[$i], $config, $context);
  47              if ($result !== false) {
  48                  $final .= $result . ' ';
  49                  $num++;
  50              }
  51          }
  52          if ($final === '') return false;
  53          return rtrim($final);
  54      }
  55  
  56  }
  57  
  58  // vim: et sw=4 sts=4


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