diff -rc MT-3.121-full-ja.org/lib/MT/ObjectDriver/DBI/postgres.pm MT-3.121-full-ja/lib/MT/ObjectDriver/DBI/postgres.pm *** MT-3.121-full-ja.org/lib/MT/ObjectDriver/DBI/postgres.pm 2004-12-30 05:13:35.103692376 +0900 --- MT-3.121-full-ja/lib/MT/ObjectDriver/DBI/postgres.pm 2004-12-30 05:15:51.035027672 +0900 *************** *** 78,83 **** --- 78,98 ---- $sql = $s_sql . $sql; $w_sql .= ") t\n"; } + elsif ($j_args->{'aggregate_sort'}) { + ## sorting with aggregate function , + my $as_args = $j_args->{'aggregate_sort'}; + my $cols = $class->column_names; + my $s_sql = "from (select " . + join(', ', map "${tbl}_$_", @$cols) . + ", $as_args->{'function'} (${j_tbl}_$as_args->{'column'}) as ${tbl}_${j_tbl}_$as_args->{'column'}\n"; + $sql = $s_sql . $sql; + $w_sql .= "group by " . + join(', ', map "${tbl}_$_", @$cols) . "\n"; + $w_sql .= ") t\n"; + my $dir = $as_args->{'direction'} && + $as_args->{'direction'} eq 'descend' ? 'desc' : 'asc'; + $w_sql .= "order by ${tbl}_${j_tbl}_$as_args->{'column'} $dir\n"; + } if (my $n = $j_args->{limit}) { $n =~ s/\D//g; ## Get rid of any non-numerics. diff -rc MT-3.121-full-ja.org/lib/MT/Template/Context.pm MT-3.121-full-ja/lib/MT/Template/Context.pm *** MT-3.121-full-ja.org/lib/MT/Template/Context.pm 2004-12-30 05:13:35.108691616 +0900 --- MT-3.121-full-ja/lib/MT/Template/Context.pm 2004-12-30 05:14:27.741690184 +0900 *************** *** 741,750 **** } elsif (my $n = $args->{recently_commented_on}) { $args{'join'} = [ 'MT::Comment', 'entry_id', { blog_id => $blog_id, visible => 1 }, ! { 'sort' => 'created_on', ! direction => 'descend', ! unique => 1, ! limit => $n } ]; $no_resort = 1; } @entries = MT::Entry->load(\%terms, \%args); --- 741,750 ---- } elsif (my $n = $args->{recently_commented_on}) { $args{'join'} = [ 'MT::Comment', 'entry_id', { blog_id => $blog_id, visible => 1 }, ! { 'aggregate_sort' => { 'column' => 'created_on', ! 'function' => 'max', ! 'direction' => 'descend' }, ! limit => $n } ]; $no_resort = 1; } @entries = MT::Entry->load(\%terms, \%args);