HTMLPurifier/ChildDef/StrictBlockquote.php Quellcode

StrictBlockquote.php
gehe zur Dokumentation dieser Datei
1 <?php
2 
7 {
11  protected $real_elements;
12 
16  protected $fake_elements;
17 
21  public $allow_empty = true;
22 
26  public $type = 'strictblockquote';
27 
31  protected $init = false;
32 
39  public function getAllowedElements($config)
40  {
41  $this->init($config);
42  return $this->fake_elements;
43  }
44 
51  public function validateChildren($children, $config, $context)
52  {
53  $this->init($config);
54 
55  // trick the parent class into thinking it allows more
56  $this->elements = $this->fake_elements;
57  $result = parent::validateChildren($children, $config, $context);
58  $this->elements = $this->real_elements;
59 
60  if ($result === false) {
61  return array();
62  }
63  if ($result === true) {
64  $result = $children;
65  }
66 
67  $def = $config->getHTMLDefinition();
68  $block_wrap_name = $def->info_block_wrapper;
69  $block_wrap = false;
70  $ret = array();
71 
72  foreach ($result as $node) {
73  if ($block_wrap === false) {
74  if (($node instanceof HTMLPurifier_Node_Text && !$node->is_whitespace) ||
75  ($node instanceof HTMLPurifier_Node_Element && !isset($this->elements[$node->name]))) {
76  $block_wrap = new HTMLPurifier_Node_Element($def->info_block_wrapper);
77  $ret[] = $block_wrap;
78  }
79  } else {
80  if ($node instanceof HTMLPurifier_Node_Element && isset($this->elements[$node->name])) {
81  $block_wrap = false;
82 
83  }
84  }
85  if ($block_wrap) {
86  $block_wrap->children[] = $node;
87  } else {
88  $ret[] = $node;
89  }
90  }
91  return $ret;
92  }
93 
97  private function init($config)
98  {
99  if (!$this->init) {
100  $def = $config->getHTMLDefinition();
101  // allow all inline elements
102  $this->real_elements = $this->elements;
103  $this->fake_elements = $def->info_content_sets['Flow'];
104  $this->fake_elements['#PCDATA'] = true;
105  $this->init = true;
106  }
107  }
108 }
109 
110 // vim: et sw=4 sts=4




Korrekturen, Hinweise und Ergänzungen

Bitte scheuen Sie sich nicht und melden Sie, was auf dieser Seite sachlich falsch oder irreführend ist, was ergänzt werden sollte, was fehlt usw. Dazu bitte oben aus dem Menü Seite den Eintrag Support Forum wählen. Es ist eine kostenlose Anmeldung erforderlich, um Anmerkungen zu posten. Unpassende Postings, Spam usw. werden kommentarlos entfernt.