+ $template->param( csv_profile => $csv_profile, );
+} elsif ( $op eq 'add_validate' ) {
+ my $profile = $input->param("profile");
+ my $description = $input->param("description");
+ my $type = $input->param("type");
+ my $used_for =
+ $type eq "marc"
+ ? $input->param("used_for_marc")
+ : $input->param("used_for_sql");
+ my $content =
+ $type eq "marc"
+ ? $input->param("marc_content")
+ : $input->param("sql_content");
+ my $csv_separator = $input->param("csv_separator");
+ my $field_separator = $input->param("field_separator");
+ my $subfield_separator = $input->param("subfield_separator");
+ my $encoding = $input->param("encoding");
+ my $staff_only = $input->param("staff_only") ? 1 : 0;
+
+ if ($export_format_id) {
+ my $csv_profile = Koha::CsvProfiles->find($export_format_id)
+ or die "Something went wrong! This export_format_id does not match any existing CSV profile.";
+ $csv_profile->profile($profile);
+ $csv_profile->description($description);
+ $csv_profile->content($content);
+ $csv_profile->csv_separator($csv_separator);
+ $csv_profile->field_separator($field_separator);
+ $csv_profile->subfield_separator($subfield_separator);
+ $csv_profile->encoding($encoding);
+ $csv_profile->type($type);
+ $csv_profile->used_for($used_for);
+ $csv_profile->staff_only($staff_only);
+ eval { $csv_profile->store; };
+
+ if ($@) {
+ push @messages, { type => 'error', code => 'error_on_update' };
+ } else {
+ push @messages, { type => 'message', code => 'success_on_update' };
+ }
+ } else {
+ my $csv_profile = Koha::CsvProfile->new(
+ { profile => $profile,
+ description => $description,
+ content => $content,
+ csv_separator => $csv_separator,
+ field_separator => $field_separator,
+ subfield_separator => $subfield_separator,
+ encoding => $encoding,
+ type => $type,
+ used_for => $used_for,
+ staff_only => $staff_only
+ }
+ );
+ eval { $csv_profile->store; };
+ if ($@) {
+ push @messages, { type => 'error', code => 'error_on_insert' };
+ } else {
+ push @messages, { type => 'message', code => 'success_on_insert' };
+ }