Bug 14145: Noisy warns in admin/preferences.pl
[koha.git] / admin / itemtypes.pl
index 1a33a21..9effa7e 100755 (executable)
@@ -4,18 +4,18 @@
 #
 # This file is part of Koha.
 #
-# Koha is free software; you can redistribute it and/or modify it under the
-# terms of the GNU General Public License as published by the Free Software
-# Foundation; either version 2 of the License, or (at your option) any later
-# version.
+# Koha is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
 #
-# Koha is distributed in the hope that it will be useful, but WITHOUT ANY
-# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
-# A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+# Koha is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
 #
-# You should have received a copy of the GNU General Public License along
-# with Koha; if not, write to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+# You should have received a copy of the GNU General Public License
+# along with Koha; if not, see <http://www.gnu.org/licenses>.
 
 =head1 admin/itemtypes.pl
 
@@ -42,7 +42,7 @@ written 20/02/2002 by paul.poulain@free.fr
 
 use strict;
 #use warnings; FIXME - Bug 2505
-use CGI;
+use CGI qw ( -utf8 );
 
 use List::Util qw/min/;
 use File::Spec;
@@ -73,11 +73,11 @@ my $op          = $input->param('op');
 $searchfield =~ s/\,//g;
 my ( $template, $borrowernumber, $cookie ) = get_template_and_user(
     {
-        template_name   => "admin/itemtypes.tmpl",
+        template_name   => "admin/itemtypes.tt",
         query           => $input,
         type            => "intranet",
         authnotrequired => 0,
-        flagsrequired   => { parameters => 1 },
+        flagsrequired   => { parameters => 'parameters_remaining_permissions' },
         debug           => 1,
     }
 );
@@ -91,6 +91,9 @@ if ($op) {
 
 my $dbh = C4::Context->dbh;
 
+my $sip_media_type = $input->param('sip_media_type');
+undef($sip_media_type) if defined($sip_media_type) and $sip_media_type =~ /^\s*$/;
+
 ################## ADD_FORM ##################################
 # called by default. Used to create form to add or  modify a record
 if ( $op eq 'add_form' ) {
@@ -117,8 +120,11 @@ if ( $op eq 'add_form' ) {
         imageurl        => $data->{'imageurl'},
         template        => C4::Context->preference('template'),
         summary         => $data->{summary},
+        checkinmsg      => $data->{'checkinmsg'},
+        checkinmsgtype  => $data->{'checkinmsgtype'},
         imagesets       => $imagesets,
         remote_image    => $remote_image,
+        sip_media_type  => $data->{sip_media_type},
     );
 
     # END $OP eq ADD_FORM
@@ -141,6 +147,9 @@ elsif ( $op eq 'add_validate' ) {
                  , notforloan = ?
                  , imageurl = ?
                  , summary = ?
+                 , checkinmsg = ?
+                 , checkinmsgtype = ?
+                 , sip_media_type = ?
             WHERE itemtype = ?
         ';
         $sth = $dbh->prepare($query2);
@@ -156,15 +165,18 @@ elsif ( $op eq 'add_validate' ) {
                 )
             ),
             $input->param('summary'),
+            $input->param('checkinmsg'),
+            $input->param('checkinmsgtype'),
+            $sip_media_type,
             $input->param('itemtype')
         );
     }
     else {    # add a new itemtype & not modif an old
         my $query = "
             INSERT INTO itemtypes
-                (itemtype,description,rentalcharge, notforloan, imageurl,summary)
+                (itemtype,description,rentalcharge, notforloan, imageurl, summary, checkinmsg, checkinmsgtype, sip_media_type)
             VALUES
-                (?,?,?,?,?,?);
+                (?,?,?,?,?,?,?,?,?);
             ";
         my $sth = $dbh->prepare($query);
                my $image = $input->param('image');
@@ -177,6 +189,9 @@ elsif ( $op eq 'add_validate' ) {
             $image eq 'remoteImage' ? $input->param('remoteImage') :
             $image,
             $input->param('summary'),
+            $input->param('checkinmsg'),
+            $input->param('checkinmsgtype'),
+            $sip_media_type,
         );
     }
 
@@ -188,15 +203,17 @@ elsif ( $op eq 'add_validate' ) {
     # called by default form, used to confirm deletion of data in DB
 }
 elsif ( $op eq 'delete_confirm' ) {
-    # Check both categoryitem and biblioitems, see Bug 199
-    my $total = 0;
-    for my $table ('biblioitems') {
-        my $sth =
-          $dbh->prepare(
-            "select count(*) as total from $table where itemtype=?");
-        $sth->execute($itemtype);
-        $total += $sth->fetchrow_hashref->{total};
-    }
+    # Check both items and biblioitems
+    my $sth = $dbh->prepare('
+        SELECT COUNT(*) AS total FROM (
+            SELECT itemtype AS t FROM biblioitems
+            UNION ALL
+            SELECT itype AS t FROM items
+        ) AS tmp
+        WHERE tmp.t=?
+    ');
+    $sth->execute($itemtype);
+    my $total = $sth->fetchrow_hashref->{'total'};
 
     my $sth =
       $dbh->prepare(