Changeset 838
- Timestamp:
- 07/14/08 23:30:26 (4 months ago)
- Files:
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/LinkedEntryCustomFields/plugins/LinkedEntryCustomFields/lib/LinkedEntryCustomFields/Convert.pm
r837 r838 4 4 use warnings; 5 5 6 my %custom_type_for_right_type = ( 7 entry => 'entry', 8 file => 'asset', 9 ); 10 6 11 sub _make_custom_field { 7 12 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; 9 16 10 17 # Make or update the corresponding custom field. … … 15 22 $cf ||= MT->model('field')->new; 16 23 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 } 20 29 21 30 $cf->set_values({ 22 31 name => $field_data->{label}, 23 obj_type => 'entry', 24 type => 'entry',32 obj_type => 'entry', # rightfields only exist for entries 33 type => $cf_type, 25 34 options => $options, 26 35 basename => $field_id, … … 36 45 } 37 46 47 my %meta_field_for_field_type = ( 48 entry => 'vchar_idx', 49 ); 50 51 sub _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 38 58 sub _copy_custom_field_data_from_pseudofields { 39 59 my %param = @_; 40 my ($blog_id, $field_id, $ datasource) = @param{qw( blog_id field_iddatasource )};60 my ($blog_id, $field_id, $field_type, $datasource) = @param{qw( blog_id field_id field_type datasource )}; 41 61 42 62 my $data_iter = MT->model('plugindata')->load_iter({ plugin => 'RightFieldsPseudo' }); 43 63 44 64 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}; 49 68 DATA: while (my $data_obj = $data_iter->()) { 50 69 my $data = $data_obj->data; … … 66 85 sub _copy_custom_field_data { 67 86 my %param = @_; 68 my ($blog_id, $field_id, $ datasource) = @param{qw( blog_id field_iddatasource )};87 my ($blog_id, $field_id, $field_type, $datasource) = @param{qw( blog_id field_id field_type datasource )}; 69 88 70 89 return _copy_custom_field_data_from_pseudofields(@_) 71 90 if $datasource eq '_pseudo'; 91 return _copy_asset_custom_fields_from_file(@_) 92 if $field_type eq 'file'; 72 93 73 94 # Find the class that represents that RF table. … … 98 119 99 120 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}; 102 122 @meta_fields = map { $dbd->db_column_name($meta_table, $_) } @meta_fields; 103 123 … … 157 177 my $fields = $fields_data->{cols}; 158 178 FIELD: while (my ($field_id, $field_data) = each %$fields) { 159 # Entry fields only.160 179 # TODO: less so for other field types. 161 180 next FIELD if !$field_data->{type} 162 || $field_data->{type} ne 'entry';181 || !$custom_type_for_right_type{type}; 163 182 164 183 my %field;
