[MTOS-dev] [movabletype] takayama, r1616: Fixed BugId:70976
Yuji Takayama
ytakayama at sixapart.com
Fri Mar 28 08:23:45 PDT 2008
Hi, Ogawa-san.
I'm sorry for confusing. And thanks for your patch.
I thought that this case is a part of case 70960. The applying of all
patches is performed by resolved case 70960.
I'm still working on applying your patches.
I think I will never change the status until the root case 70960 ends.
Thanks.
--
Yuji Takayama
On 08.3.28 11:47 PM, "Hirotaka Ogawa" <hirotaka.ogawa at gmail.com> wrote:
> This changset is no good. Because,
> MT::ArchiveType::Category->get_adjacent_category_entry() and
> MT::ArchiveType::Author->get_adjacent_author_entry() could be called
> not only for category_based+date_based and author_based+date_based
> archivers, but also for Category or Author archivers.
>
> Please consult: http://pastie.org/172017
>
> Part of my intention of this patch is to provide a set of common
> interfaces to all date_based archivers, that is next_archive_entry()
> and previous_archive_entry(). They are basically intended to pick up
> one of entries included in the next or previous date_based archives.
> And if the archiver is category_based or author_based, as well as
> date_based, they'll pick up one of entries included in the next or
> previous category_based+date_based or author_based+date_based
> archives.
>
> I think this is quote a reasonable interface design.
>
>
>
> On Fri, Mar 28, 2008 at 9:12 PM, <commits at code.sixapart.com> wrote:
>> Fixed BugId:70976
>> * Applied ogawa-san's suggestion
>>
>>
>> U branches/release-32/lib/MT/ArchiveType/Author.pm
>> U branches/release-32/lib/MT/ArchiveType/Category.pm
>> U branches/release-32/lib/MT/ArchiveType/Date.pm
>> U branches/release-32/lib/MT/Page.pm
>> U branches/release-32/lib/MT/Template/ContextHandlers.pm
>> U branches/release-32/lib/MT/Util.pm
>> U branches/release-32/lib/MT/WeblogPublisher.pm
>>
>>
>> Modified: branches/release-32/lib/MT/ArchiveType/Author.pm
>> ===================================================================
>> --- branches/release-32/lib/MT/ArchiveType/Author.pm 2008-03-28 05:00:17
>> UTC (rev 1615)
>> +++ branches/release-32/lib/MT/ArchiveType/Author.pm 2008-03-28 12:12:37
>> UTC (rev 1616)
>> @@ -209,4 +209,30 @@
>> \@entries;
>> }
>>
>> +sub get_adjacent_author_entry {
>> + my $self = shift;
>> + my ( $ts, $blog_id, $author, $order ) = @_;
>> + if ( $order eq 'previous' ) {
>> + $order = 'descend';
>> + }
>> + else {
>> + $order = 'ascend';
>> + }
>> + require MT::Entry;
>> + my $entry = MT::Entry->load(
>> + {
>> + status => MT::Entry::RELEASE(),
>> + author_id => $author->id,
>> + blog_id => $blog_id
>> + },
>> + {
>> + limit => 1,
>> + 'sort' => 'authored_on',
>> + direction => $order,
>> + start_val => $ts
>> + }
>> + );
>> + $entry;
>> +}
>> +
>> 1;
>>
>> Modified: branches/release-32/lib/MT/ArchiveType/Category.pm
>> ===================================================================
>> --- branches/release-32/lib/MT/ArchiveType/Category.pm 2008-03-28 05:00:17
>> UTC (rev 1615)
>> +++ branches/release-32/lib/MT/ArchiveType/Category.pm 2008-03-28 12:12:37
>> UTC (rev 1616)
>> @@ -176,4 +176,29 @@
>> return 1;
>> }
>>
>> +sub get_adjacent_category_entry {
>> + my $self = shift;
>> + my ( $ts, $cat, $order ) = @_;
>> + if ( $order eq 'previous' ) {
>> + $order = 'descend';
>> + }
>> + else {
>> + $order = 'ascend';
>> + }
>> + require MT::Entry;
>> + require MT::Placement;
>> + my $entry = MT::Entry->load(
>> + { status => MT::Entry::RELEASE() },
>> + {
>> + limit => 1,
>> + 'sort' => 'authored_on',
>> + direction => $order,
>> + start_val => $ts,
>> + 'join' =>
>> + [ 'MT::Placement', 'entry_id', { category_id => $cat->id } ]
>> + }
>> + );
>> + $entry;
>> +}
>> +
>> 1;
>>
>> Modified: branches/release-32/lib/MT/ArchiveType/Date.pm
>> ===================================================================
>> --- branches/release-32/lib/MT/ArchiveType/Date.pm 2008-03-28 05:00:17
>> UTC (rev 1615)
>> +++ branches/release-32/lib/MT/ArchiveType/Date.pm 2008-03-28 12:12:37
>> UTC (rev 1616)
>> @@ -101,4 +101,32 @@
>> \@entries;
>> }
>>
>> +sub get_entry {
>> + my $archiver = shift;
>> + my ( $ts, $blog_id, $order ) = @_;
>> + my ( $start, $end ) = $archiver->date_range($ts);
>> + if ( $order eq 'previous' ) {
>> + $order = 'descend';
>> + $ts = $start;
>> + }
>> + else {
>> + $order = 'ascend';
>> + $ts = $end;
>> + }
>> +
>> + my $entry = MT->model('entry')->load(
>> + {
>> + blog_id => $blog_id,
>> + status => MT::Entry::RELEASE()
>> + },
>> + {
>> + limit => 1,
>> + 'sort' => 'authored_on',
>> + direction => $order,
>> + start_val => $ts
>> + }
>> + );
>> + $entry;
>> +}
>> +
>> 1;
>>
>> Modified: branches/release-32/lib/MT/Page.pm
>> ===================================================================
>> --- branches/release-32/lib/MT/Page.pm 2008-03-28 05:00:17 UTC (rev 1615)
>> +++ branches/release-32/lib/MT/Page.pm 2008-03-28 12:12:37 UTC (rev 1616)
>> @@ -64,10 +64,4 @@
>> return ($page->permalink(@_));
>> }
>>
>> -# This routine is declared to avoid building 'previous'/'next' pages
>> -# by MT's rebuild process.
>> -sub get_entry {
>> - return undef;
>> -}
>> -
>> 1;
>>
>> Modified: branches/release-32/lib/MT/Template/ContextHandlers.pm
>> ===================================================================
>> --- branches/release-32/lib/MT/Template/ContextHandlers.pm 2008-03-28
>> 05:00:17 UTC (rev 1615)
>> +++ branches/release-32/lib/MT/Template/ContextHandlers.pm 2008-03-28
>> 12:12:37 UTC (rev 1616)
>> @@ -5605,45 +5605,6 @@
>> }
>>
>> ## Archives
>> -sub _get_adjacent_category_entry {
>> - my($ts, $cat, $order) = @_;
>> - if ($order eq 'previous') {
>> - $order = 'descend';
>> - } else {
>> - $order = 'ascend';
>> - }
>> - require MT::Entry;
>> - require MT::Placement;
>> - my $entry = MT::Entry->load(
>> - { status => MT::Entry::RELEASE() },
>> - { limit => 1,
>> - 'sort' => 'authored_on',
>> - direction => $order,
>> - start_val => $ts,
>> - 'join' => [ 'MT::Placement', 'entry_id',
>> - { category_id => $cat->id } ] });
>> - $entry;
>> -}
>> -
>> -sub _get_adjacent_author_entry {
>> - my($ts, $blog_id, $author, $order) = @_;
>> - if ($order eq 'previous') {
>> - $order = 'descend';
>> - } else {
>> - $order = 'ascend';
>> - }
>> - require MT::Entry;
>> - my $entry = MT::Entry->load(
>> - { status => MT::Entry::RELEASE(),
>> - author_id => $author->id,
>> - blog_id => $blog_id },
>> - { limit => 1,
>> - 'sort' => 'authored_on',
>> - direction => $order,
>> - start_val => $ts});
>> - $entry;
>> -}
>> -
>> sub _hdlr_archive_prev_next {
>> my($ctx, $args, $cond) = @_;
>> my $tag = lc $ctx->stash('tag');
>> @@ -5659,9 +5620,9 @@
>> $start = $ctx->{current_timestamp};
>> $end = $ctx->{current_timestamp_end};
>> if ($is_prev) {
>> - $entry = _get_adjacent_category_entry( $start, $cat, 'previous'
>> );
>> + $entry = $arctype->get_adjacent_category_entry( $start, $cat,
>> 'previous' );
>> } else {
>> - $entry = _get_adjacent_category_entry( $end, $cat, 'next' );
>> + $entry = $arctype->get_adjacent_category_entry( $end, $cat,
>> 'next' );
>> }
>> } elsif ($arctype->date_based && $arctype->author_based) {
>> my $author = $ctx->stash('author');
>> @@ -5669,9 +5630,9 @@
>> $start = $ctx->{current_timestamp};
>> $end = $ctx->{current_timestamp_end};
>> if ($is_prev) {
>> - $entry = _get_adjacent_author_entry( $start, $blog->id,
>> $author, 'previous' );
>> + $entry = $arctype->get_adjacent_author_entry( $start,
>> $blog->id, $author, 'previous' );
>> } else {
>> - $entry = _get_adjacent_author_entry( $end, $blog->id, $author,
>> 'next' );
>> + $entry = $arctype->get_adjacent_author_entry( $end, $blog->id,
>> $author, 'next' );
>> }
>> } elsif ($arctype->category_based) {
>> return _hdlr_category_prevnext(@_);
>>
>> Modified: branches/release-32/lib/MT/Util.pm
>> ===================================================================
>> --- branches/release-32/lib/MT/Util.pm 2008-03-28 05:00:17 UTC (rev 1615)
>> +++ branches/release-32/lib/MT/Util.pm 2008-03-28 12:12:37 UTC (rev 1616)
>> @@ -961,7 +961,15 @@
>> }
>>
>> sub get_entry {
>> - MT->instance->publisher->get_entry(@_);
>> + my ( $ts, $blog_id, $at, $order ) = @_;
>> + my $archiver = MT->instance->publisher->archiver($at)
>> + or return;
>> +
>> + if ($archiver->can('get_entry')) {
>> + return $archiver->get_entry($ts, $blog_id, $order);
>> + }
>> +
>> + return;
>> }
>>
>> sub is_valid_date {
>>
>> Modified: branches/release-32/lib/MT/WeblogPublisher.pm
>> ===================================================================
>> --- branches/release-32/lib/MT/WeblogPublisher.pm 2008-03-28 05:00:17
>> UTC (rev 1615)
>> +++ branches/release-32/lib/MT/WeblogPublisher.pm 2008-03-28 12:12:37
>> UTC (rev 1616)
>> @@ -465,9 +465,9 @@
>> my @db_at = grep { my $archiver = $mt->archiver($_); $archiver &&
>> $archiver->date_based } $mt->archive_types;
>> for my $at (@db_at) {
>> if ( $at{$at} ) {
>> - my @arg = ( $entry->authored_on, $entry->blog_id, $at );
>> + my @arg = ( $entry->authored_on, $entry->blog_id );
>> my $archiver = $mt->archiver($at);
>> - if ( my $prev_arch = $mt->get_entry( @arg, 'previous' ) ) {
>> + if ( my $prev_arch = $archiver->get_entry( @arg, 'previous'
>> ) ) {
>> if ( $archiver->category_based ) {
>> my $cats = $prev_arch->categories;
>> for my $cat (@$cats) {
>> @@ -496,7 +496,7 @@
>> ) or return;
>> }
>> }
>> - if ( my $next_arch = $mt->get_entry( @arg, 'next' ) ) {
>> + if ( my $next_arch = $archiver->get_entry( @arg, 'next' ) )
>> {
>> if ( $archiver->category_based ) {
>> my $cats = $next_arch->categories;
>> for my $cat (@$cats) {
>> @@ -1738,35 +1738,6 @@
>> $file;
>> }
>>
>> -sub get_entry {
>> - my $mt = shift;
>> - my ( $ts, $blog_id, $at, $order ) = @_;
>> - my $archiver = $mt->archiver($at);
>> - my ( $start, $end ) = $archiver->date_range($ts);
>> - if ( $order eq 'previous' ) {
>> - $order = 'descend';
>> - $ts = $start;
>> - }
>> - else {
>> - $order = 'ascend';
>> - $ts = $end;
>> - }
>> - require MT::Entry;
>> - my $entry = MT::Entry->load(
>> - {
>> - blog_id => $blog_id,
>> - status => MT::Entry::RELEASE()
>> - },
>> - {
>> - limit => 1,
>> - 'sort' => 'authored_on',
>> - direction => $order,
>> - start_val => $ts
>> - }
>> - );
>> - $entry;
>> -}
>> -
>> # Adds an element to the rebuild queue when the plugin is enabled.
>> sub queue_build_file_filter {
>> my $mt = shift;
>>
>>
>> _______________________________________________
>> MTOS-commits mailing list
>> MTOS-commits at sixapart.com
>> http://www.sixapart.com/mailman/listinfo/mtos-commits
>>
>
>
More information about the MTOS-dev
mailing list