diff --git a/.gitattributes b/.gitattributes
index f76a3e87..33f4dfc9 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -12,6 +12,7 @@ aide/sommaire.sgml -text
aide/stats.sgml -text
aide/test.sgml -text
bureau/admin/adm_add.php -text
+bureau/admin/adm_deactivate.php -text
bureau/admin/adm_defquotas.php -text
bureau/admin/adm_del.php -text
bureau/admin/adm_doadd.php -text
diff --git a/bureau/admin/adm_deactivate.php b/bureau/admin/adm_deactivate.php
new file mode 100644
index 00000000..f03ef9e3
--- /dev/null
+++ b/bureau/admin/adm_deactivate.php
@@ -0,0 +1,104 @@
+enabled || !$admin->checkcreator($uid)) {
+ __("This page is restricted to authorized staff");
+ exit();
+}
+
+if (!$r=$admin->get($uid)) {
+ __("User does not exist");
+ exit();
+}
+
+if (! ($confirmed = ($_GET['submit'] == _("Confirm")) ) ) {
+ print '
' . _('WARNING: experimental feature, use at your own risk') . '
';
+ __("The following domains will be deactivated and redirected to the URL entered in the following box. A backup of the domain configuration will be displayed as a serie of SQL request that you can run to restore the current configuration if you want. Click confirm if you are sure you want to deactivate all this user's domains.");
+
+ ?>
+ " . _("Domains of user: ") . $r["login"] . "";
+} else {
+ if (!$_GET['redirect']) {
+ __("Missing redirect url.");
+ exit();
+ } else {
+ $redirect = $_GET['redirect'];
+ }
+}
+
+# this string will contain an SQL request that will be printed at the end of the process and that can be used to reload the old domain configuration
+$backup = "";
+
+# 1. list the domains of the user
+# 1.1 list the domains
+global $cuid;
+$old_cuid = $cuid;
+$cuid = $uid;
+$domains = $dom->enum_domains();
+
+if ($confirmed) {
+ print "";
+ printf(_("-- Redirecting all domains and subdomains of the user %s to %s\n"), $r['login'], $redirect);
+}
+
+reset($domains);
+# 1.2 foreach domain, list the subdomains
+foreach ($domains as $key => $domain) {
+ if (!$confirmed) print '' . $domain . '
';
+ $dom->lock();
+ if (!$r=$dom->get_domain_all($domain)) {
+ $error=$err->errstr();
+ }
+ $dom->unlock();
+ # 2. for each subdomain
+ foreach ($r['sub'] as $k => $sub) {
+ # shortcuts
+ $type = $sub['type'];
+ $dest = $sub['dest'];
+ $sub = $sub['name'];
+ # if it's a real website
+ if ($type == $dom->type_local) {
+ if (!$confirmed) {
+ print "- ";
+ if ($sub) {
+ print $sub . '.';
+ }
+ print "$domain -> $dest
";
+ } else {
+
+ # 2.1 keep a copy of where it was, in an SQL request
+ $backup .= "UPDATE `sub_domaines` SET `type`='$type', valeur='$dest' WHERE `domaine`='$domain' AND sub='$sub';\n";
+ $backup .= "DELETE FROM `sub_domaines_standby` WHERE domaine='$domain' and sub='$sub';\n";
+ $backup .= "INSERT INTO sub_domaines_standby (compte,domaine,sub,valeur,type,action) values ('$cuid','$domain','$sub','$dest','$type',1);\n"; // UPDATE
+
+ # 2.2 change the subdomain to redirect to http://spam.koumbit.org/
+ $dom->lock();
+ if (!$dom->set_sub_domain($domain, $sub, $dom->type_url, "edit", $redirect)) {
+ print "-- error in $sub.$domain: " . $err->errstr() . "\n";
+ }
+ $dom->unlock();
+ }
+ }
+ }
+ if (!$confirmed) print '
';
+}
+
+# 3. wrap up (?)
+if ($confirmed) {
+ print "-- The following is a serie of SQL request you can run, as root, to revert the user's domains to their previous state.\n";
+ print $backup;
+ print "";
+}
+$cuid = $old_cuid;
diff --git a/bureau/admin/adm_list.php b/bureau/admin/adm_list.php
index 652b69f3..e2064198 100644
--- a/bureau/admin/adm_list.php
+++ b/bureau/admin/adm_list.php
@@ -73,7 +73,7 @@ if (!is_array($r)) {
if ($mem->user["admlist"]==0) { // Normal (large) mode
?>
- | | ("._("Email address").")"; ?> | | | | | |
+ | | ("._("Email address").")"; ?> | | | | | |
"> |
"> |
+ "> |
";
@@ -104,7 +105,7 @@ while (list($key,$val)=each($r))
|
";
+ echo " | ";
}
?>