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.
This commit is contained in:
127
lib/calcms/user_selected_events.pm
Normal file
127
lib/calcms/user_selected_events.pm
Normal file
@@ -0,0 +1,127 @@
|
||||
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;
|
||||
Reference in New Issue
Block a user