- my $ret = $self->{dbis}->select(\$table, \@columns, \%where, 'name')->hashes;
- $self->add_names($ret);
-
- my %params;
- for (@$ret) {
- $params{$_->{level}} //= [];
- push @{$params{$_->{level}}}, $_
- }
- \%params
-}
-
-sub problem_entry_orig {
- my ($self, $id, $contest, $user) = @_;
- my $running = $contest && $self->contest($contest)->is_running;
- my @columns = @{PROBLEM_PUBLIC_COLUMNS()};
- push @columns, 'statement';
- push @columns, 'solution' unless $running;
- my $pb = $self->problems->find($id, {columns => \@columns, prefetch => 'owner'});
- my @limits = map { +{
- format => $_->format,
- timeout => $_->timeout,
- } } $self->limits->search({problem => $id});
- my $open;
- $open = $self->opens->find_or_create({
- contest => $contest,
- problem => $id,
- owner => $user,
- time => time,
- }) if $running;
- $contest &&= $self->contest($contest);
- +{
- $pb->get_columns,
- @limits ? (limits => \@limits) : (),
- owner_name => $pb->owner->name,
- cansubmit => !$contest || !$contest->is_finished,
- $running ? (
- contest_start => $contest->start,
- contest_stop => $contest->stop,
- open_time => $open->time
- ) : (),
- }