summaryrefslogtreecommitdiff
path: root/actions/newnotice.php
diff options
context:
space:
mode:
Diffstat (limited to 'actions/newnotice.php')
-rw-r--r--actions/newnotice.php33
1 files changed, 33 insertions, 0 deletions
diff --git a/actions/newnotice.php b/actions/newnotice.php
index cbd04c58b..8b03abc62 100644
--- a/actions/newnotice.php
+++ b/actions/newnotice.php
@@ -166,6 +166,8 @@ class NewnoticeAction extends Action
return;
}
+ $this->saveUrls($notice);
+
common_broadcast_notice($notice);
if ($this->boolean('ajax')) {
@@ -191,6 +193,37 @@ class NewnoticeAction extends Action
}
}
+ /** save all urls in the notice to the db
+ *
+ * follow redirects and save all available file information
+ * (mimetype, date, size, oembed, etc.)
+ *
+ * @param class $notice Notice to pull URLs from
+ *
+ * @return void
+ */
+ function saveUrls($notice) {
+ common_debug("Saving all URLs");
+ common_replace_urls_callback($notice->content, array($this, 'saveUrl'), $notice->id);
+ }
+
+ function saveUrl($data) {
+ list($url, $notice_id) = $data;
+ common_debug("Saving $url for $notice_id");
+ $file = File::staticGet('url', $url);
+ if (empty($file)) {
+ common_debug('unknown file/url');
+ $file = new File;
+ $file->url = $url;
+ $file->insert();
+ }
+ common_debug('File: ' . print_r($file, true));
+ $f2p = new File_to_post;
+ $f2p->file_id = $file->id;
+ $f2p->post_id = $notice_id;
+ $f2p->insert();
+ }
+
/**
* Show an Ajax-y error message
*