get_content_from_dom() public static method

public static get_content_from_dom ( $dom )
 /**
  * @dataProvider get_data
  */
 public function test_converter($source, $expected)
 {
     $dom = AMP_DOM_Utils::get_dom_from_content($source);
     $sanitizer = new AMP_Video_Sanitizer($dom);
     $sanitizer->sanitize();
     $content = AMP_DOM_Utils::get_content_from_dom($dom);
     $this->assertEquals($expected, $content);
 }
 public function test__get_content_from_dom__br_no_closing_tag()
 {
     $source = '<br/>';
     $expected = '<br/>';
     $dom = AMP_DOM_Utils::get_dom_from_content($source);
     $actual = AMP_DOM_Utils::get_content_from_dom($dom);
     $this->assertEquals($expected, $actual);
 }
 public function test_utf8_content()
 {
     $source = '<p>Iñtërnâtiônàlizætiøn</p>';
     $expected = '<p>Iñtërnâtiônàlizætiøn</p>';
     $dom = AMP_DOM_Utils::get_dom_from_content($source);
     $content = AMP_DOM_Utils::get_content_from_dom($dom);
     $this->assertEquals($expected, $content);
 }
 public function test__args__placeholder()
 {
     $source = '<iframe src="https://example.com/video/132886713" width="500" height="281"></iframe>';
     $expected = '<amp-iframe src="https://example.com/video/132886713" width="500" height="281" sandbox="allow-scripts allow-same-origin" sizes="(min-width: 500px) 500px, 100vw" class="amp-wp-enforced-sizes"><div placeholder="" class="amp-wp-iframe-placeholder"></div></amp-iframe>';
     $dom = AMP_DOM_Utils::get_dom_from_content($source);
     $sanitizer = new AMP_Iframe_Sanitizer($dom, array('add_placeholder' => true));
     $sanitizer->sanitize();
     $content = AMP_DOM_Utils::get_content_from_dom($dom);
     $this->assertEquals($expected, $content);
 }
 public function test__https_required()
 {
     $source = '<audio width="400" height="300" src="http://example.com/audio/file.ogg"></audio>';
     $expected = '';
     $dom = AMP_DOM_Utils::get_dom_from_content($source);
     $sanitizer = new AMP_Audio_Sanitizer($dom, array('require_https_src' => true));
     $sanitizer->sanitize();
     $content = AMP_DOM_Utils::get_content_from_dom($dom);
     $this->assertEquals($expected, $content);
 }
 /**
  * @dataProvider get_data
  */
 public function test_sanitizer($source, $expected_content, $expected_stylesheet)
 {
     $dom = AMP_DOM_Utils::get_dom_from_content($source);
     $sanitizer = new AMP_Style_Sanitizer($dom);
     $sanitizer->sanitize();
     // Test content
     $content = AMP_DOM_Utils::get_content_from_dom($dom);
     $this->assertEquals($expected_content, $content);
     // Test stylesheet
     $stylesheet = $sanitizer->get_styles();
     $this->assertEquals($expected_stylesheet, $stylesheet);
 }
Example #7
0
 private function sanitize($content)
 {
     $dom = AMP_DOM_Utils::get_dom_from_content($content);
     foreach ($this->sanitizer_classes as $sanitizer_class => $args) {
         $sanitizer = new $sanitizer_class($dom, array_merge($this->args, $args));
         if (!is_subclass_of($sanitizer, 'AMP_Base_Sanitizer')) {
             _doing_it_wrong(__METHOD__, sprintf(__('Sanitizer (%s) must extend `AMP_Base_Sanitizer`', 'amp'), esc_html($sanitizer_class)), '0.1');
             continue;
         }
         $sanitizer->sanitize();
         $this->add_scripts($sanitizer->get_scripts());
     }
     return AMP_DOM_Utils::get_content_from_dom($dom);
 }
Example #8
0
 public function transform()
 {
     $content = $this->original_content;
     $twitter_embed = new AMP_Twitter_Embed_Handler();
     $youtube_embed = new AMP_YouTube_Embed_Handler();
     $gallery_embed = new AMP_Gallery_Embed_Handler();
     $instagram_embed = new AMP_Instagram_Embed_Handler();
     $content = apply_filters('the_content', $content);
     $this->add_scripts($twitter_embed->get_scripts());
     $this->add_scripts($youtube_embed->get_scripts());
     $this->add_scripts($gallery_embed->get_scripts());
     $this->add_scripts($instagram_embed->get_scripts());
     $dom = AMP_DOM_Utils::get_dom_from_content($content);
     $this->sanitize(new AMP_Blacklist_Sanitizer($dom, $this->args));
     $this->sanitize(new AMP_Img_Sanitizer($dom, $this->args));
     $this->sanitize(new AMP_Video_Sanitizer($dom, $this->args));
     $this->sanitize(new AMP_Iframe_Sanitizer($dom, $this->args));
     $this->sanitize(new AMP_Audio_Sanitizer($dom, $this->args));
     $content = AMP_DOM_Utils::get_content_from_dom($dom);
     return $content;
 }
Example #9
0
 public static function sanitize($content, $sanitizer_classes, $args = array())
 {
     $scripts = array();
     $styles = array();
     $dom = AMP_DOM_Utils::get_dom_from_content($content);
     foreach ($sanitizer_classes as $sanitizer_class => $args) {
         if (!class_exists($sanitizer_class)) {
             _doing_it_wrong(__METHOD__, sprintf(__('Sanitizer (%s) class does not exist', 'amp'), esc_html($sanitizer_class)), '0.4.1');
             continue;
         }
         $sanitizer = new $sanitizer_class($dom, array_merge($args, $args));
         if (!is_subclass_of($sanitizer, 'AMP_Base_Sanitizer')) {
             _doing_it_wrong(__METHOD__, sprintf(__('Sanitizer (%s) must extend `AMP_Base_Sanitizer`', 'amp'), esc_html($sanitizer_class)), '0.1');
             continue;
         }
         $sanitizer->sanitize();
         $scripts = array_merge($scripts, $sanitizer->get_scripts());
         $styles = array_merge($styles, $sanitizer->get_styles());
     }
     $sanitized_content = AMP_DOM_Utils::get_content_from_dom($dom);
     return array($sanitized_content, $scripts, $styles);
 }