package user_settings; use warnings "all"; use strict; use Data::Dumper; use series_dates; # table: calcms_user_settings # columns: user, colors require Exporter; our @ISA = qw(Exporter); our @EXPORT_OK = qw(getColors getColorCss get insert update delete get_columns defaultColors); our %EXPORT_TAGS = ( 'all' => [ @EXPORT_OK ] ); sub debug; our $defaultColors=[ { name => 'color_event', css => '#content .event', color => '#c5e1a5' },{ name => 'color_draft', css => '#content .draft', color => '#eeeeee', },{ name => 'color_schedule', css => '#content .schedule', color => '#dde4e6', },{ name => 'color_published', css => '#content .event.published', color => '#a5d6a7', },{ name => 'color_no_series', css => '#content .event.no_series', color => '#fff59d', },{ name => 'color_marked', css => '#content .event.marked', color => '#81d4fa', },{ name => 'color_event_error', css => '#content.conflicts .event.error', color => '#ffab91', },{ name => 'color_schedule_error', css => '#content.conflicts .schedule.error', color => '#ffcc80' },{ name => 'color_work', css => '#content .work', color => '#b39ddb' },{ name => 'color_playout', css => '#content .play', color => '#90caf9' } ]; sub getColors{ my $config=shift; my $conditions=shift; return unless defined $conditions->{user}; my $user=$conditions->{user}; #get defaultColors my $colors=[]; my $colorMap={}; for my $defaultColor (@$defaultColors){ my $color= { name => $defaultColor->{name}, css => $defaultColor->{css}, color => $defaultColor->{color}, }; push @$colors,$color; $colorMap->{$color->{css}}=$color; } my $settings = user_settings::get($config, {user => $user }); $settings->{colors} |=''; #overwrite colors from user settings for my $line (split(/\n+/, $settings->{colors})){ my ($key,$value)=split(/\=/,$line); $key=~s/^\s+//; $key=~s/\s+$//; $value=~s/^\s+//; $value=~s/\s+$//; $colorMap->{$key}->{color}=$value if (($key ne '')&&($value ne '')&&(defined $colorMap->{$key})); } return $colors; } sub getColorCss{ my $config=shift; my $conditions=shift; return unless defined $conditions->{user}; my $shift=20; my $limit=220; my $colors=getColors($config, $conditions); my $style="\n"; return $style; } sub get_columns{ my $config=shift; my $dbh=db::connect($config); my $cols=db::get_columns($dbh, 'calcms_user_settings'); my $columns={}; for my $col (@$cols){ $columns->{$col}=1; } return $columns; } sub get{ my $config=shift; my $condition=shift; my $dbh=db::connect($config); my @conditions=(); my @bind_values=(); if ((defined $condition->{user}) && ($condition->{user} ne '')){ push @conditions, 'user=?'; push @bind_values, $condition->{user}; } my $conditions=''; $conditions=" where ".join(" and ",@conditions) if (@conditions>0); my $query=qq{ select * from calcms_user_settings $conditions }; #print $query."\n"; #print Dumper(\@bind_values); 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->{colors}); my $dbh=db::connect($config); return db::insert($dbh, 'calcms_user_settings', $entry); } sub update{ my $config=shift; my $entry=shift; return unless(defined $entry->{user}); return unless(defined $entry->{colors}); my $dbh=db::connect($config); my $values =join(",", map {$_.'=?'} (keys %$entry)); my @bind_values =map {$entry->{$_}} (keys %$entry); push @bind_values,$entry->{user}; my $query=qq{ update calcms_user_settings set $values where user=? }; db::put($dbh, $query, \@bind_values); print "done\n"; } sub delete{ my $config=shift; my $entry=shift; return unless(defined $entry->{user}); my $dbh=db::connect($config); my $query=qq{ delete from calcms_user_settings where user=? }; my $bind_values=[$entry->{user}]; #print '
$query'.$query.Dumper($bind_values).'
'; db::put($dbh, $query, $bind_values); } sub error{ my $msg=shift; print "ERROR: $msg
\n"; } #do not delete last line! 1;