summaryrefslogtreecommitdiff
path: root/inc
diff options
context:
space:
mode:
authorAndreas Gohr <andi@splitbrain.org>2013-06-16 12:36:58 -0700
committerAndreas Gohr <andi@splitbrain.org>2013-06-16 12:36:58 -0700
commit06f8cfbed961eb9394fa29558dd29c79f87fc9ad (patch)
tree20b02ae07d943248a0a01191409cd02120e5fcb3 /inc
parentd6b7a2dd189b692f9a754f4f1a330abe6449669a (diff)
parentb9ee6a44e7499b5c2e9f117096cedc769ef2e25d (diff)
downloadrpg-06f8cfbed961eb9394fa29558dd29c79f87fc9ad.tar.gz
rpg-06f8cfbed961eb9394fa29558dd29c79f87fc9ad.tar.bz2
Merge pull request #225 from splitbrain/fetchftp
Add media_isexternal
Diffstat (limited to 'inc')
-rw-r--r--inc/Mailer.class.php2
-rw-r--r--inc/common.php2
-rw-r--r--inc/fetch.functions.php11
-rw-r--r--inc/fulltext.php2
-rw-r--r--inc/media.php14
-rw-r--r--inc/parser/handler.php2
-rw-r--r--inc/parser/metadata.php2
7 files changed, 25 insertions, 10 deletions
diff --git a/inc/Mailer.class.php b/inc/Mailer.class.php
index f87d7dd84..cb5f22f54 100644
--- a/inc/Mailer.class.php
+++ b/inc/Mailer.class.php
@@ -192,7 +192,7 @@ class Mailer {
// copy over all replacements missing for HTML (autolink URLs)
foreach($textrep as $key => $value) {
if(isset($htmlrep[$key])) continue;
- if(preg_match('/^https?:\/\//i', $value)) {
+ if(media_isexternal($value)) {
$htmlrep[$key] = '<a href="'.hsc($value).'">'.hsc($value).'</a>';
} else {
$htmlrep[$key] = hsc($value);
diff --git a/inc/common.php b/inc/common.php
index b292fb75e..1b4d9e8e4 100644
--- a/inc/common.php
+++ b/inc/common.php
@@ -467,7 +467,7 @@ function exportlink($id = '', $format = 'raw', $more = '', $abs = false, $sep =
*/
function ml($id = '', $more = '', $direct = true, $sep = '&amp;', $abs = false) {
global $conf;
- $isexternalimage = preg_match('#^(https?|ftp)://#i', $id);
+ $isexternalimage = media_isexternal($id);
if(!$isexternalimage) {
$id = cleanID($id);
}
diff --git a/inc/fetch.functions.php b/inc/fetch.functions.php
index ea524a37a..53ade3555 100644
--- a/inc/fetch.functions.php
+++ b/inc/fetch.functions.php
@@ -89,15 +89,18 @@ function sendFile($file, $mime, $dl, $cache, $public = false) {
* WRITE: MEDIA, FILE, array( STATUS, STATUSMESSAGE )
*
* @author Gerry Weissbach <gerry.w@gammaproduction.de>
- * @param $media reference to the media id
- * @param $file reference to the file variable
- * @returns array(STATUS, STATUSMESSAGE)
+ * @param string $media reference to the media id
+ * @param string $file reference to the file variable
+ * @param string $rev
+ * @param int $width
+ * @param int $height
+ * @return array(STATUS, STATUSMESSAGE)
*/
function checkFileStatus(&$media, &$file, $rev = '', $width=0, $height=0) {
global $MIME, $EXT, $CACHE, $INPUT;
//media to local file
- if(preg_match('#^(https?)://#i', $media)) {
+ if(media_isexternal($media)) {
//check hash
if(substr(PassHash::hmac('md5', $media, auth_cookiesalt()), 0, 6) !== $INPUT->str('hash')) {
return array(412, 'Precondition Failed');
diff --git a/inc/fulltext.php b/inc/fulltext.php
index 7ee386063..2f073acea 100644
--- a/inc/fulltext.php
+++ b/inc/fulltext.php
@@ -172,7 +172,7 @@ function ft_mediause($id,$max){
preg_match_all('/\{\{([^|}]*'.$pcre.'[^|}]*)(|[^}]+)?\}\}/i',rawWiki($doc),$matches);
foreach($matches[1] as $img){
$img = trim($img);
- if(preg_match('/^https?:\/\//i',$img)) continue; // skip external images
+ if(media_isexternal($img)) continue; // skip external images
list($img) = explode('?',$img); // remove any parameters
resolve_mediaid($ns,$img,$exists); // resolve the possibly relative img
diff --git a/inc/media.php b/inc/media.php
index 18148a446..fbe1363ec 100644
--- a/inc/media.php
+++ b/inc/media.php
@@ -83,6 +83,18 @@ function media_metasave($id,$auth,$data){
}
/**
+ * check if a media is external source
+ *
+ * @author Gerrit Uitslag <klapinklapin@gmail.com>
+ * @param string $id the media ID or URL
+ * @return bool
+ */
+function media_isexternal($id){
+ if (preg_match('#^(https?|ftp)://#i', $id)) return true;
+ return false;
+}
+
+/**
* Check if a media item is public (eg, external URL or readable by @ALL)
*
* @author Andreas Gohr <andi@splitbrain.org>
@@ -90,7 +102,7 @@ function media_metasave($id,$auth,$data){
* @return bool
*/
function media_ispublic($id){
- if(preg_match('/^https?:\/\//i',$id)) return true;
+ if(media_isexternal($id)) return true;
$id = cleanID($id);
if(auth_aclcheck(getNS($id).':*', '', array()) >= AUTH_READ) return true;
return false;
diff --git a/inc/parser/handler.php b/inc/parser/handler.php
index 55b715ad9..1cf32aaed 100644
--- a/inc/parser/handler.php
+++ b/inc/parser/handler.php
@@ -680,7 +680,7 @@ function Doku_Handler_Parse_Media($match) {
}
// Check whether this is a local or remote image
- if ( preg_match('#^(https?|ftp)#i',$src) ) {
+ if ( media_isexternal($src) ) {
$call = 'externalmedia';
} else {
$call = 'internalmedia';
diff --git a/inc/parser/metadata.php b/inc/parser/metadata.php
index 8638ffa6a..e17b82f8b 100644
--- a/inc/parser/metadata.php
+++ b/inc/parser/metadata.php
@@ -432,7 +432,7 @@ class Doku_Renderer_metadata extends Doku_Renderer {
global $ID;
list($src,$hash) = explode('#',$src,2);
- if(!preg_match('/^https?:\/\//i',$src)){
+ if(!media_isexternal($src)){
resolve_mediaid(getNS($ID),$src, $exists);
}
if(preg_match('/.(jpe?g|gif|png)$/i',$src)){