*/
class Tweeper {
- private static $userAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:60.0) Gecko/20100101 Firefox/60.0";
+ private static $userAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:64.0) Gecko/20100101 Firefox/64.0";
private static $maxConnectionTimeout = 5;
private static $maxConnectionRetries = 5;
* 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;
}
/**
CURLOPT_CONNECTTIMEOUT => Tweeper::$maxConnectionTimeout,
// Follow http redirects to get the real URL.
CURLOPT_FOLLOWLOCATION => TRUE,
+ CURLOPT_COOKIEFILE => "",
CURLOPT_RETURNTRANSFER => TRUE,
CURLOPT_SSL_VERIFYHOST => FALSE,
CURLOPT_SSL_VERIFYPEER => FALSE,
// 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;
$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;