summaryrefslogtreecommitdiffstats
path: root/vendor/fguillot/picofeed/lib/PicoFeed/Filter/Html.php
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/fguillot/picofeed/lib/PicoFeed/Filter/Html.php')
m---------vendor/fguillot/picofeed0
-rw-r--r--vendor/fguillot/picofeed/lib/PicoFeed/Filter/Html.php203
2 files changed, 0 insertions, 203 deletions
diff --git a/vendor/fguillot/picofeed b/vendor/fguillot/picofeed
new file mode 160000
+Subproject 0a1d0d3950f7f047dc8fb1d80aa6296e15f306d
diff --git a/vendor/fguillot/picofeed/lib/PicoFeed/Filter/Html.php b/vendor/fguillot/picofeed/lib/PicoFeed/Filter/Html.php
deleted file mode 100644
index 7abd740b1..000000000
--- a/vendor/fguillot/picofeed/lib/PicoFeed/Filter/Html.php
+++ /dev/null
@@ -1,203 +0,0 @@
-<?php
-
-namespace PicoFeed\Filter;
-
-use \PicoFeed\Client\Url;
-use \PicoFeed\Parser\XmlParser;
-
-/**
- * HTML Filter class
- *
- * @author Frederic Guillot
- * @package Filter
- */
-class Html
-{
- /**
- * Config object
- *
- * @access private
- * @var \PicoFeed\Config\Config
- */
- private $config;
-
- /**
- * Unfiltered XML data
- *
- * @access private
- * @var string
- */
- private $input = '';
-
- /**
- * Filtered XML data
- *
- * @access private
- * @var string
- */
- private $output = '';
-
- /**
- * List of empty tags
- *
- * @access private
- * @var array
- */
- private $empty_tags = array();
-
- /**
- * Empty flag
- *
- * @access private
- * @var boolean
- */
- private $empty = true;
-
- /**
- * Tag instance
- *
- * @access public
- * @var \PicoFeed\Filter\Tag
- */
- public $tag = '';
-
- /**
- * Attribute instance
- *
- * @access public
- * @var \PicoFeed\Filter\Attribute
- */
- public $attribute = '';
-
- /**
- * Initialize the filter, all inputs data must be encoded in UTF-8 before
- *
- * @access public
- * @param string $html HTML content
- * @param string $website Site URL (used to build absolute URL)
- */
- public function __construct($html, $website)
- {
- $this->input = XmlParser::HtmlToXml($html);
- $this->output = '';
- $this->tag = new Tag;
- $this->attribute = new Attribute(new Url($website));
- }
-
- /**
- * Set config object
- *
- * @access public
- * @param \PicoFeed\Config\Config $config Config instance
- * @return \PicoFeed\Filter\Html
- */
- public function setConfig($config)
- {
- $this->config = $config;
-
- if ($this->config !== null) {
- $this->attribute->setImageProxyCallback($this->config->getFilterImageProxyCallback());
- $this->attribute->setImageProxyUrl($this->config->getFilterImageProxyUrl());
- $this->attribute->setIframeWhitelist($this->config->getFilterIframeWhitelist(array()));
- $this->attribute->setIntegerAttributes($this->config->getFilterIntegerAttributes(array()));
- $this->attribute->setAttributeOverrides($this->config->getFilterAttributeOverrides(array()));
- $this->attribute->setRequiredAttributes($this->config->getFilterRequiredAttributes(array()));
- $this->attribute->setMediaBlacklist($this->config->getFilterMediaBlacklist(array()));
- $this->attribute->setMediaAttributes($this->config->getFilterMediaAttributes(array()));
- $this->attribute->setSchemeWhitelist($this->config->getFilterSchemeWhitelist(array()));
- $this->attribute->setWhitelistedAttributes($this->config->getFilterWhitelistedTags(array()));
- $this->tag->setWhitelistedTags(array_keys($this->config->getFilterWhitelistedTags(array())));
- }
-
- return $this;
- }
-
- /**
- * Run tags/attributes filtering
- *
- * @access public
- * @return string
- */
- public function execute()
- {
- $parser = xml_parser_create();
-
- xml_set_object($parser, $this);
- xml_set_element_handler($parser, 'startTag', 'endTag');
- xml_set_character_data_handler($parser, 'dataTag');
- xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, false);
- xml_parse($parser, $this->input, true);
- xml_parser_free($parser);
-
- $this->postFilter();
-
- return $this->output;
- }
-
- /**
- * Called after XML parsing
- *
- * @access public
- */
- public function postFilter()
- {
- $this->output = $this->tag->removeEmptyTags($this->output);
- $this->output = trim($this->output);
- }
-
- /**
- * Parse opening tag
- *
- * @access public
- * @param resource $parser XML parser
- * @param string $tag Tag name
- * @param array $attributes Tag attributes
- */
- public function startTag($parser, $tag, array $attributes)
- {
- $this->empty = true;
-
- if ($this->tag->isAllowed($tag, $attributes)) {
-
- $attributes = $this->attribute->filter($tag, $attributes);
-
- if ($this->attribute->hasRequiredAttributes($tag, $attributes)) {
-
- $attributes = $this->attribute->addAttributes($tag, $attributes);
-
- $this->output .= $this->tag->openHtmlTag($tag, $this->attribute->toHtml($attributes));
- $this->empty = false;
- }
- }
-
- $this->empty_tags[] = $this->empty;
- }
-
- /**
- * Parse closing tag
- *
- * @access public
- * @param resource $parser XML parser
- * @param string $tag Tag name
- */
- public function endTag($parser, $tag)
- {
- if (! array_pop($this->empty_tags) && $this->tag->isAllowedTag($tag)) {
- $this->output .= $this->tag->closeHtmlTag($tag);
- }
- }
-
- /**
- * Parse tag content
- *
- * @access public
- * @param resource $parser XML parser
- * @param string $content Tag content
- */
- public function dataTag($parser, $content)
- {
- // Replace &nbsp; with normal space
- $content = str_replace("\xc2\xa0", ' ', $content);
- $this->output .= Filter::escape($content);
- }
-}