Bug 17600: Standardize our EXPORT_OK
[srvgit] / tools / letter.pl
index 20eb747..b913d0e 100755 (executable)
 
 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()
@@ -77,7 +79,6 @@ our ( $template, $borrowernumber, $cookie, $staffflags ) = get_template_and_user
         query           => $input,
         type            => 'intranet',
         flagsrequired   => { tools => 'edit_notices' },
-        debug           => 1,
     }
 );
 
@@ -302,35 +303,56 @@ sub add_validate {
         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
@@ -341,25 +363,32 @@ sub add_validate {
 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;