#!/usr/bin/perl
use Modern::Perl;
+use Encode qw( encode );
use C4::Service;
use Koha::Localizations;
our ( $query, $response ) = C4::Service->init( parameters => 'parameters_remaining_permissions' );
sub get_translations {
- my $rs = Koha::Localizations->search({ type => $query->param('type'), code => $query->param('code') });
+ my $rs = Koha::Localizations->search({ entity => $query->param('entity'), code => $query->param('code') });
my @translations;
while ( my $s = $rs->next ) {
push @translations, {
- id => $s->localization_id,
- type => $s->type,
- code => $s->code,
- lang => $s->lang,
- translation => $s->translation,
+ id => $s->localization_id,
+ entity => $s->entity,
+ code => $s->code,
+ lang => $s->lang,
+ translation => $s->translation,
}
}
$response->param( translations => \@translations );
my $id = $query->param('id');
my $translation = $query->param('translation');
my $lang = $query->param('lang');
- my $localization = Koha::Localizations->find( $id );
+ my $localization = Koha::Localizations->find( $id );
if ( defined $lang and $localization->lang ne $lang ) {
$localization->lang( $lang )
}
if ( defined $translation and $localization->translation ne $translation ) {
$localization->translation( $translation )
}
+ my %params;
my $is_changed;
if ( $localization->is_changed ) {
$is_changed = 1;
- $localization->store;
+ unless ( Koha::Localizations->search( { entity => $localization->entity, code => $localization->code, lang => $lang, localization_id => { '!=' => $localization->localization_id }, } )->count ) {
+ $localization->store;
+ } else {
+ $params{error} = 1;
+ $params{error_code} = 'already_exists';
+ }
}
$response->param(
+ %params,
id => $localization->localization_id,
entity => $localization->entity,
code => $localization->code,
my $code = $query->param('code');
my $lang = $query->param('lang');
my $translation = $query->param('translation');
- my $localization = Koha::Localization->new(
- {
- entity => $entity,
- code => $code,
- lang => $lang,
- translation => $translation,
- }
- );
- $localization->store;
- $localization->localization_id;
- $response->param(
- id => $localization->localization_id,
- entity => $localization->entity,
- code => $localization->code,
- lang => $localization->lang,
- translation => $localization->translation,
- );
+ unless ( Koha::Localizations->search({entity => $entity, code => $code, lang => $lang, })->count ) {
+ my $localization = Koha::Localization->new(
+ {
+ entity => $entity,
+ code => $code,
+ lang => $lang,
+ translation => $translation,
+ }
+ );
+ $localization->store;
+ $response->param(
+ id => $localization->localization_id,
+ entity => $localization->entity,
+ code => $localization->code,
+ lang => $localization->lang,
+ translation => $localization->translation,
+ );
+
+ } else {
+ $response->param( error => 1, error_code => 'already_exists', );
+ }
C4::Service->return_success( $response );
}