Changeset 1911 for branches/release-35/lib/MT/Template/ContextHandlers.pm
- Timestamp:
- 04/15/08 06:44:48 (20 months ago)
- Files:
-
- 1 modified
Legend:
- Unmodified
- Added
- Removed
-
branches/release-35/lib/MT/Template/ContextHandlers.pm
r1906 r1911 5058 5058 if ($comments) { 5059 5059 my $n = $args->{lastn}; 5060 my $col = lc($args->{sort_by} || 'created_on'); 5061 @$comments = $so eq 'ascend' ? 5062 sort { $a->$col() cmp $b->$col() } @$comments : 5063 sort { $b->$col() cmp $a->$col() } @$comments; 5064 $no_resort = 1; 5060 5065 if (@filters) { 5066 my $offset = $args->{offset} || 0; 5067 my $j = 0; 5061 5068 COMMENTS: for my $c (@$comments) { 5062 5069 for (@filters) { 5063 5070 next COMMENTS unless $_->($c); 5064 5071 } 5072 next if $offset && $j++ < $offset; 5065 5073 push @comments, $c; 5066 5074 } 5067 5075 } 5068 5076 else { 5069 @comments = @$comments; 5077 my $offset; 5078 if ($offset = $args->{offset}) { 5079 if ($offset < scalar @comments) { 5080 @comments = @$comments[$offset..$#comments]; 5081 } else { 5082 @comments = (); 5083 } 5084 } else { 5085 @comments = @$comments; 5086 } 5070 5087 $no_resort = 1 5071 5088 unless $args->{sort_order} || $args->{sort_by}; … … 5091 5108 $args{'sort'} = 'created_on'; 5092 5109 $args{'direction'} = 'descend'; 5093 my $c omments = $e->comments(\%terms, \%args);5094 my $ i =0;5110 my $cmts = $e->comments(\%terms, \%args); 5111 my $offset = $args->{offset} || 0; 5095 5112 if (@filters) { 5096 COMMENTS: for my $c (@$comments) { 5113 my $i = 0; 5114 my $j = 0; 5115 my $offset = $args->{offset} || 0; 5116 COMMENTS: for my $c (@$cmts) { 5097 5117 for (@filters) { 5098 5118 next COMMENTS unless $_->($c); 5099 5119 } 5120 next if $offset && $j++ < $offset; 5100 5121 push @comments, $c; 5101 5122 last if $n && ( $n <= ++$i ); 5102 5123 } 5103 } elsif ($n) { 5104 my $max = $n - 1 > $#$comments ? $#$comments : $n - 1; 5105 @comments = @$comments[0..$max]; 5124 } elsif ($offset || $n) { 5125 if ($offset) { 5126 if ($offset < scalar @$cmts - 1) { 5127 @$cmts = @$cmts[$offset..(scalar @$cmts - 1)]; 5128 } else { 5129 @$cmts = (); 5130 } 5131 } 5132 if ($n) { 5133 my $max = $n - 1 > scalar @$cmts - 1 ? scalar @$cmts - 1 : $n - 1; 5134 @$cmts = @$cmts[0..$max]; 5135 } 5136 @comments = @$cmts; 5106 5137 } else { 5107 @comments = @$c omments;5138 @comments = @$cmts; 5108 5139 } 5109 5140 } else { … … 5114 5145 if (!@filters) { 5115 5146 $args{limit} = $n if $n; 5147 $args{offset} = $args->{offset} if $args->{offset}; 5116 5148 $args{join} = MT->model('entry')->join_on( 5117 5149 undef, … … 5125 5157 my $iter = MT::Comment->load_iter(\%terms, \%args); 5126 5158 my %entries; 5159 my $j = 0; 5160 my $offset = $args->{offset} || 0; 5127 5161 COMMENT: while (my $c = $iter->()) { 5128 5162 my $e = $entries{$c->entry_id} ||= $c->entry; … … 5132 5166 next COMMENT unless $_->($c); 5133 5167 } 5168 next if $offset && $j++ < $offset; 5134 5169 push @comments, $c; 5135 5170 if ($n && (scalar @comments == $n)) {
