diff options
author | Michael Klier <chi@chimeric.de> | 2009-01-16 23:54:28 +0100 |
---|---|---|
committer | Michael Klier <chi@chimeric.de> | 2009-01-16 23:54:28 +0100 |
commit | 666cdec516655603e1a83ff884faa9c6e58b7ace (patch) | |
tree | dfb696577dbecf51155c6d5d51dadb035bbac28a | |
parent | 9767623b6d6795f37e93c7340a4503c7fb4c9a4b (diff) | |
download | rpg-666cdec516655603e1a83ff884faa9c6e58b7ace.tar.gz rpg-666cdec516655603e1a83ff884faa9c6e58b7ace.tar.bz2 |
fix for FS#1534
darcs-hash:20090116225428-23886-2ce4d48a20f66265764c95b19ee505c6519446e2.gz
-rw-r--r-- | inc/media.php | 88 | ||||
-rw-r--r-- | lib/exe/mediamanager.php | 14 |
2 files changed, 61 insertions, 41 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']; } /** diff --git a/lib/exe/mediamanager.php b/lib/exe/mediamanager.php index 97afae9b7..091e52050 100644 --- a/lib/exe/mediamanager.php +++ b/lib/exe/mediamanager.php @@ -77,7 +77,19 @@ // handle deletion if($DEL) { - $INUSE = media_delete($DEL,$AUTH); + $INUSE = media_inuse($DEL); + if(!$INUSE) { + if(media_delete($DEL,$AUTH)) { + msg(str_replace('%s',noNS($id),$lang['deletesucc']),1); + } else { + msg(str_replace('%s',noNS($DEL),$lang['deletefail']),-1); + } + } else { + if(!$conf['refshow']) { + unset($INUSE); + msg(str_replace('%s',noNS($DEL),$lang['mediainuse']),0); + } + } } // finished - start output |