CURLOPT_USERAGENT => Tweeper::$userAgent,
));
$contents = curl_exec($ch);
+ if (FALSE === $contents) {
+ trigger_error(curl_error($ch));
+ }
curl_close($ch);
return $contents;
));
curl_exec($ch);
$url_info = curl_getinfo($ch);
+ if (FALSE === $url_info) {
+ trigger_error(curl_error($ch));
+ }
curl_close($ch);
return $url_info;
*/
public static function generateEnclosure($url) {
$supported_content_types = array(
+ "application/octet-stream",
"application/ogg",
+ "application/pdf",
"audio/aac",
"audio/mp4",
"audio/mpeg",
"audio/x-midi",
"image/gif",
"image/jpeg",
+ "image/png",
"video/avi",
"video/mp4",
"video/mpeg",
"video/ogg",
);
- // The RSS specification says that the enclosure element URL must be http.
- // See http://sourceforge.net/p/feedvalidator/bugs/72/
- $http_url = preg_replace("/^https/", "http", $url);
-
- $url_info = Tweeper::getUrlInfo($http_url);
+ $url_info = Tweeper::getUrlInfo($url);
$supported = in_array($url_info['content_type'], $supported_content_types);
if (!$supported) {
return '';
}
- $dom = new DomDocument();
+ // The RSS specification says that the enclosure element URL must be http.
+ // See http://sourceforge.net/p/feedvalidator/bugs/72/
+ $http_url = preg_replace("/^https/", "http", $url_info['url']);
+
+ $dom = new DOMDocument();
$enc = $dom->createElement('enclosure');
- $enc->setAttribute('url', $url_info['url']);
+ $enc->setAttribute('url', $http_url);
$enc->setAttribute('length', $url_info['download_content_length']);
$enc->setAttribute('type', $url_info['content_type']);
- $dom->appendChild($enc);
-
- return $dom->saveXML($enc);
+ return $enc;
}
/**
}
/**
- * Load a stylesheet if the web site is supported.
- */
- private function loadStylesheet($host) {
- $stylesheet = "file://" . __DIR__ . "/rss_converter_" . $host . ".xsl";
- if (FALSE === file_exists($stylesheet)) {
- trigger_error("Conversion to RSS not supported for $host ($stylesheet not found)", E_USER_ERROR);
- return NULL;
- }
-
- $stylesheet_contents = Tweeper::getUrlContents($stylesheet);
-
- $xslDoc = new DOMDocument();
- $xslDoc->loadXML($stylesheet_contents);
-
- $xsltProcessor = new XSLTProcessor();
- $xsltProcessor->registerPHPFunctions();
- $xsltProcessor->setParameter('', 'generate-enclosure', $this->generate_enclosure);
- $xsltProcessor->importStylesheet($xslDoc);
-
- return $xsltProcessor;
- }
-
- /**
* Convert json to XML.
*/
private static function jsonToXml($json, $root_node_name) {
}
/**
+ * Load a stylesheet if the web site is supported.
+ */
+ private function loadStylesheet($host) {
+ $stylesheet = "file://" . __DIR__ . "/rss_converter_" . $host . ".xsl";
+ if (FALSE === file_exists($stylesheet)) {
+ trigger_error("Conversion to RSS not supported for $host ($stylesheet not found)", E_USER_ERROR);
+ return NULL;
+ }
+
+ $stylesheet_contents = Tweeper::getUrlContents($stylesheet);
+
+ $xslDoc = new DOMDocument();
+ $xslDoc->loadXML($stylesheet_contents);
+
+ $xsltProcessor = new XSLTProcessor();
+ $xsltProcessor->registerPHPFunctions();
+ $xsltProcessor->setParameter('', 'generate-enclosure', $this->generate_enclosure);
+ $xsltProcessor->importStylesheet($xslDoc);
+
+ return $xsltProcessor;
+ }
+
+ /**
* Convert the site content to RSS.
*/
public function tweep($src_url) {