commiting uncommited changes on live site
[weblabels.fsf.org.git] / crm.fsf.org / 20131203 / files / sites / all / modules-old / civicrm / packages / IDS / vendors / htmlpurifier / HTMLPurifier / AttrDef / HTML / Class.php
1 <?php
2
3 /**
4 * Implements special behavior for class attribute (normally NMTOKENS)
5 */
6 class HTMLPurifier_AttrDef_HTML_Class extends HTMLPurifier_AttrDef_HTML_Nmtokens
7 {
8 protected function split($string, $config, $context) {
9 // really, this twiddle should be lazy loaded
10 $name = $config->getDefinition('HTML')->doctype->name;
11 if ($name == "XHTML 1.1" || $name == "XHTML 2.0") {
12 return parent::split($string, $config, $context);
13 } else {
14 return preg_split('/\s+/', $string);
15 }
16 }
17 protected function filter($tokens, $config, $context) {
18 $allowed = $config->get('Attr.AllowedClasses');
19 $forbidden = $config->get('Attr.ForbiddenClasses');
20 $ret = array();
21 foreach ($tokens as $token) {
22 if (
23 ($allowed === null || isset($allowed[$token])) &&
24 !isset($forbidden[$token]) &&
25 // We need this O(n) check because of PHP's array
26 // implementation that casts -0 to 0.
27 !in_array($token, $ret, true)
28 ) {
29 $ret[] = $token;
30 }
31 }
32 return $ret;
33 }
34 }