summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--inc/media.php88
-rw-r--r--lib/exe/mediamanager.php14
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