diff --git a/classes/File_redirection.php b/classes/File_redirection.php index 1976e3439c..4ee43026b7 100644 --- a/classes/File_redirection.php +++ b/classes/File_redirection.php @@ -139,6 +139,7 @@ class File_redirection extends Memcached_DataObject * reached. * * @param string $in_url + * @param boolean $discover true to attempt dereferencing the redirect if we don't know it already * @return mixed one of: * string - target URL, if this is a direct link or a known redirect * array - redirect info if this is an *unknown* redirect: @@ -150,7 +151,7 @@ class File_redirection extends Memcached_DataObject * size (optional): byte size from Content-Length header * time (optional): timestamp from Last-Modified header */ - public function where($in_url) { + public function where($in_url, $discover=true) { // let's see if we know this... $a = File::staticGet('url', $in_url); @@ -166,8 +167,13 @@ class File_redirection extends Memcached_DataObject } } - $ret = File_redirection::lookupWhere($in_url); - return $ret; + if ($discover) { + $ret = File_redirection::lookupWhere($in_url); + return $ret; + } else { + // No manual dereferencing; leave the unknown URL as is. + return $in_url; + } } /** diff --git a/classes/Notice.php b/classes/Notice.php index 85c7dabea4..dd9438f160 100644 --- a/classes/Notice.php +++ b/classes/Notice.php @@ -476,7 +476,9 @@ class Notice extends Memcached_DataObject * @return void */ function saveUrls() { - common_replace_urls_callback($this->content, array($this, 'saveUrl'), $this->id); + if (common_config('attachments', 'process_links')) { + common_replace_urls_callback($this->content, array($this, 'saveUrl'), $this->id); + } } /** @@ -489,9 +491,11 @@ class Notice extends Memcached_DataObject */ function saveKnownUrls($urls) { - // @fixme validation? - foreach (array_unique($urls) as $url) { - File::processNew($url, $this->id); + if (common_config('attachments', 'process_links')) { + // @fixme validation? + foreach (array_unique($urls) as $url) { + File::processNew($url, $this->id); + } } } diff --git a/lib/default.php b/lib/default.php index ece01f2a8b..a91fa338fc 100644 --- a/lib/default.php +++ b/lib/default.php @@ -253,6 +253,7 @@ $default = 'show_thumbs' => true, // show thumbnails in notice lists for uploaded images, and photos and videos linked remotely that provide oEmbed info 'thumb_width' => 100, 'thumb_height' => 75, + 'process_links' => true, // check linked resources for embeddable photos and videos; this will hit referenced external web sites when processing new messages. ), 'application' => array('desclimit' => null), diff --git a/lib/util.php b/lib/util.php index e6b62f750f..49566c4d41 100644 --- a/lib/util.php +++ b/lib/util.php @@ -848,7 +848,7 @@ function common_linkify($url) { $canon = File_redirection::_canonUrl($url); - $longurl_data = File_redirection::where($canon); + $longurl_data = File_redirection::where($canon, common_config('attachments', 'process_links')); if (is_array($longurl_data)) { $longurl = $longurl_data['url']; } elseif (is_string($longurl_data)) { @@ -872,8 +872,10 @@ function common_linkify($url) { $f = File::staticGet('url', $longurl); if (empty($f)) { - // XXX: this writes to the database. :< - $f = File::processNew($longurl); + if (common_config('attachments', 'process_links')) { + // XXX: this writes to the database. :< + $f = File::processNew($longurl); + } } if (!empty($f)) { diff --git a/plugins/LinkPreview/LinkPreviewPlugin.php b/plugins/LinkPreview/LinkPreviewPlugin.php index da79811482..39d2c9bf39 100644 --- a/plugins/LinkPreview/LinkPreviewPlugin.php +++ b/plugins/LinkPreview/LinkPreviewPlugin.php @@ -50,7 +50,7 @@ class LinkPreviewPlugin extends Plugin function onEndShowScripts($action) { $user = common_current_user(); - if ($user) { + if ($user && common_config('attachments', 'process_links')) { $action->script('plugins/LinkPreview/linkpreview.js'); $data = json_encode(array( 'api' => common_local_url('oembedproxy'), diff --git a/plugins/TwitterBridge/twitterimport.php b/plugins/TwitterBridge/twitterimport.php index 498e9b1fc5..9e53849d84 100644 --- a/plugins/TwitterBridge/twitterimport.php +++ b/plugins/TwitterBridge/twitterimport.php @@ -659,9 +659,11 @@ class TwitterImport */ function saveStatusAttachments($notice, $status) { - if (!empty($status->entities) && !empty($status->entities->urls)) { - foreach ($status->entities->urls as $url) { - File::processNew($url->url, $notice->id); + if (common_config('attachments', 'process_links')) { + if (!empty($status->entities) && !empty($status->entities->urls)) { + foreach ($status->entities->urls as $url) { + File::processNew($url->url, $notice->id); + } } } }