use Modern::Perl;
use CGI qw ( -utf8 );
-use C4::Auth;
+use C4::Auth qw( get_template_and_user );
use C4::Context;
-use C4::Output;
-use C4::Letters;
+use C4::Output qw( output_html_with_http_headers );
+use C4::Letters qw( GetMessageTransportTypes );
+use C4::Log qw( logaction );
+use Koha::Notice::Templates;
use Koha::Patron::Attribute::Types;
# $protected_letters = protected_letters()
query => $input,
type => 'intranet',
flagsrequired => { tools => 'edit_notices' },
- debug => 1,
}
);
my $is_html = $input->param("is_html_$mtt\_$lang");
my $title = shift @title;
my $content = shift @content;
- my $letter = C4::Letters::getletter( $oldmodule, $code, $branchcode, $mtt, $lang );
+ my $letter = Koha::Notice::Templates->find(
+ {
+ module => $oldmodule,
+ code => $code,
+ branchcode => $branchcode,
+ message_transport_type => $mtt,
+ lang => $lang
+ }
+ );
- # getletter can return the default letter even if we pass a branchcode
- # If we got the default one and we needed the specific one, we didn't get the one we needed!
- if ( $letter and $branchcode and $branchcode ne $letter->{branchcode} ) {
- $letter = undef;
- }
unless ( $title and $content ) {
# Delete this mtt if no title or content given
delete_confirmed( $branchcode, $oldmodule, $code, $mtt, $lang );
next;
}
- elsif ( $letter and $letter->{message_transport_type} eq $mtt and $letter->{lang} eq $lang ) {
- $dbh->do(
- q{
- UPDATE letter
- SET branchcode = ?, module = ?, name = ?, is_html = ?, title = ?, content = ?, lang = ?
- WHERE branchcode = ? AND module = ? AND code = ? AND message_transport_type = ? AND lang = ?
- },
- undef,
- $branchcode || '', $module, $name, $is_html || 0, $title, $content, $lang,
- $branchcode, $oldmodule, $code, $mtt, $lang
- );
+ elsif ( $letter ) {
+ logaction( 'NOTICES', 'MODIFY', $letter->id, $content,
+ 'Intranet' )
+ if ( C4::Context->preference("NoticesLog")
+ && $content ne $letter->content );
+
+ $letter->set(
+ {
+ branchcode => $branchcode || '',
+ module => $module,
+ name => $name,
+ is_html => $is_html || 0,
+ title => $title,
+ content => $content,
+ lang => $lang
+ }
+ )->store;
+
} else {
- $dbh->do(
- q{INSERT INTO letter (branchcode,module,code,name,is_html,title,content,message_transport_type, lang) VALUES (?,?,?,?,?,?,?,?,?)},
- undef,
- $branchcode || '', $module, $code, $name, $is_html || 0, $title, $content, $mtt, $lang
- );
+ my $letter = Koha::Notice::Template->new(
+ {
+ branchcode => $branchcode,
+ module => $module,
+ code => $code,
+ name => $name,
+ is_html => $is_html,
+ title => $title,
+ content => $content,
+ message_transport_type => $mtt,
+ lang => $lang
+ }
+ )->store;
+ logaction( 'NOTICES', 'CREATE', $letter->id, $letter->content,
+ 'Intranet' )
+ if C4::Context->preference("NoticesLog");
}
}
# set up default display
sub delete_confirm {
my ($branchcode, $module, $code) = @_;
my $dbh = C4::Context->dbh;
- my $letter = C4::Letters::getletter($module, $code, $branchcode);
- my @values = values %$letter;
+ my $letter = Koha::Notice::Templates->search(
+ { module => $module, code => $code, branchcode => $branchcode } );
$template->param(
- letter => $letter,
+ letter => $letter ? $letter->next : undef,
);
return;
}
sub delete_confirmed {
- my ($branchcode, $module, $code, $mtt, $lang) = @_;
- C4::Letters::DelLetter(
+ my ( $branchcode, $module, $code, $mtt, $lang ) = @_;
+ my $letters = Koha::Notice::Templates->search(
{
branchcode => $branchcode || '',
module => $module,
code => $code,
- mtt => $mtt,
- lang => $lang,
+ ( $mtt ? ( message_transport_type => $mtt ) : () ),
+ ( $lang ? ( lang => $lang ) : () ),
}
);
+ while ( my $letter = $letters->next ) {
+ logaction( 'NOTICES', 'DELETE', $letter->id, $letter->content,
+ 'Intranet' )
+ if C4::Context->preference("NoticesLog");
+ $letter->delete;
+ }
+
# setup default display for screen
default_display($branchcode);
return;