forked from GNUsocial/gnu-social
OStatus: save file records for enclosures
Also stripping id from foreign HTML messages (could interfere with UI) and disabled failing attachment popup for a.attachment links that don't have a proper id, so you can click through instead of getting an error. Issues: * any other links aren't marked and saved * inconsistent behavior between local and remote attachments (local displays in lightbox, remote doesn't) * if the enclosure'd object isn't referenced in the content, you won't be offered a link to it in our UI
This commit is contained in:
@@ -211,6 +211,8 @@ class Notice extends Memcached_DataObject
|
||||
* extracting ! tags from content
|
||||
* array 'tags' list of hashtag strings to save with the notice
|
||||
* in place of extracting # tags from content
|
||||
* array 'urls' list of attached/referred URLs to save with the
|
||||
* notice in place of extracting links from content
|
||||
* @fixme tag override
|
||||
*
|
||||
* @return Notice
|
||||
@@ -380,8 +382,11 @@ class Notice extends Memcached_DataObject
|
||||
$notice->saveTags();
|
||||
}
|
||||
|
||||
// @fixme pass in data for URLs too?
|
||||
$notice->saveUrls();
|
||||
if (isset($urls)) {
|
||||
$notice->saveKnownUrls($urls);
|
||||
} else {
|
||||
$notice->saveUrls();
|
||||
}
|
||||
|
||||
// Prepare inbox delivery, may be queued to background.
|
||||
$notice->distribute();
|
||||
@@ -427,6 +432,25 @@ class Notice extends Memcached_DataObject
|
||||
common_replace_urls_callback($this->content, array($this, 'saveUrl'), $this->id);
|
||||
}
|
||||
|
||||
/**
|
||||
* Save the given URLs as related links/attachments to the db
|
||||
*
|
||||
* follow redirects and save all available file information
|
||||
* (mimetype, date, size, oembed, etc.)
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function saveKnownUrls($urls)
|
||||
{
|
||||
// @fixme validation?
|
||||
foreach ($urls as $url) {
|
||||
File::processNew($url, $this->id);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @private callback
|
||||
*/
|
||||
function saveUrl($data) {
|
||||
list($url, $notice_id) = $data;
|
||||
File::processNew($url, $notice_id);
|
||||
|
Reference in New Issue
Block a user