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.
128 lines
3.3 KiB
Perl
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;
|