Show
Ignore:
Timestamp:
03/20/08 03:08:27 (21 months ago)
Author:
fumiakiy
Message:

Moved bug-fixed code into the plugin so upgrade won't choke. The fix is in the next version of MT Professional, therefore the release of it will deprecate this branch.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • branches/CustomFieldsUpgradeAssistant-bugfix/plugins/CustomFields/customfields.pl

    r569 r571  
    1212use MT::Util qw( escape_unicode ); 
    1313use CustomFields::Util qw( get_meta save_meta ); 
    14 use CustomFields::Upgrade; 
    1514use CustomFields::Field; 
    1615 
     
    263262    # Author CF is always in plugindata 
    264263    $upg->progress(_translate_escape('Moving metadata storage for users...')); 
    265     CustomFields::Upgrade::customfields_move_meta($upg, 'author'); 
     264    customfields_move_meta_fixed($upg, 'author'); 
    266265 
    267266    # Process custom fields stored in plugindata 
    268267    # Category and folder stays in plugindata. 
    269268    $upg->progress(_translate_escape('Moving metadata storage for entries...')); 
    270     CustomFields::Upgrade::customfields_move_meta($upg, 'entry'); 
     269    customfields_move_meta_fixed($upg, 'entry'); 
    271270    $upg->progress(_translate_escape('Moving metadata storage for pages...')); 
    272     CustomFields::Upgrade::customfields_move_meta($upg, 'page'); 
     271    customfields_move_meta_fixed($upg, 'page'); 
    273272 
    274273    # Process custom fields stored in custom tables 
     
    309308} 
    310309 
     310sub customfields_move_meta_fixed { 
     311    my $plugin = shift; 
     312    my ($obj_type) = @_; 
     313    # CF21b stores authors data as "_NN" ('author' isn't there)! 
     314    my $t = $obj_type eq 'author' ? q() : $obj_type; 
     315 
     316    require MT::PluginData; 
     317    my $pd_iter = MT::PluginData->load_iter( 
     318      { 
     319        plugin => 'CustomFields', 
     320        key => "${t}_%", 
     321      }, 
     322      { 
     323        like => { key => 1 } 
     324      } 
     325    ); 
     326 
     327    my @pd_ids; 
     328    while ( my $pd = $pd_iter->() ) { 
     329        if ( $pd->key =~ /^${t}_(\d+)$/ ) { 
     330            my $id = $1; 
     331            my $pd_data = $pd->data; 
     332            next unless $pd_data; 
     333            my $old_meta = $pd_data->{customfields}; 
     334            unless ( $old_meta ) { 
     335                $old_meta = $pd_data; 
     336            } 
     337            my $obj = MT->model($obj_type)->load($id); 
     338            next unless $obj; 
     339            save_meta($obj, $old_meta); 
     340            push @pd_ids, $pd->id; 
     341        } 
     342    } 
     343 
     344    MT::PluginData->remove( { id => \@pd_ids } ); 
     345    1; 
     346} 
     347 
    3113481; 
    312349