summaryrefslogtreecommitdiff
path: root/inc/parser
diff options
context:
space:
mode:
authorMichael Hamann <michael@content-space.de>2013-07-31 17:30:08 +0200
committerChristopher Smith <chris@jalakai.co.uk>2013-08-01 11:11:52 +0200
commite5d09fddcd17a2fe896650b64b81313a7d000975 (patch)
tree3ac7a67e64e215cd3438beeab847092153ab0d1e /inc/parser
parent818d2283465b76931db168a9e2c72f2c0f004ecc (diff)
downloadrpg-e5d09fddcd17a2fe896650b64b81313a7d000975.tar.gz
rpg-e5d09fddcd17a2fe896650b64b81313a7d000975.tar.bz2
Index media file usage in the metadata index and use it in ft_mediause()
Diffstat (limited to 'inc/parser')
-rw-r--r--inc/parser/metadata.php30
1 files changed, 25 insertions, 5 deletions
diff --git a/inc/parser/metadata.php b/inc/parser/metadata.php
index e17b82f8b..d64fe4d77 100644
--- a/inc/parser/metadata.php
+++ b/inc/parser/metadata.php
@@ -282,8 +282,10 @@ class Doku_Renderer_metadata extends Doku_Renderer {
function internallink($id, $name = NULL){
global $ID;
- if(is_array($name))
+ if(is_array($name)) {
$this->_firstimage($name['src']);
+ if ($name['type'] == 'internalmedia') $this->_recordMediaUsage($name['src']);
+ }
$default = $this->_simpleTitle($id);
@@ -304,8 +306,10 @@ class Doku_Renderer_metadata extends Doku_Renderer {
}
function externallink($url, $name = NULL){
- if(is_array($name))
+ if(is_array($name)) {
$this->_firstimage($name['src']);
+ if ($name['type'] == 'internalmedia') $this->_recordMediaUsage($name['src']);
+ }
if ($this->capture){
$this->doc .= $this->_getLinkTitle($name, '<' . $url . '>');
@@ -313,8 +317,10 @@ class Doku_Renderer_metadata extends Doku_Renderer {
}
function interwikilink($match, $name = NULL, $wikiName, $wikiUri){
- if(is_array($name))
+ if(is_array($name)) {
$this->_firstimage($name['src']);
+ if ($name['type'] == 'internalmedia') $this->_recordMediaUsage($name['src']);
+ }
if ($this->capture){
list($wikiUri, $hash) = explode('#', $wikiUri, 2);
@@ -324,8 +330,10 @@ class Doku_Renderer_metadata extends Doku_Renderer {
}
function windowssharelink($url, $name = NULL){
- if(is_array($name))
+ if(is_array($name)) {
$this->_firstimage($name['src']);
+ if ($name['type'] == 'internalmedia') $this->_recordMediaUsage($name['src']);
+ }
if ($this->capture){
if ($name) $this->doc .= $name;
@@ -334,8 +342,10 @@ class Doku_Renderer_metadata extends Doku_Renderer {
}
function emaillink($address, $name = NULL){
- if(is_array($name))
+ if(is_array($name)) {
$this->_firstimage($name['src']);
+ if ($name['type'] == 'internalmedia') $this->_recordMediaUsage($name['src']);
+ }
if ($this->capture){
if ($name) $this->doc .= $name;
@@ -347,6 +357,7 @@ class Doku_Renderer_metadata extends Doku_Renderer {
$height=NULL, $cache=NULL, $linking=NULL){
if ($this->capture && $title) $this->doc .= '['.$title.']';
$this->_firstimage($src);
+ $this->_recordMediaUsage($src);
}
function externalmedia($src, $title=NULL, $align=NULL, $width=NULL,
@@ -439,6 +450,15 @@ class Doku_Renderer_metadata extends Doku_Renderer {
$this->firstimage = $src;
}
}
+
+ function _recordMediaUsage($src) {
+ global $ID;
+
+ list ($src, $hash) = explode('#', $src, 2);
+ if (media_isexternal($src)) return;
+ resolve_mediaid(getNS($ID), $src, $exists);
+ $this->meta['relation']['media'][$src] = $exists;
+ }
}
//Setup VIM: ex: et ts=4 :