fall back to summary or title if content not available

This commit is contained in:
Evan Prodromou 2010-03-20 09:30:57 -05:00
parent 2fc0f0433e
commit 515acb8513

View File

@ -481,10 +481,14 @@ class Ostatus_profile extends Memcached_DataObject
$oprofile = $this; $oprofile = $this;
} }
// It's not always an ActivityObject::NOTE, but... let's just say it is.
$note = $activity->object;
// The id URI will be used as a unique identifier for for the notice, // The id URI will be used as a unique identifier for for the notice,
// protecting against duplicate saves. It isn't required to be a URL; // protecting against duplicate saves. It isn't required to be a URL;
// tag: URIs for instance are found in Google Buzz feeds. // tag: URIs for instance are found in Google Buzz feeds.
$sourceUri = $activity->object->id; $sourceUri = $note->id;
$dupe = Notice::staticGet('uri', $sourceUri); $dupe = Notice::staticGet('uri', $sourceUri);
if ($dupe) { if ($dupe) {
common_log(LOG_INFO, "OStatus: ignoring duplicate post: $sourceUri"); common_log(LOG_INFO, "OStatus: ignoring duplicate post: $sourceUri");
@ -493,16 +497,30 @@ class Ostatus_profile extends Memcached_DataObject
// We'll also want to save a web link to the original notice, if provided. // We'll also want to save a web link to the original notice, if provided.
$sourceUrl = null; $sourceUrl = null;
if ($activity->object->link) { if ($note->link) {
$sourceUrl = $activity->object->link; $sourceUrl = $note->link;
} else if ($activity->link) { } else if ($activity->link) {
$sourceUrl = $activity->link; $sourceUrl = $activity->link;
} else if (preg_match('!^https?://!', $activity->object->id)) { } else if (preg_match('!^https?://!', $note->id)) {
$sourceUrl = $activity->object->id; $sourceUrl = $note->id;
}
// Use summary as fallback for content
if (!empty($note->content)) {
$sourceContent = $note->content;
} else if (!empty($note->summary)) {
$sourceContent = $note->summary;
} else if (!empty($note->title)) {
$sourceContent = $note->title;
} else {
// @fixme fetch from $sourceUrl?
throw new ClientException("No content for notice {$sourceUri}");
} }
// Get (safe!) HTML and text versions of the content // Get (safe!) HTML and text versions of the content
$rendered = $this->purify($activity->object->content);
$rendered = $this->purify($sourceContent);
$content = html_entity_decode(strip_tags($rendered)); $content = html_entity_decode(strip_tags($rendered));
$shortened = common_shorten_links($content); $shortened = common_shorten_links($content);
@ -513,8 +531,8 @@ class Ostatus_profile extends Memcached_DataObject
$attachment = null; $attachment = null;
if (Notice::contentTooLong($shortened)) { if (Notice::contentTooLong($shortened)) {
$attachment = $this->saveHTMLFile($activity->object->title, $rendered); $attachment = $this->saveHTMLFile($note->title, $rendered);
$summary = $activity->object->summary; $summary = html_entity_decode(strip_tags($note->summary));
if (empty($summary)) { if (empty($summary)) {
$summary = $content; $summary = $content;
} }