Files
racalmas/lib/calcms/user_selected_events.pm
Milan ef84ca07a3 copying events: save user selection
On copying events from another studio selection will be saved.
The next time one wants to copy saved presets are preselected.
This simplifies to frequently rebroadcast shows from another project.
2021-04-11 13:10:42 +02:00

128 lines
3.3 KiB
Perl

package user_selected_events;
use strict;
use warnings;
no warnings 'redefine';
use Data::Dumper;
# table: calcms_user_selected_events
# columns: user, project_id, studio_id, series_id, <- selection
# project_studio_filter, series_filter <- optional filter params
# selected_project, selected_studio, selected_series, selected_event <-result
sub debug;
sub get_columns($) {
my $config = shift;
my $dbh = db::connect($config);
return db::get_columns_hash( $dbh, 'calcms_user_selected_events' );
}
sub get ($$) {
my $config = shift;
my $condition = shift;
my @conditions = ();
my @bind_values = ();
return unless defined $condition->{user};
return unless defined $condition->{project_id};
return unless defined $condition->{studio_id};
return unless defined $condition->{series_id};
for my $field ('user', 'project_id', 'studio_id', 'series_id',
'filter_project_studio', 'filter_series'
){
if ( ( defined $condition->{$field} ) && ( $condition->{$field} ne '' ) ) {
push @conditions, $field.'=?';
push @bind_values, $condition->{$field};
}
}
my $conditions = '';
$conditions = " where " . join( " and ", @conditions ) if scalar(@conditions) > 0;
my $query = qq{
select *
from calcms_user_selected_events
$conditions
};
my $dbh = db::connect($config);
my $entries = db::get( $dbh, $query, \@bind_values );
return $entries->[0] || undef;
}
sub insert ($$) {
my $config = shift;
my $entry = shift;
return unless defined $entry->{user};
return unless defined $entry->{project_id};
return unless defined $entry->{studio_id};
return unless defined $entry->{series_id};
return unless defined $entry->{selected_event};
my $dbh = db::connect($config);
print STDERR "insert".Dumper($entry );
return db::insert( $dbh, 'calcms_user_selected_events', $entry );
}
sub update($$) {
my $config = shift;
my $entry = shift;
my $fields = [
'user', 'project_id', 'studio_id', 'series_id',
'filter_project_studio', 'filter_series'
];
for (@$fields){
return unless defined $entry->{$_}
};
my @keys = sort keys %$entry;
my $values = join( ",", map { $_ . '=?' } @keys );
my @bind_values = map { $entry->{$_} } ( @keys, @$fields );
my $conditions = join (' and ', map { $_.'=?' } @$fields );
my $query = qq{
update calcms_user_selected_events
set $values
where $conditions
};
print STDERR "update".Dumper($query ).Dumper(\@bind_values);
my $dbh = db::connect($config);
return db::put( $dbh, $query, \@bind_values );
}
sub delete ($$) {
my $config = shift;
my $entry = shift;
return unless defined $entry->{user};
return unless defined $entry->{project_id};
return unless defined $entry->{studio_id};
return unless defined $entry->{series_id};
my $query = qq{
delete
from calcms_user_selected_events
where user=? and project_id=? and studio_id=? and series_id=?
};
my $bind_values = [ $entry->{user}, $entry->{project_id}, $entry->{studio_id}, $entry->{series_id} ];
my $dbh = db::connect($config);
return db::put( $dbh, $query, $bind_values );
}
sub error ($) {
my $msg = shift;
print "ERROR: $msg<br/>\n";
}
#do not delete last line!
1;