Changeset 2351

Show
Ignore:
Timestamp:
05/16/08 05:29:48 (21 months ago)
Author:
fumiakiy
Message:

Modify ids of widget templates in the meta field of widgetsets when they are cloned. BugId:79748

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • branches/release-38/lib/MT/Blog.pm

    r2090 r2351  
    833833        $callback->($state, "tmpls"); 
    834834        require MT::Template; 
    835         $iter = MT::Template->load_iter({ blog_id => $old_blog_id }); 
    836         $counter = 0; 
    837         while (my $tmpl = $iter->()) { 
    838             $callback->($state . " " . MT->translate("[_1] records processed...", $counter), 'tmpls') 
    839                 if $counter && ($counter % 100 == 0); 
     835        $iter = MT::Template->load_iter( 
     836            { blog_id => $old_blog_id, type => { not => 'widgetset' } } 
     837        ); 
     838        my $tmpl_processor = sub { 
     839            my ( $new_blog_id, $counter, $tmpl, $tmpl_map ) = @_; 
     840            $callback->($state . " " . MT->translate("[_1] records processed...", $$counter), 'tmpls') 
     841                if $counter && ($$counter % 100 == 0); 
    840842            my $tmpl_id = $tmpl->id; 
    841             $counter++; 
     843            $$counter++; 
    842844            delete $tmpl->{column_values}->{id}; 
    843845            delete $tmpl->{changed_cols}->{id}; 
     
    849851            $tmpl->blog_id($new_blog_id); 
    850852            $tmpl->save or die $tmpl->errstr; 
    851             $tmpl_map{$tmpl_id} = $tmpl->id; 
     853            $tmpl_map->{$tmpl_id} = $tmpl->id; 
     854        }; 
     855        $counter = 0; 
     856        while (my $tmpl = $iter->()) { 
     857            $tmpl_processor->($new_blog_id, \$counter, $tmpl, \%tmpl_map); 
     858        } 
     859        $iter = MT::Template->load_iter( 
     860            { blog_id => $old_blog_id, type => 'widgetset' } 
     861        ); 
     862        while (my $tmpl = $iter->()) { 
     863            $tmpl_processor->($new_blog_id, \$counter, $tmpl, \%tmpl_map); 
     864            my @old_widgets = split /,/, $tmpl->modulesets; 
     865            my @new_widgets; 
     866            push @new_widgets, $tmpl_map{$_} 
     867                foreach @old_widgets; 
     868            $tmpl->modulesets( join(',', @new_widgets) ); 
     869            $tmpl->save; 
    852870        } 
    853871        $callback->($state . " " . MT->translate("[_1] records processed.", $counter), 'tmpls');