X-Git-Url: https://git.ao2.it/tweeper.git/blobdiff_plain/6c535395860b51d2c1debf92437192c6bf862b16..77e6cd315b5c270104a1116102d0296cf3e6495b:/src/Tweeper.php diff --git a/src/Tweeper.php b/src/Tweeper.php index d58b529..09bd7cc 100644 --- a/src/Tweeper.php +++ b/src/Tweeper.php @@ -49,10 +49,15 @@ class Tweeper { * Enables showing the username in front of the content for multi-user * sites (enabled by default). Only some stylesheets supports this * functionality (twitter, instagram, pump.io). + * @param bool $show_multimedia + * Enables showing multimedia content (images, videos) directly in the + * item description (enabled by default). Only some stylesheets supports + * this functionality (twitter, instagram, dilbert). */ - public function __construct($generate_enclosure = FALSE, $show_usernames = TRUE) { + public function __construct($generate_enclosure = FALSE, $show_usernames = TRUE, $show_multimedia = TRUE) { $this->generate_enclosure = $generate_enclosure; $this->show_usernames = $show_usernames; + $this->show_multimedia = $show_multimedia; } /** @@ -201,10 +206,17 @@ class Tweeper { // See http://sourceforge.net/p/feedvalidator/bugs/72/ $http_url = preg_replace("/^https/", "http", $url_info['url']); + // When the server does not provide a Content-Length header, + // curl_getinfo() would return a negative value for + // "download_content_length", however RSS recommends to use 0 when the + // enclosure's size cannot be determined. + // See: https://www.feedvalidator.org/docs/error/UseZeroForUnknown.html + $length = max($url_info['download_content_length'], 0); + $dom = new DOMDocument(); $enc = $dom->createElement('enclosure'); $enc->setAttribute('url', $http_url); - $enc->setAttribute('length', $url_info['download_content_length']); + $enc->setAttribute('length', $length); $enc->setAttribute('type', $url_info['content_type']); return $enc; @@ -362,6 +374,7 @@ class Tweeper { $xsltProcessor->registerPHPFunctions(); $xsltProcessor->setParameter('', 'generate-enclosure', $this->generate_enclosure); $xsltProcessor->setParameter('', 'show-usernames', $this->show_usernames); + $xsltProcessor->setParameter('', 'show-multimedia', $this->show_multimedia); $xsltProcessor->importStylesheet($xslDoc); return $xsltProcessor; @@ -370,7 +383,7 @@ class Tweeper { /** * Convert the site content to RSS. */ - public function tweep($src_url, $host=NULL, $validate_scheme=TRUE) { + public function tweep($src_url, $host = NULL, $validate_scheme = TRUE) { $url = parse_url($src_url); if (FALSE === $url) { trigger_error("Invalid URL: $src_url", E_USER_WARNING); @@ -385,7 +398,7 @@ class Tweeper { } } - // if the host is not given derive it from the URL + // If the host is not given derive it from the URL. if (NULL === $host) { if (empty($url["host"])) { trigger_error("Invalid host in URL: $src_url", E_USER_WARNING);