summaryrefslogtreecommitdiff
path: root/inc
diff options
context:
space:
mode:
authorAndreas Gohr <andi@splitbrain.org>2008-02-15 11:52:51 +0100
committerAndreas Gohr <andi@splitbrain.org>2008-02-15 11:52:51 +0100
commitd186898bc9d253d2f0227785ece22080e2005280 (patch)
tree1cc1be8e3c3900d0ea985ef10a4ef730e0f1f898 /inc
parentfd78eea832963ae45c26beeb4ec0b44fd8525e26 (diff)
downloadrpg-d186898bc9d253d2f0227785ece22080e2005280.tar.gz
rpg-d186898bc9d253d2f0227785ece22080e2005280.tar.bz2
redirect to root namespace in mediamanager when namespace was deleted FS#1286
darcs-hash:20080215105251-7ad00-b7ac1bfc0e2d1eccf079f4ff2f0db8876896b79d.gz
Diffstat (limited to 'inc')
-rw-r--r--inc/io.php9
-rw-r--r--inc/media.php8
2 files changed, 15 insertions, 2 deletions
diff --git a/inc/io.php b/inc/io.php
index aaf71091f..405786cc2 100644
--- a/inc/io.php
+++ b/inc/io.php
@@ -21,6 +21,9 @@
* $data[1] ns_type: 'pages' or 'media' namespace tree.
*
* @todo use safemode hack
+ * @param string $id - a pageid, the namespace of that id will be tried to deleted
+ * @param string $basadir - the config name of the type to delete (datadir or mediadir usally)
+ * @returns bool - true if at least one namespace was deleted
* @author Andreas Gohr <andi@splitbrain.org>
* @author Ben Coburn <btcoburn@silicodon.net>
*/
@@ -29,6 +32,8 @@ function io_sweepNS($id,$basedir='datadir'){
$types = array ('datadir'=>'pages', 'mediadir'=>'media');
$ns_type = (isset($types[$basedir])?$types[$basedir]:false);
+ $delone = false;
+
//scan all namespaces
while(($id = getNS($id)) !== false){
$dir = $conf[$basedir].'/'.utf8_encodeFN(str_replace(':','/',$id));
@@ -37,10 +42,12 @@ function io_sweepNS($id,$basedir='datadir'){
if(@rmdir($dir)) {
if ($ns_type!==false) {
$data = array($id, $ns_type);
+ $delone = true; // we deleted at least one dir
trigger_event('IO_NAMESPACE_DELETED', $data);
}
- } else { return; }
+ } else { return $delone; }
}
+ return $delone;
}
/**
diff --git a/inc/media.php b/inc/media.php
index fc8e96d76..3622ea54e 100644
--- a/inc/media.php
+++ b/inc/media.php
@@ -165,7 +165,13 @@ function media_delete($id,$auth){
$file = mediaFN($id);
if(@unlink($file)){
msg(str_replace('%s',noNS($id),$lang['deletesucc']),1);
- io_sweepNS($id,'mediadir');
+ $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;
}
//something went wrong