summaryrefslogtreecommitdiffstats
path: root/wp-admin
diff options
context:
space:
mode:
authordonncha <donncha@7be80a69-a1ef-0310-a953-fb0f7c49ff36>2006-07-20 20:04:20 +0000
committerdonncha <donncha@7be80a69-a1ef-0310-a953-fb0f7c49ff36>2006-07-20 20:04:20 +0000
commit85215fc32703b0dedf6cb54b8d06942348b1c4a5 (patch)
treea1d1f524eb22056234809606834b553b8c9513c2 /wp-admin
parent3ebc1ff3d2b56e4b3a934dcec57fde7d7bbf4636 (diff)
downloadwordpress-mu-85215fc32703b0dedf6cb54b8d06942348b1c4a5.tar.gz
wordpress-mu-85215fc32703b0dedf6cb54b8d06942348b1c4a5.tar.xz
wordpress-mu-85215fc32703b0dedf6cb54b8d06942348b1c4a5.zip
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
Diffstat (limited to 'wp-admin')
-rw-r--r--wp-admin/admin-db.php30
1 files changed, 30 insertions, 0 deletions
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 )