Bug 30813: Adjust TransformMarcToKoha to take kohafields parameter
[koha-ffzg.git] / C4 / Service.pm
index d59cd70..c50051d 100644 (file)
@@ -4,18 +4,18 @@ package C4::Service;
 #
 # 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 NAME
 
@@ -43,17 +43,22 @@ use warnings;
 
 use CGI qw ( -utf8 );
 use C4::Auth qw( check_api_auth );
-use C4::Output qw( :ajax );
+use C4::Output qw( output_with_http_headers );
 use C4::Output::JSONStream;
 use JSON;
 
-our $debug;
+our ( $query, $cookie );
 
-BEGIN {
-    $debug = $ENV{DEBUG} || 0;
-}
+sub _output {
+    my ( $response, $status ) = @_;
+    binmode STDOUT, ':encoding(UTF-8)';
 
-our ( $query, $cookie );
+    if ( $query->param( 'callback' ) ) {
+        output_with_http_headers $query, $cookie, $query->param( 'callback' ) . '(' . $response->output . ');', 'js';
+    } else {
+        output_with_http_headers $query, $cookie, $response->output, 'json', $status;
+    }
+}
 
 =head1 METHODS
 
@@ -75,7 +80,7 @@ passed to C<return_success()>.
 sub init {
     my ( $class, %needed_flags ) = @_;
 
-    our $query = new CGI;
+    our $query = CGI->new;
 
     my ( $status, $cookie_, $sessionID ) = check_api_auth( $query, \%needed_flags );
 
@@ -83,7 +88,7 @@ sub init {
 
     $class->return_error( 'auth', $status ) if ( $status ne 'ok' );
 
-    return ( $query, new C4::Output::JSONStream );
+    return ( $query, C4::Output::JSONStream->new );
 }
 
 =head2 return_error
@@ -108,12 +113,12 @@ param => value pairs.
 sub return_error {
     my ( $class, $type, $error, %flags ) = @_;
 
-    my $response = new C4::Output::JSONStream;
+    my $response = C4::Output::JSONStream->new;
 
     $response->param( message => $error ) if ( $error );
     $response->param( type => $type, %flags );
 
-    output_with_http_headers $query, $cookie, $response->output, 'json', '400 Bad Request';
+    _output( $response, '400 Bad Request' );
     exit;
 }
 
@@ -141,7 +146,7 @@ structure verbatim.
 sub return_multi {
     my ( $class, $responses, @flags ) = @_;
 
-    my $response = new C4::Output::JSONStream;
+    my $response = C4::Output::JSONStream->new;
 
     if ( !@$responses ) {
         $class->return_success( $response );
@@ -159,7 +164,7 @@ sub return_multi {
         }
 
         $response->param( 'multi' => JSON::true, responses => \@responses_formatted, @flags );
-        output_with_http_headers $query, $cookie, $response->output, 'json', '207 Multi-Status';
+        _output( $response, '207 Multi-Status' );
     }
 
     exit;
@@ -177,7 +182,7 @@ exit with HTTP status 200.
 sub return_success {
     my ( $class, $response ) = @_;
 
-    output_with_http_headers $query, $cookie, $response->output, 'json';
+    _output( $response );
 }
 
 =head2 require_params
@@ -198,7 +203,7 @@ sub require_params {
 
     for my $param ( @params ) {
         $class->return_error( 'params', "Missing '$param'" ) if ( !defined( $query->param( $param ) ) );
-        push @values, $query->param( $param );
+        push @values, scalar $query->param( $param ); # will we ever need multi_param here?
     }
 
     return @values;
@@ -246,7 +251,6 @@ sub dispatch {
             next ROUTE if ( !defined( $query->param ( $param ) ) );
         }
 
-        $debug and warn "Using $path";
         $handler->( @match );
         return;
     }