diff --git a/phpini/lang/en b/phpini/lang/en index 941a8bdb7..5643bd5d0 100644 --- a/phpini/lang/en +++ b/phpini/lang/en @@ -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 diff --git a/phpini/list_pkgs.cgi b/phpini/list_pkgs.cgi index 5eb1e762e..703ba8d90 100644 --- a/phpini/list_pkgs.cgi +++ b/phpini/list_pkgs.cgi @@ -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 "$text{'pkgs_none'}

\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 "$text{'pkgs_newver'}\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'}); diff --git a/phpini/phpini-lib.pl b/phpini/phpini-lib.pl index 5dd89caef..9942e911e 100755 --- a/phpini/phpini-lib.pl +++ b/phpini/phpini-lib.pl @@ -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;