Bug 15362: Translatability: Fix issue on Administration 'Did you mean?'
[koha.git] / svc / cataloguing / framework
1 #!/usr/bin/perl
2
3 use Modern::Perl '2009';
4
5 use CGI;
6 use C4::Branch;
7 use C4::ClassSource;
8 use C4::Context;
9 use C4::Biblio;
10 use C4::Service;
11 use Koha::Database;
12
13 my ( $query, $response ) = C4::Service->init( editcatalogue => 'edit_catalogue' );
14
15 my $frameworkcode = $query->param( 'frameworkcode' ) // '';
16
17 my $tagslib = GetMarcStructure( 1, $frameworkcode );
18
19 my @tags;
20
21 foreach my $tag ( sort keys %$tagslib ) {
22     my $taglib = $tagslib->{$tag};
23     my $taginfo = { map { $_, $taglib->{$_} } grep { length $_ > 1 } keys %$taglib };
24     $taginfo->{subfields} = [ map { [ $_, $taglib->{$_} ] } grep { length $_ == 1 } sort keys %$taglib ];
25
26     push @tags, [ $tag, $taginfo ];
27 }
28
29 my $schema = Koha::Database->new->schema;
30 my $authorised_values = {};
31
32 $authorised_values->{branches} = [];
33 my $onlymine=C4::Context->preference('IndependentBranches') &&
34         C4::Context->userenv &&
35         C4::Context->userenv->{flags} % 2 == 0 &&
36         C4::Context->userenv->{branch};
37 my $branches = GetBranches($onlymine);
38 foreach my $thisbranch ( sort keys %$branches ) {
39     push @{ $authorised_values->{branches} }, { value => $thisbranch, lib => $branches->{$thisbranch}->{'branchname'} };
40 }
41
42 $authorised_values->{itemtypes} = [ $schema->resultset( "Itemtype" )->search( undef, {
43     columns => [ { value => 'itemtype' }, { lib => "description" } ],
44     order_by => "description",
45     result_class => 'DBIx::Class::ResultClass::HashRefInflator'
46 } ) ];
47
48 my $class_sources = GetClassSources();
49
50 my $default_source = C4::Context->preference("DefaultClassificationSource");
51
52 foreach my $class_source (sort keys %$class_sources) {
53     next unless $class_sources->{$class_source}->{'used'} or
54                 ($class_source eq $default_source);
55     push @{ $authorised_values->{cn_source} }, { value => $class_source, lib => $class_sources->{$class_source}->{'description'} };
56 }
57
58 my $branch_limit = C4::Context->userenv ? C4::Context->userenv->{"branch"} : "";
59 my $results;
60 if( $branch_limit ) {
61     $results = $schema->resultset( "AuthorisedValue" )->search(
62     { "authorised_values_branches.branchcode" => { "=", [ $branch_limit, undef ] } },
63     { join => "authorised_values_branches", order_by => "lib" } );
64 } else {
65     $results = $schema->resultset( "AuthorisedValue" )->search(
66     undef,
67     { order_by => "lib" } );
68 }
69
70 foreach my $result ( $results->all ) {
71     $authorised_values->{$result->category} ||= [];
72     push @{ $authorised_values->{$result->category} }, { value => $result->authorised_value, lib => $result->lib };
73 }
74
75 $response->param( framework => \@tags, authorised_values => $authorised_values );
76
77 C4::Service->return_success( $response );