File ManagerCurrent Directory: wp-content/plugins/wpforms/vendor_prefixed/ezyang/htmlpurifier/library/HTMLPurifier/ChildDefLinux appserver-0d5e4f1e-php-cc8da225320a42ba9b7d66cba40b1f03 6.6.123+ #1 SMP PREEMPT_DYNAMIC Wed Mar 11 09:04:28 UTC 2026 x86_64Edit File: Custom.php <?php namespace WPForms\Vendor; /** * Custom validation class, accepts DTD child definitions * * @warning Currently this class is an all or nothing proposition, that is, * it will only give a bool return value. */ class HTMLPurifier_ChildDef_Custom extends HTMLPurifier_ChildDef { /** * @type string */ public $type = 'custom'; /** * @type bool */ public $allow_empty = \false; /** * Allowed child pattern as defined by the DTD. * @type string */ public $dtd_regex; /** * PCRE regex derived from $dtd_regex. * @type string */ private $_pcre_regex; /** * @param $dtd_regex Allowed child pattern from the DTD */ public function __construct($dtd_regex) { $this->dtd_regex = $dtd_regex; $this->_compileRegex(); } /** * Compiles the PCRE regex from a DTD regex ($dtd_regex to $_pcre_regex) */ protected function _compileRegex() { $raw = \str_replace(' ', '', $this->dtd_regex); if ($raw[0] != '(') { $raw = "({$raw})"; } $el = '[#a-zA-Z0-9_.-]+'; $reg = $raw; // COMPLICATED! AND MIGHT BE BUGGY! I HAVE NO CLUE WHAT I'M // DOING! Seriously: if there's problems, please report them. // collect all elements into the $elements array \preg_match_all("/{$el}/", $reg, $matches); foreach ($matches[0] as $match) { $this->elements[$match] = \true; } // setup all elements as parentheticals with leading commas $reg = \preg_replace("/{$el}/", '(,\\0)', $reg); // remove commas when they were not solicited $reg = \preg_replace("/([^,(|]\\(+),/", '\\1', $reg); // remove all non-paranthetical commas: they are handled by first regex $reg = \preg_replace("/,\\(/", '(', $reg); $this->_pcre_regex = $reg; } /** * @param HTMLPurifier_Node[] $children * @param HTMLPurifier_Config $config * @param HTMLPurifier_Context $context * @return bool */ public function validateChildren($children, $config, $context) { $list_of_children = ''; $nesting = 0; // depth into the nest foreach ($children as $node) { if (!empty($node->is_whitespace)) { continue; } $list_of_children .= $node->name . ','; } // add leading comma to deal with stray comma declarations $list_of_children = ',' . \rtrim($list_of_children, ','); $okay = \preg_match('/^,?' . $this->_pcre_regex . '$/', $list_of_children); return (bool) $okay; } } // vim: et sw=4 sts=4 Upload File Directory Listing NameTypeSizeActions.. (Parent Directory)DirChameleon.phpFile1.75 KB Rename | Delete | EditCustom.phpFile2.65 KB Rename | Delete | EditEmpty.phpFile890.00 B Rename | Delete | EditList.phpFile3.02 KB Rename | Delete | EditOptional.phpFile1.21 KB Rename | Delete | EditRequired.phpFile3.33 KB Rename | Delete | EditStrictBlockquote.phpFile2.84 KB Rename | Delete | EditTable.phpFile7.43 KB Rename | Delete | Edit