From 85215fc32703b0dedf6cb54b8d06942348b1c4a5 Mon Sep 17 00:00:00 2001 From: donncha Date: Thu, 20 Jul 2006 20:04:20 +0000 Subject: Delete uploaded files when blog is deleted by site admin (#94) git-svn-id: http://svn.automattic.com/wordpress-mu/trunk@698 7be80a69-a1ef-0310-a953-fb0f7c49ff36 --- wp-admin/admin-db.php | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) (limited to 'wp-admin/admin-db.php') diff --git a/wp-admin/admin-db.php b/wp-admin/admin-db.php index 2b1327b..ea9c5e2 100644 --- a/wp-admin/admin-db.php +++ b/wp-admin/admin-db.php @@ -512,6 +512,36 @@ function wpmu_delete_blog($blog_id, $drop = false) { $wpdb->query( "DROP TABLE IF EXISTS $val" ); $wpdb->query( "DELETE FROM $wpdb->blogs WHERE blog_id = '$blog_id'" ); + $dir = ABSPATH . "wp-content/blogs.dir/{$blog_id}/files"; + $dir = rtrim($dir, DIRECTORY_SEPARATOR); + $top_dir = $dir; + $stack = array($dir); + $index = 0; + + while ($index < count($stack)) { + # Get indexed directory from stack + $dir = $stack[$index]; + + $dh = @ opendir($dir); + if ($dh) { + while (($file = @ readdir($dh)) !== false) { + if ($file == '.' or $file == '..') + continue; + + if (@ is_dir($dir . DIRECTORY_SEPARATOR . $file)) + $stack[] = $dir . DIRECTORY_SEPARATOR . $file; + else if (@ is_file($dir . DIRECTORY_SEPARATOR . $file)) + @ unlink($dir . DIRECTORY_SEPARATOR . $file); + } + } + $index++; + } + + $stack = array_reverse($stack); // Last added dirs are deepest + foreach($stack as $dir) { + if ( $dir != $top_dir) + @ rmdir($dir); + } } if ( $switch ) -- cgit