Lines 98-122
use Carp;
Link Here
|
98 |
|
98 |
|
99 |
use base qw(DBIx::Class); |
99 |
use base qw(DBIx::Class); |
100 |
|
100 |
|
|
|
101 |
=head2 localization_add_relationships |
102 |
|
103 |
Add relationships to the localization table |
104 |
|
105 |
=cut |
106 |
|
101 |
sub localization_add_relationships { |
107 |
sub localization_add_relationships { |
102 |
my ($class, $rel_name, $fk_column, $pk_column, @properties) = @_; |
108 |
my ($class, $pk_column, @properties) = @_; |
103 |
|
109 |
|
104 |
my $rel_info = $class->relationship_info($rel_name); |
110 |
my $rel_class = 'Koha::Schema::Result::Localization'; |
105 |
unless ($rel_info) { |
111 |
my $source_name = $class =~ s/.*:://r; |
106 |
confess "Unknown relation '$rel_name'"; |
|
|
107 |
} |
108 |
|
112 |
|
109 |
$class->has_many( |
113 |
$class->has_many( |
110 |
'localizations', |
114 |
'localizations', |
111 |
$rel_info->{class}, |
115 |
$rel_class, |
112 |
{ "foreign.$fk_column" => "self.$pk_column" }, |
116 |
sub { |
113 |
{ cascade_copy => 0, cascade_delete => 0, cascade_update => 0 }, |
117 |
my ($args) = @_; |
|
|
118 |
|
119 |
return ( |
120 |
{ |
121 |
"$args->{foreign_alias}.code" => { -ident => "$args->{self_alias}.$pk_column" }, |
122 |
"$args->{foreign_alias}.entity" => $source_name, |
123 |
}, |
124 |
!$args->{self_result_object} ? () : { |
125 |
"$args->{foreign_alias}.code" => $args->{self_result_object}->get_column($pk_column), |
126 |
"$args->{foreign_alias}.entity" => $source_name, |
127 |
}, |
128 |
); |
129 |
}, |
130 |
{ cascade_copy => 0, cascade_delete => 1, cascade_update => 0 }, |
114 |
); |
131 |
); |
115 |
|
132 |
|
116 |
foreach my $property (@properties) { |
133 |
foreach my $property (@properties) { |
117 |
$class->might_have( |
134 |
$class->might_have( |
118 |
$property . "_localization", |
135 |
$property . '_localization', |
119 |
$rel_info->{class}, |
136 |
$rel_class, |
120 |
sub { |
137 |
sub { |
121 |
my ($args) = @_; |
138 |
my ($args) = @_; |
122 |
|
139 |
|
Lines 127-144
sub localization_add_relationships {
Link Here
|
127 |
|
144 |
|
128 |
return ( |
145 |
return ( |
129 |
{ |
146 |
{ |
130 |
"$args->{foreign_alias}.$fk_column" => { -ident => "$args->{self_alias}.$pk_column" }, |
147 |
"$args->{foreign_alias}.code" => { -ident => "$args->{self_alias}.$pk_column" }, |
131 |
"$args->{foreign_alias}.property" => $property, |
148 |
"$args->{foreign_alias}.entity" => $source_name, |
132 |
"$args->{foreign_alias}.lang" => $lang, |
149 |
"$args->{foreign_alias}.property" => $property, |
|
|
150 |
"$args->{foreign_alias}.lang" => $lang, |
133 |
}, |
151 |
}, |
134 |
!$args->{self_result_object} ? () : { |
152 |
!$args->{self_result_object} ? () : { |
135 |
"$args->{foreign_alias}.$fk_column" => $args->{self_result_object}->get_column($pk_column), |
153 |
"$args->{foreign_alias}.code" => $args->{self_result_object}->get_column($pk_column), |
136 |
"$args->{foreign_alias}.property" => $property, |
154 |
"$args->{foreign_alias}.entity" => $source_name, |
137 |
"$args->{foreign_alias}.lang" => $lang, |
155 |
"$args->{foreign_alias}.property" => $property, |
|
|
156 |
"$args->{foreign_alias}.lang" => $lang, |
138 |
}, |
157 |
}, |
139 |
!$args->{foreign_values} ? () : { |
|
|
140 |
"$args->{foreign_alias}.$fk_column" => $args->{foreign_values}->{$pk_column}, |
141 |
} |
142 |
); |
158 |
); |
143 |
}, |
159 |
}, |
144 |
{ cascade_copy => 0, cascade_delete => 0, cascade_update => 0 }, |
160 |
{ cascade_copy => 0, cascade_delete => 0, cascade_update => 0 }, |
Lines 146-167
sub localization_add_relationships {
Link Here
|
146 |
|
162 |
|
147 |
$class->has_many( |
163 |
$class->has_many( |
148 |
$property . '_localizations', |
164 |
$property . '_localizations', |
149 |
$rel_info->{class}, |
165 |
$rel_class, |
150 |
sub { |
166 |
sub { |
151 |
my ($args) = @_; |
167 |
my ($args) = @_; |
152 |
|
168 |
|
153 |
return ( |
169 |
return ( |
154 |
{ |
170 |
{ |
155 |
"$args->{foreign_alias}.$fk_column" => { -ident => "$args->{self_alias}.$pk_column" }, |
171 |
"$args->{foreign_alias}.code" => { -ident => "$args->{self_alias}.$pk_column" }, |
156 |
"$args->{foreign_alias}.property" => $property, |
172 |
"$args->{foreign_alias}.entity" => $source_name, |
|
|
173 |
"$args->{foreign_alias}.property" => $property, |
157 |
}, |
174 |
}, |
158 |
!$args->{self_result_object} ? () : { |
175 |
!$args->{self_result_object} ? () : { |
159 |
"$args->{foreign_alias}.$fk_column" => $args->{self_result_object}->get_column($pk_column), |
176 |
"$args->{foreign_alias}.code" => $args->{self_result_object}->get_column($pk_column), |
160 |
"$args->{foreign_alias}.property" => $property, |
177 |
"$args->{foreign_alias}.entity" => $source_name, |
|
|
178 |
"$args->{foreign_alias}.property" => $property, |
161 |
}, |
179 |
}, |
162 |
!$args->{foreign_values} ? () : { |
|
|
163 |
"$args->{foreign_alias}.$fk_column" => $args->{foreign_values}->{$pk_column}, |
164 |
} |
165 |
); |
180 |
); |
166 |
}, |
181 |
}, |
167 |
{ cascade_copy => 0, cascade_delete => 0, cascade_update => 0 }, |
182 |
{ cascade_copy => 0, cascade_delete => 0, cascade_update => 0 }, |
Lines 180-193
sub localization {
Link Here
|
180 |
unless ($localizations_map) { |
195 |
unless ($localizations_map) { |
181 |
$localizations_map = {}; |
196 |
$localizations_map = {}; |
182 |
|
197 |
|
183 |
my $rel_info = $self->relationship_info('localizations'); |
198 |
my $localizations = $result_source->schema->resultset('Localization')->search({ lang => $lang }); |
184 |
my $rel_source = $rel_info->{class} =~ s/.*:://r; |
|
|
185 |
|
186 |
my ($fk_column) = map { s/^foreign\.//r } keys %{ $rel_info->{cond} }; |
187 |
|
188 |
my $localizations = $result_source->schema->resultset($rel_source)->search({ lang => $lang }); |
189 |
while (my $localization = $localizations->next) { |
199 |
while (my $localization = $localizations->next) { |
190 |
my $fk = $localization->get_column($fk_column); |
200 |
my $fk = $localization->get_column('code'); |
191 |
my $localization_key = sprintf('%s:%s', $fk, $localization->property); |
201 |
my $localization_key = sprintf('%s:%s', $fk, $localization->property); |
192 |
$localizations_map->{$localization_key} = $localization->translation; |
202 |
$localizations_map->{$localization_key} = $localization->translation; |
193 |
} |
203 |
} |