]> git.deb.at Git - deb/packages.git/blob - lib/Packages/DoNewPkg.pm
Packages::Page: How to translate a single string?
[deb/packages.git] / lib / Packages / DoNewPkg.pm
1 package Packages::DoNewPkg;
2
3 use strict;
4 use warnings;
5
6 use POSIX;
7 use CGI ();
8 use Exporter;
9 our @ISA = qw( Exporter );
10 our @EXPORT = qw( do_newpkg );
11
12 use Packages::I18N::Locale;
13 use Packages::Search qw( :all );
14 use Packages::CGI;
15 use Packages::DB;
16 use Packages::Config qw( $TOPDIR @SECTIONS $ROOT );
17
18 sub do_newpkg {
19     my ($params, $opts, $page_content) = @_;
20     my $cat = $opts->{cat};
21
22     if ($params->{errors}{suite}) {
23         fatal_error( $cat->g( "suite not valid or not specified" ) );
24     }
25     if (@{$opts->{suite}} > 1) {
26         fatal_error( $cat->g( "more than one suite specified for newpkg (%s)",
27                               "@{$opts->{suite}}" ) );
28     }
29
30     my $sort_func = sub { $_[0][0] cmp $_[1][0] };
31     $sort_func = sub { $_[0][1] <=> $_[1][1] or $_[0][0] cmp $_[1][0] }
32         if $opts->{mode} eq 'byage';
33
34     my $suite = $opts->{suite}[0];
35     my $one_archive = @{$opts->{archive}} == 1 ?
36         $opts->{archive}[0] : undef;
37     my $one_section = @{$opts->{section}} == 1 ?
38         $opts->{section}[0] : undef;
39
40     my @new_pkgs;
41     open NEWPKG, '<', "$TOPDIR/files/packages/newpkg_info_$suite"
42         or do {
43             warn "can't read newpkg_info_$suite: $!";
44             fatal_error( $cat->g("no newpkg information found for suite %s",
45                                  $suite) );
46             return;
47     };
48     while (<NEWPKG>) {
49         chomp;
50         my @data = split /\s/, $_, 11;
51
52         next unless $data[2]; #removed packages
53         next unless $data[3] eq $suite;
54         next if $one_archive and $data[2] ne $one_archive;
55         next if $one_section and $data[5] ne $one_section;
56
57         debug( "new pkg: @data", 1 ) if DEBUG;
58         push @new_pkgs, \@data;
59     }
60     close NEWPKG;
61     
62     (my @date)= gmtime();
63     #FIXME: compute in the template
64     $page_content->{rss_timestamp} = strftime ("%Y-%m-%dT%H:%M+00:00", @date);
65
66     if (@new_pkgs) {
67         $page_content->{new_packages} = [ sort { &$sort_func($a,$b) } @new_pkgs ];
68     }
69
70     $page_content->{suite} = $suite;
71     $page_content->{section} = $one_section if $one_section;
72     $page_content->{archive} = $one_archive if $one_archive;
73     $page_content->{sections} = \@SECTIONS;
74
75 }
76
77 1;