Factor out function to get domains list

This commit is contained in:
Jamie Cameron
2025-04-06 17:21:16 -07:00
parent f94dabb88c
commit fde1b02880
2 changed files with 31 additions and 21 deletions

View File

@@ -10,40 +10,31 @@ $access{'global'} || &error($text{'pkgs_ecannot'});
my @pkgs = &list_php_base_packages();
my %got;
if (@pkgs) {
my %vmap;
my $hasusers = 0;
if (&foreign_check("virtual-server")) {
# Get the domain to PHP version map
&foreign_require("virtual-server");
foreach my $d (&virtual_server::list_domains()) {
my $v = $d->{'php_fpm_version'} ||
$d->{'php_version'};
if ($v) {
$vmap{$v} ||= [ ];
push(@{$vmap{$v}}, $d);
}
$hasusers = 1;
}
}
my $vmap = &get_virtualmin_php_map();
my @tds = ( "width=5" );
print &ui_form_start("delete_pkgs.cgi", "post");
print &ui_columns_start([ "", $text{'pkgs_name'},
$text{'pkgs_ver'},
$text{'pkgs_phpver'},
$hasusers ? (
$vmap ? (
$text{'pkgs_shortver'},
$text{'pkgs_users'} ) : ( ),
], \@tds);
foreach my $pkg (@pkgs) {
my $ulist = $vmap{$pkg->{'shortver'}};
my $users = !$ulist || !@$ulist ? $text{'pkgs_nousers'} :
@$ulist > 5 ? &text('pkgs_ucount',scalar(@$ulist)) :
join(", ", map { "<tt>$_->{'dom'}</tt>" } @$ulist);
my $users;
if ($vmap) {
my $ulist = $vmap->{$pkg->{'shortver'}};
$users = !$ulist || !@$ulist ? $text{'pkgs_nousers'} :
@$ulist > 5 ? &text('pkgs_ucount',
scalar(@$ulist)) :
join(", ", map { "<tt>$_->{'dom'}</tt>" }
@$ulist);
}
print &ui_checked_columns_row([
$pkg->{'name'},
$pkg->{'ver'},
$pkg->{'phpver'},
$hasusers ? ( $pkg->{'shortver'}, $users ) : ( ),
$vmap ? ( $pkg->{'shortver'}, $users ) : ( ),
], \@tds, "d", $pkg->{'name'});
$got{$pkg->{'name'}}++;
}

View File

@@ -938,5 +938,24 @@ foreach my $pkg (&package_updates::list_available()) {
return sort { &compare_version_numbers($a->{'ver'}, $b->{'ver'}) } @rv;
}
# get_virtualmin_php_map()
# Return a hash mapping PHP versions like 5 or 7.2 to a list of domains, or
# undef if Virtualmin isn't installed
sub get_virtualmin_php_map
{
my %vmap;
&foreign_check("virtual-server") || return undef;
&foreign_require("virtual-server");
foreach my $d (&virtual_server::list_domains()) {
my $v = $d->{'php_fpm_version'} ||
$d->{'php_version'};
if ($v) {
$vmap{$v} ||= [ ];
push(@{$vmap{$v}}, $d);
}
}
return \%vmap;
}
1;