diff --git a/list_users.cgi b/list_users.cgi
index efc41e621..58e49a443 100755
--- a/list_users.cgi
+++ b/list_users.cgi
@@ -59,6 +59,13 @@ if ($mleft != 0) {
}
}
}
+# Include user creation links from feature plugins
+foreach my $f (&list_feature_plugins()) {
+ if ($d->{$f} && &plugin_defined($f, "users_create_links")) {
+ my @plinks = &plugin_call($f, "users_create_links", $d);
+ push(@links, @plinks) if @plinks;
+ }
+ }
push(@links, [ "mass_ucreate_form.cgi?dom=$in{'dom'}",
$text{'users_batch2'}, "right" ]);
diff --git a/virtual-server-lib-funcs.pl b/virtual-server-lib-funcs.pl
index c44fc1eb2..6e297cfa1 100755
--- a/virtual-server-lib-funcs.pl
+++ b/virtual-server-lib-funcs.pl
@@ -1127,6 +1127,16 @@ sub list_domain_users
push(@users, &list_extra_web_users($d));
}
+# Include users from feature plugins that define list_plugin_users
+if ($includeextra) {
+ foreach my $f (&list_feature_plugins()) {
+ if ($d->{$f} && &plugin_defined($f, "list_plugin_users")) {
+ my @pu = &plugin_call($f, "list_plugin_users", $d);
+ push(@users, @pu) if @pu;
+ }
+ }
+ }
+
# Add any secondary groups in the template
local @sgroups = &allowed_secondary_groups($d);
if (@sgroups) {
@@ -5723,11 +5733,18 @@ sub users_table
$u->{'webowner'} && $u->{'pass'} =~ /^(\!|\*)/ ? $pop3_dis :
$u->{'webowner'} ? $pop3 :
$u->{'pass'} =~ /^(\!|\*)/ ? $pop3_dis : $pop3);
- my $col_val = "$col_text";
- if (!$virtualmin_pro && $u->{'extra'}) {
+ my $col_val;
+ if ($u->{'edit_url'}) {
+ $col_val = "$col_text";
+ }
+ elsif (!$virtualmin_pro && $u->{'extra'}) {
$col_val = $col_text;
}
+ else {
+ $col_val = "$col_text";
+ }
push(@cols, "$col_val\n");
push(@cols, &html_escape($u->{'user'}));
push(@cols, &html_escape($u->{'real'}));