diff options
Diffstat (limited to 'inc')
-rw-r--r-- | inc/media.php | 88 |
1 files changed, 48 insertions, 40 deletions
diff --git a/inc/media.php b/inc/media.php index b9e7c6c08..1cff2494c 100644 --- a/inc/media.php +++ b/inc/media.php @@ -138,6 +138,26 @@ function media_metaform($id,$auth){ echo '</form>'.NL; } +/** + * Conveinience function to check if a media file is still in use + * + * @author Michael Klier <chi@chimeric.de> + */ +function media_inuse($id) { + global $conf; + $mediareferences = array(); + if($conf['refcheck']){ + require_once(DOKU_INC.'inc/fulltext.php'); + $mediareferences = ft_mediause($id,$conf['refshow']); + if(!count($mediareferences)) { + return true; + } else { + return $mediareferences; + } + } else { + return false; + } +} /** * Handles media file deletions @@ -153,46 +173,34 @@ function media_delete($id,$auth){ global $conf; global $lang; - // check for references if needed - $mediareferences = array(); - if($conf['refcheck']){ - require_once(DOKU_INC.'inc/fulltext.php'); - $mediareferences = ft_mediause($id,$conf['refshow']); - } - - if(!count($mediareferences)){ - $file = mediaFN($id); - - // trigger an event - MEDIA_DELETE_FILE - $data['name'] = basename($file); - $data['path'] = $file; - $data['size'] = (@file_exists($file)) ? filesize($file) : 0; - $evt = new Doku_Event('MEDIA_DELETE_FILE',$data); - if ($evt->advise_before()) { - if(@unlink($file)){ - msg(str_replace('%s',noNS($id),$lang['deletesucc']),1); - $del = io_sweepNS($id,'mediadir'); - if($del){ - // current namespace was removed. redirecting to root ns passing msg along - header('Location: '.DOKU_URL.'lib/exe/mediamanager.php?msg1='. - rawurlencode(str_replace('%s',noNS($id),$lang['deletesucc']))); - exit; - } - return true; - } - } - $evt->advise_after(); - unset($evt); - - //something went wrong - msg(str_replace('%s',$file,$lang['deletefail']),-1); - return false; - }elseif(!$conf['refshow']){ - msg(str_replace('%s',noNS($id),$lang['mediainuse']),0); - return false; - } - - return $mediareferences; + $file = mediaFN($id); + + // trigger an event - MEDIA_DELETE_FILE + $data['id'] = $id; + $data['name'] = basename($file); + $data['path'] = $file; + $data['size'] = (@file_exists($file)) ? filesize($file) : 0; + + $data['unl'] = false; + $data['del'] = false; + $evt = new Doku_Event('MEDIA_DELETE_FILE',$data); + if ($evt->advise_before()) { + $data['unl'] = @unlink($file); + if($data['unl']){ + $data['del'] = io_sweepNS($id,'mediadir'); + } + } + $evt->advise_after(); + unset($evt); + + if($data['unl'] && $data['del']){ + // current namespace was removed. redirecting to root ns passing msg along + header('Location: '.DOKU_URL.'lib/exe/mediamanager.php?msg1='. + rawurlencode(str_replace('%s',noNS($id),$lang['deletesucc']))); + exit; + } + + return $data['unl']; } /** |