Changeset 838

Show
Ignore:
Timestamp:
07/14/08 23:30:26 (4 months ago)
Author:
mpaschal
Message:

start making type conversion variable

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/LinkedEntryCustomFields/plugins/LinkedEntryCustomFields/lib/LinkedEntryCustomFields/Convert.pm

    r837 r838  
    44use warnings; 
    55 
     6my %custom_type_for_right_type = ( 
     7    entry => 'entry', 
     8    file  => 'asset', 
     9); 
     10 
    611sub _make_custom_field { 
    712    my %param = @_; 
    8     my ($blog_id, $field_id, $field_data) = @param{qw( blog_id field_id data )}; 
     13    my ($blog_id, $field_id, $field_type, $field_data) = @param{qw( blog_id field_id field_type data )}; 
     14    my $cf_type = $custom_type_for_right_type{$field_type} 
     15        or return; 
    916     
    1017    # Make or update the corresponding custom field. 
     
    1522    $cf ||= MT->model('field')->new; 
    1623     
    17     my $options = $field_data->{weblog}; 
    18     $options = join q{,}, $field_data->{category_ids} 
    19         if $field_data->{category_ids}; 
     24    if ($field_type eq 'entry') { 
     25        my $options = $field_data->{weblog}; 
     26        $options = join q{,}, $field_data->{category_ids} 
     27            if $field_data->{category_ids}; 
     28    } 
    2029 
    2130    $cf->set_values({ 
    2231        name     => $field_data->{label}, 
    23         obj_type => 'entry', 
    24         type     => 'entry'
     32        obj_type => 'entry',  # rightfields only exist for entries 
     33        type     => $cf_type
    2534        options  => $options, 
    2635        basename => $field_id, 
     
    3645} 
    3746 
     47my %meta_field_for_field_type = ( 
     48    entry => 'vchar_idx', 
     49); 
     50 
     51sub _copy_asset_custom_fields_from_file { 
     52    my %param = @_; 
     53    my ($blog_id, $field_id, $datasource) = @param{qw( blog_id field_id datasource )}; 
     54     
     55    die "File conversion not yet implemented\n"; 
     56} 
     57 
    3858sub _copy_custom_field_data_from_pseudofields { 
    3959    my %param = @_; 
    40     my ($blog_id, $field_id, $datasource) = @param{qw( blog_id field_id datasource )}; 
     60    my ($blog_id, $field_id, $field_type, $datasource) = @param{qw( blog_id field_id field_type datasource )}; 
    4161     
    4262    my $data_iter = MT->model('plugindata')->load_iter({ plugin => 'RightFieldsPseudo' }); 
    4363     
    4464    my $meta_pkg = MT->model('entry')->meta_pkg; 
    45     # TODO: vary this based on field we're converting... really we should 
    46     # convert pseudofields en masse, i guess, to keep from having to re- 
    47     # iterate plugindata for every field for every blog with pseudofields. 
    48     my $meta_field = 'vchar_idx'; 
     65    # TODO: really we should convert pseudofields en masse, i guess, to keep 
     66    # from having to reiterate plugindata for every field for every blog. 
     67    my $meta_field = $meta_field_for_field_type{$field_type}; 
    4968    DATA: while (my $data_obj = $data_iter->()) { 
    5069        my $data = $data_obj->data; 
     
    6685sub _copy_custom_field_data { 
    6786    my %param = @_; 
    68     my ($blog_id, $field_id, $datasource) = @param{qw( blog_id field_id datasource )}; 
     87    my ($blog_id, $field_id, $field_type, $datasource) = @param{qw( blog_id field_id field_type datasource )}; 
    6988     
    7089    return _copy_custom_field_data_from_pseudofields(@_) 
    7190        if $datasource eq '_pseudo'; 
     91    return _copy_asset_custom_fields_from_file(@_) 
     92        if $field_type eq 'file'; 
    7293 
    7394    # Find the class that represents that RF table. 
     
    98119 
    99120    my $meta_table = $driver->table_for($meta_pkg); 
    100     # TODO: vary the meta field based on the field we're converting 
    101     my @meta_fields = (qw( entry_id type ), 'vchar_idx'); 
     121    my @meta_fields = (qw( entry_id type ), $meta_field_for_field_type{$field_type}; 
    102122    @meta_fields = map { $dbd->db_column_name($meta_table, $_) } @meta_fields; 
    103123 
     
    157177        my $fields = $fields_data->{cols}; 
    158178        FIELD: while (my ($field_id, $field_data) = each %$fields) { 
    159             # Entry fields only. 
    160179            # TODO: less so for other field types. 
    161180            next FIELD if !$field_data->{type} 
    162                 || $field_data->{type} ne 'entry'
     181                || !$custom_type_for_right_type{type}
    163182 
    164183            my %field;