Add form to install a new PHP package

This commit is contained in:
Jamie Cameron
2025-04-06 12:38:12 -07:00
parent 9e9d674206
commit f94dabb88c
3 changed files with 50 additions and 1 deletions

View File

@@ -228,5 +228,7 @@ pkgs_ecannot=You are not allowed to manage PHP packages!
pkgs_ecannot2=Software packages cannot be managed on this system
pkgs_nousers=No domains
pkgs_ucount=$1 domains
pkgs_newver=PHP package to install:
pkgs_install=Install Now
__norefs=1

View File

@@ -8,6 +8,7 @@ $access{'global'} || &error($text{'pkgs_ecannot'});
&ui_print_header(undef, $text{'pkgs_title'}, "");
my @pkgs = &list_php_base_packages();
my %got;
if (@pkgs) {
my %vmap;
my $hasusers = 0;
@@ -44,6 +45,7 @@ if (@pkgs) {
$pkg->{'phpver'},
$hasusers ? ( $pkg->{'shortver'}, $users ) : ( ),
], \@tds, "d", $pkg->{'name'});
$got{$pkg->{'name'}}++;
}
print &ui_columns_end();
print &ui_form_end([ [ undef, $text{'pkgs_delete'} ] ]);
@@ -52,4 +54,21 @@ else {
print "<b>$text{'pkgs_none'}</b> <p>\n";
}
if (&foreign_installed("package-updates")) {
# Show form to install a new version
@newpkgs = grep { !$got{$_->{'name'}} } &list_available_php_packages();
print &ui_hr();
print &ui_form_start(
&get_webprefix()."/package-updates/update.cgi", "post");
print "<b>$text{'pkgs_newver'}</b>\n";
print &ui_select("u", undef,
[ map { [ $_->{'name'},
$_->{'name'}." (".$_->{'version'}.")" ] } @newpkgs ]);
print &ui_hidden(
"redir", &get_webprefix()."/$module_name/list_pkgs.cgi");
print &ui_hidden("redirdesc", $text{'pkgs_title'});
print &ui_hidden("mode", "new");
print &ui_form_end([ [ undef, $text{'pkgs_install'} ] ]);
}
&ui_print_footer("", $text{'index_return'});

View File

@@ -867,7 +867,8 @@ return @poss;
}
# list_php_base_packages()
# Returns a list of hash refs, one per PHP version installed, with the following keys
# Returns a list of hash refs, one per PHP version installed, with the
# following keys :
# name - Package name
# system - Package system
# ver - Package version
@@ -910,5 +911,32 @@ for(my $i=0; $i<$n; $i++) {
return sort { &compare_version_numbers($a->{'ver'}, $b->{'ver'}) } @rv;
}
# list_available_php_packages()
# Returns a list of hash refs, one per PHP version available, with the
# following keys :
sub list_available_php_packages
{
&foreign_require("package-updates");
my @rv;
foreach my $pkg (&package_updates::list_available()) {
my $name = $pkg->{'name'};
next if ($name !~ /^php(\d*)$/);
my $suffix = $1;
my $phpver = $pkg->{'version'};
$phpver =~ s/\-.*$//;
my $shortver = $phpver;
$shortver =~ s/^(\d+\.\d+).*$/$1/;
if ($shortver =~ /^5\./) {
$shortver = "5";
}
push(@rv, { 'name' => $pkg->{'name'},
'version' => $pkg->{'version'},
'shortver' => $shortver,
'phpver' => $phpver,
});
}
return sort { &compare_version_numbers($a->{'ver'}, $b->{'ver'}) } @rv;
}
1;