Skip to content

Commit 003428c

Browse files
committed
Access settings for people and topic channels.
1 parent 1181772 commit 003428c

File tree

2 files changed

+78
-0
lines changed

2 files changed

+78
-0
lines changed

Database/lib/OpenNewsWire/DB/Result/Person.pm

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -212,5 +212,44 @@ __PACKAGE__->has_many(
212212
# Created by DBIx::Class::Schema::Loader v0.07049 @ 2021-09-08 14:30:18
213213
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:irY/GBQ/r8VIJXqXiJpL2Q
214214

215+
sub setting {
216+
my ( $self, $setting, $value ) = @_;
217+
218+
if ( defined $value ) {
219+
my $rs = $self->find_or_new_related( 'person_settings', { name => $setting } );
220+
$rs->value( ref $value ? $value : { value => $value } );
221+
222+
$rs->update if $rs->in_storage;
223+
$rs->insert unless $rs->in_storage;
224+
225+
return $value;
226+
} else {
227+
my $result = $self->find_related('person_settings', { name => $setting });
228+
return undef unless $result;
229+
return $self->_get_setting_value($result);
230+
}
231+
}
232+
233+
sub _get_setting_value {
234+
my ( $self, $setting ) = @_;
235+
236+
if ( ref $setting->value eq 'HASH' and keys %{$setting->value} == 1 and exists $setting->value->{value} ) {
237+
return $setting->value->{value};
238+
}
239+
240+
return $setting->value;
241+
}
242+
243+
sub get_settings {
244+
my ( $self ) = @_;
245+
246+
my $return = {};
247+
248+
foreach my $setting ( $self->search_related( 'person_settings', {} )->all ) {
249+
$return->{${\($setting->name)}} = $self->_get_setting_value($setting);
250+
}
251+
252+
return $return;
253+
}
215254

216255
1;

Database/lib/OpenNewsWire/DB/Result/TopicChannel.pm

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,5 +154,44 @@ __PACKAGE__->has_many(
154154
# Created by DBIx::Class::Schema::Loader v0.07049 @ 2021-09-08 14:30:18
155155
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:RvVaTUvL9AJnqVI5zAYK2Q
156156

157+
sub setting {
158+
my ( $self, $setting, $value ) = @_;
159+
160+
if ( defined $value ) {
161+
my $rs = $self->find_or_new_related( 'topic_channel_settings', { name => $setting } );
162+
$rs->value( ref $value ? $value : { value => $value } );
163+
164+
$rs->update if $rs->in_storage;
165+
$rs->insert unless $rs->in_storage;
166+
167+
return $value;
168+
} else {
169+
my $result = $self->find_related('topic_channel_settings', { name => $setting });
170+
return undef unless $result;
171+
return $self->_get_setting_value($result);
172+
}
173+
}
174+
175+
sub _get_setting_value {
176+
my ( $self, $setting ) = @_;
177+
178+
if ( ref $setting->value eq 'HASH' and keys %{$setting->value} == 1 and exists $setting->value->{value} ) {
179+
return $setting->value->{value};
180+
}
181+
182+
return $setting->value;
183+
}
184+
185+
sub get_settings {
186+
my ( $self ) = @_;
187+
188+
my $return = {};
189+
190+
foreach my $setting ( $self->search_related( 'topic_channel_settings', {} )->all ) {
191+
$return->{${\($setting->name)}} = $self->_get_setting_value($setting);
192+
}
193+
194+
return $return;
195+
}
157196

158197
1;

0 commit comments

Comments
 (0)