Version 1.3 ()
------------------------------------------------------------------------
+ * Pingback/Trackback textfetching: HTML Entities are now converted
+ to characters. Character encoding defaults to UTF-8 but can be
+ configured via $serendipity['pingbackEntityEncoding'] = "UTF-8"
+ in your serendipity_config_local.php (brockhaus)
+
+ * For Pingback it is now possible to define the maximum amount of
+ characters while fetching text of the remote site. Add
+ $serendipity['pingbackFetchPageMaxLenght'] = 200 to your
+ serendipity_config_local.php. (brockhaus)
+
* Add ability to set comments as "pending" again, even when already
approved in the comment-moderation backend panel.
(garvinhicking)
$title = $url;
}
+ // Decode HTML Entities
+ $excerpt = trackback_body_strip($excerpt);
+
$comment = array(
'title' => $title,
'url' => $url,
return;
}
+ // Max amount of characters fetched from the page doing a pingback:
+ $fetchPageMaxLenght = 200;
+ if (isset($serendipity['pingbackFetchPageMaxLenght'])){
+ $fetchPageMaxLenght = $serendipity['pingbackFetchPageMaxLenght'];
+ }
+ // HTML Entity Encoding
+ $entityEncoding = "UTF-8";
+ if (isset($serendipity['pingbackEntityEncoding'])){
+ $entityEncoding = $serendipity['pingbackEntityEncoding'];
+ }
+
require_once S9Y_PEAR_PATH . 'HTTP/Request.php';
$url = $comment['url'];
// Get a title
if (preg_match('@<head[^>]*>.*?<title[^>]*>(.*?)</title>.*?</head>@is',$fContent,$matches)) {
- $comment['title'] = strip_tags($matches[1]);
+ $comment['title'] = html_entity_decode(strip_tags($matches[1]),ENT_COMPAT,$entityEncoding);
}
// Try to get content from first <p> tag on:
}
// Get a part of the article
if (!empty($body)) {
- $body = strip_tags($body);
-
- //TODO: Serendipity comes into trouble wit html_entity_decode and "Umlaute"
- $body = str_replace(array(" "),array(' '),$body);
-
- // replace whitespace with single space
- $body = preg_replace('@\s+@s', ' ', $body);
-
+ $body = trackback_body_strip($body);
+
// truncate the text to 200 chars
- $arr = str_split($body, 200);
+ $arr = str_split($body, $fetchPageMaxLenght);
$body = $arr[0];
$comment['comment'] = $body . '[..]';
}
+/**
+ * Strips any unneeded code from trackback / pingback bodies returning pure (UTF8) text.
+ */
+function trackback_body_strip( $body ){
+ // replace non brakeable space with normal space:
+ $body = str_replace(' ', ' ', $body);
+
+ // HTML Entity Encoding
+ $entityEncoding = "UTF-8";
+ if (isset($serendipity['pingbackEntityEncoding'])){
+ $entityEncoding = $serendipity['pingbackEntityEncoding'];
+ }
+ // strip html entities and tags.
+ $body = html_entity_decode(strip_tags($body),ENT_COMPAT,$entityEncoding);
+
+ // replace whitespace with single space
+ $body = preg_replace('@\s+@s', ' ', $body);
+
+ return $body;
+}
+
/**
* Create an excerpt for a trackback to send
*