summaryrefslogtreecommitdiff
path: root/lib/exe
diff options
context:
space:
mode:
authorAdrian Lang <dokuwiki@adrianlang.de>2011-02-06 12:51:09 +0100
committerAdrian Lang <dokuwiki@adrianlang.de>2011-02-06 12:55:53 +0100
commit87229c84afbda98679146558235bc7212ea404ee (patch)
tree737e207675c475ce8b1ab118a5e8f399d99be716 /lib/exe
parent2343a762fb62ebed6ef140bca2d8b5aa4fa2983d (diff)
downloadrpg-87229c84afbda98679146558235bc7212ea404ee.tar.gz
rpg-87229c84afbda98679146558235bc7212ea404ee.tar.bz2
XML-RPC deleteAttachment now uses media_delete
Functionality changes: * deleteAttachment now triggers MEDIA_DELETE_FILE (closes FS#1568) * deletion success msg in mediamanager is correct, even when the ns dir was deleted * media_delete changed quite a bit
Diffstat (limited to 'lib/exe')
-rw-r--r--lib/exe/mediamanager.php22
-rw-r--r--lib/exe/xmlrpc.php28
2 files changed, 22 insertions, 28 deletions
diff --git a/lib/exe/mediamanager.php b/lib/exe/mediamanager.php
index c79a25c08..6f2add2be 100644
--- a/lib/exe/mediamanager.php
+++ b/lib/exe/mediamanager.php
@@ -82,18 +82,24 @@
// handle deletion
if($DEL) {
- $INUSE = media_inuse($DEL);
- if(!$INUSE) {
- if(media_delete($DEL,$AUTH)) {
- msg(sprintf($lang['deletesucc'],noNS($DEL)),1);
- } else {
- msg(sprintf($lang['deletefail'],noNS($DEL)),-1);
+ $res = 0;
+ if(checkSecurityToken()) {
+ $res = media_delete($DEL,$AUTH);
+ }
+ if ($res & DOKU_MEDIA_DELETED) {
+ $msg = sprintf($lang['deletesucc'], noNS($DEL));
+ if ($res & DOKU_MEDIA_EMPTY_NS) {
+ // current namespace was removed. redirecting to root ns passing msg along
+ send_redirect(DOKU_URL.'lib/exe/mediamanager.php?msg1='.
+ rawurlencode($msg));
}
- } else {
+ msg($msg,1);
+ } elseif ($res & DOKU_MEDIA_INUSE) {
if(!$conf['refshow']) {
- unset($INUSE);
msg(sprintf($lang['mediainuse'],noNS($DEL)),0);
}
+ } else {
+ msg(sprintf($lang['deletefail'],noNS($DEL)),-1);
}
}
diff --git a/lib/exe/xmlrpc.php b/lib/exe/xmlrpc.php
index d40e338b2..945dc3f67 100644
--- a/lib/exe/xmlrpc.php
+++ b/lib/exe/xmlrpc.php
@@ -674,27 +674,15 @@ class dokuwiki_xmlrpc_server extends IXR_IntrospectionServer {
function deleteAttachment($id){
$id = cleanID($id);
$auth = auth_quickaclcheck(getNS($id).':*');
- if($auth < AUTH_DELETE) return new IXR_ERROR(1, "You don't have permissions to delete files.");
- global $conf;
- global $lang;
-
- // check for references if needed
- $mediareferences = array();
- if($conf['refcheck']){
- $mediareferences = ft_mediause($id,$conf['refshow']);
- }
-
- if(!count($mediareferences)){
- $file = mediaFN($id);
- if(@unlink($file)){
- addMediaLogEntry(time(), $id, DOKU_CHANGE_TYPE_DELETE);
- io_sweepNS($id,'mediadir');
- return 0;
- }
- //something went wrong
- return new IXR_ERROR(1, 'Could not delete file');
- } else {
+ $res = media_delete($id, $auth);
+ if ($res & DOKU_MEDIA_DELETED) {
+ return 0;
+ } elseif ($res & DOKU_MEDIA_NOT_AUTH) {
+ return new IXR_ERROR(1, "You don't have permissions to delete files.");
+ } elseif ($res & DOKU_MEDIA_INUSE) {
return new IXR_ERROR(1, 'File is still referenced');
+ } else {
+ return new IXR_ERROR(1, 'Could not delete file');
}
}