1 package C4::Utils::DataTables::TablesSettings;
4 use List::Util qw( first );
11 my $yml_path = C4::Context->config('intranetdir') . '/admin/columns_settings.yml';
12 my $cache = Koha::Caches->get_instance();
13 my $yaml = $cache->get_from_cache('TablesSettingsYaml');
16 $yaml = eval { YAML::LoadFile($yml_path) };
17 warn "ERROR: the yaml file for DT::TablesSettings is not correctly formatted: $@"
19 $cache->set_in_cache( 'TablesSettingsYaml', $yaml, { expiry => 3600 } );
26 my ( $module, $page, $tablename ) = @_;
30 my $schema = Koha::Database->new->schema;
32 my $rs = $schema->resultset('ColumnsSetting')->search(
36 tablename => $tablename,
40 while ( my $c = $rs->next ) {
41 my $column = first { $c->columnname eq $_->{columnname} }
42 @{ $list->{modules}{ $c->module }{ $c->page }{ $c->tablename }{ columns } };
43 $column->{is_hidden} = $c->is_hidden;
44 $column->{cannot_be_toggled} = $c->cannot_be_toggled;
47 my $columns = $list->{modules}{$module}{$page}{$tablename}{columns} || [];
49 # Assign default value if does not exist
52 cannot_be_toggled => exists $_->{cannot_be_toggled} ? $_->{cannot_be_toggled} : 0,
53 cannot_be_modified => exists $_->{cannot_be_modified} ? $_->{cannot_be_modified} : 0,
54 is_hidden => exists $_->{is_hidden} ? $_->{is_hidden} : 0,
55 columnname => $_->{columnname},
62 =head3 get_table_settings
64 my $settings = C4::Utils::DataTables::TablesSettings::get_table_settings(
68 tablename => $tablename,
72 Returns the settings for a given table.
74 The settings are default_display_length and default_sort_order.
78 sub get_table_settings {
79 my ( $module, $page, $tablename ) = @_;
82 my $schema = Koha::Database->new->schema;
84 my $rs = $schema->resultset('TablesSetting')->search(
88 tablename => $tablename,
91 return $rs ? $rs : $list->{modules}{$module}{$page}{$tablename};
97 my $schema = Koha::Database->new->schema;
98 my $rs = $schema->resultset('ColumnsSetting')->search;
100 while ( my $c = $rs->next ) {
101 my $column = first { $c->columnname eq $_->{columnname} }
102 @{ $list->{modules}{ $c->module }{ $c->page }{ $c->tablename }{columns} };
103 $column->{is_hidden} = $c->is_hidden;
104 $column->{cannot_be_toggled} = $c->cannot_be_toggled;
105 $column->{cannot_be_modified} = 0
106 unless exists $column->{cannot_be_modified};
109 return $list->{modules};
114 my $columns = $params->{columns};
116 my $schema = Koha::Database->new->schema;
118 for my $c (@$columns) {
119 $c->{is_hidden} //= 0;
120 $c->{cannot_be_toggled} //= 0;
122 $schema->resultset('ColumnsSetting')->update_or_create(
124 module => $c->{module},
126 tablename => $c->{tablename},
127 columnname => $c->{columnname},
128 is_hidden => $c->{is_hidden},
129 cannot_be_toggled => $c->{cannot_be_toggled},
135 =head3 update_table_settings
137 C4::Utils::DataTables::TablesSettings::update_table_settings(
141 tablename => $tablename,
142 default_display_length => $default_display_length,
143 default_sort_order => $default_sort_order
147 Will update the default_display_length and default_sort_order for the given table.
151 sub update_table_settings {
153 my $module = $params->{module};
154 my $page = $params->{page};
155 my $tablename = $params->{tablename};
156 my $default_display_length = $params->{default_display_length};
157 my $default_sort_order = $params->{default_sort_order};
159 my $schema = Koha::Database->new->schema;
161 $schema->resultset('TablesSetting')->update_or_create(
165 tablename => $tablename,
166 default_display_length => $default_display_length,
167 default_sort_order => $default_sort_order,