52814a9fa0
by caching yaml file This patch improve circulation performance by caching yaml file With this patch we saved between 300ms and 500ms on circulation page. Following Comment #3 : No useless warn No tidy Signed-off-by: Bernardo Gonzalez Kriegel <bgkriegel@gmail.com> Less lines, same result. Comments were useful on testing :) No errors Signed-off-by: Jonathan Druart <jonathan.druart@koha-community.org> Signed-off-by: Tomas Cohen Arazi <tomascohen@unc.edu.ar>
89 lines
2.4 KiB
Perl
89 lines
2.4 KiB
Perl
package C4::Utils::DataTables::ColumnsSettings;
|
|
|
|
use Modern::Perl;
|
|
use List::Util qw( first );
|
|
use YAML;
|
|
use C4::Context;
|
|
use Koha::Database;
|
|
use Koha::Cache;
|
|
|
|
sub get_yaml {
|
|
my $yml_path = C4::Context->config('intranetdir') . '/admin/columns_settings.yml';
|
|
my $cache = Koha::Cache->get_instance();
|
|
my $yaml = $cache->get_from_cache('ColumnsSettingsYaml');
|
|
|
|
unless ($yaml) {
|
|
$yaml = eval { YAML::LoadFile($yml_path) };
|
|
warn "ERROR: the yaml file for DT::ColumnsSettings is not correctly formated: $@"
|
|
if $@;
|
|
$cache->set_in_cache( 'ColumnsSettingsYaml', $yaml, { expiry => 3600 } );
|
|
}
|
|
|
|
return $yaml;
|
|
}
|
|
|
|
sub get_columns {
|
|
my ( $module, $page, $tablename ) = @_;
|
|
|
|
my $list = get_yaml;
|
|
|
|
my $schema = Koha::Database->new->schema;
|
|
|
|
my $rs = $schema->resultset('ColumnsSetting')->search(
|
|
{
|
|
module => $module,
|
|
page => $page,
|
|
tablename => $tablename,
|
|
}
|
|
);
|
|
|
|
while ( my $c = $rs->next ) {
|
|
my $column = first { $c->columnname eq $_->{columnname} }
|
|
@{ $list->{modules}{ $c->module }{ $c->page }{ $c->tablename } };
|
|
$column->{is_hidden} = $c->is_hidden;
|
|
$column->{cannot_be_toggled} = $c->cannot_be_toggled;
|
|
}
|
|
|
|
return $list->{modules}{$module}{$page}{$tablename} || [];
|
|
}
|
|
|
|
sub get_modules {
|
|
my $list = get_yaml;
|
|
|
|
my $schema = Koha::Database->new->schema;
|
|
my $rs = $schema->resultset('ColumnsSetting')->search;
|
|
|
|
while ( my $c = $rs->next ) {
|
|
my $column = first { $c->columnname eq $_->{columnname} }
|
|
@{ $list->{modules}{ $c->module }{ $c->page }{ $c->tablename } };
|
|
$column->{is_hidden} = $c->is_hidden;
|
|
$column->{cannot_be_toggled} = $c->cannot_be_toggled;
|
|
}
|
|
|
|
return $list->{modules};
|
|
}
|
|
|
|
sub update_columns {
|
|
my ($params) = @_;
|
|
my $columns = $params->{columns};
|
|
|
|
my $schema = Koha::Database->new->schema;
|
|
|
|
for my $c (@$columns) {
|
|
$c->{is_hidden} //= 0;
|
|
$c->{cannot_be_toggled} //= 0;
|
|
|
|
$schema->resultset('ColumnsSetting')->update_or_create(
|
|
{
|
|
module => $c->{module},
|
|
page => $c->{page},
|
|
tablename => $c->{tablename},
|
|
columnname => $c->{columnname},
|
|
is_hidden => $c->{is_hidden},
|
|
cannot_be_toggled => $c->{cannot_be_toggled},
|
|
}
|
|
);
|
|
}
|
|
}
|
|
|
|
1;
|