diff --git a/phpini/list_pkgs.cgi b/phpini/list_pkgs.cgi
index 703ba8d90..db161d469 100644
--- a/phpini/list_pkgs.cgi
+++ b/phpini/list_pkgs.cgi
@@ -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 { "$_->{'dom'}" } @$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 { "$_->{'dom'}" }
+ @$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'}}++;
}
diff --git a/phpini/phpini-lib.pl b/phpini/phpini-lib.pl
index 9942e911e..a9b012717 100755
--- a/phpini/phpini-lib.pl
+++ b/phpini/phpini-lib.pl
@@ -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;