diff --git a/install/create.sql b/install/create.sql
index 81ab307..e712a3c 100644
--- a/install/create.sql
+++ b/install/create.sql
@@ -1308,3 +1308,30 @@ CREATE TABLE `calcms_user_selected_events` (
ALTER TABLE `calcms`.`calcms_events`
ADD COLUMN `upload_status` VARCHAR(45) NULL DEFAULT NULL AFTER `listen_key`;
+--
+-- Table structure for table `calcms_user_day_start`
+--
+
+DROP TABLE IF EXISTS `calcms_user_day_start`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!50503 SET character_set_client = utf8mb4 */;
+CREATE TABLE `calcms_user_day_start` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `user` varchar(45) NOT NULL,
+ `project_id` int(10) unsigned NOT NULL,
+ `studio_id` int(10) unsigned NOT NULL,
+ `day_start` int(10) unsigned DEFAULT '0',
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `select` (`project_id`,`studio_id`,`user`)
+) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
+
+/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
+/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
+/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
+/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
+/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
+/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
+/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
+
diff --git a/lib/calcms/user_day_start.pm b/lib/calcms/user_day_start.pm
new file mode 100644
index 0000000..34dce6a
--- /dev/null
+++ b/lib/calcms/user_day_start.pm
@@ -0,0 +1,128 @@
+package user_day_start;
+
+use strict;
+use warnings;
+no warnings 'redefine';
+
+use Data::Dumper;
+
+# table: calcms_user_day_start
+# columns: user, project_id, studio_id, series_id, day_start
+
+sub debug;
+
+sub get_columns($) {
+ my $config = shift;
+
+ my $dbh = db::connect($config);
+ return db::get_columns_hash( $dbh, 'calcms_user_day_start' );
+}
+
+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};
+
+ for my $field ('user', 'project_id', 'studio_id'){
+ 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_day_start
+ $conditions
+ };
+
+ my $dbh = db::connect($config);
+ my $entries = db::get( $dbh, $query, \@bind_values );
+ return $entries->[0] || undef;
+}
+
+sub insert_or_update($$){
+ my $config = shift;
+ my $entry = shift;
+ print STDERR Dumper $entry;
+ if ( get($config, $entry) ){
+ update ($config, $entry);
+ } else {
+ insert ($config, $entry);
+ }
+}
+
+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->{day_start};
+
+ my $dbh = db::connect($config);
+ print STDERR "insert".Dumper($entry );
+ return db::insert( $dbh, 'calcms_user_day_start', $entry );
+}
+
+sub update($$) {
+ my $config = shift;
+ my $entry = shift;
+
+ my $fields = [ 'user', 'project_id', 'studio_id' ];
+ 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_day_start
+ 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};
+
+ my $query = qq{
+ delete
+ from calcms_user_day_start
+ where user=? and project_id=? and studio_id=?
+ };
+ my $bind_values = [ $entry->{user}, $entry->{project_id}, $entry->{studio_id} ];
+
+ my $dbh = db::connect($config);
+ return db::put( $dbh, $query, $bind_values );
+}
+
+sub error ($) {
+ my $msg = shift;
+ print "ERROR: $msg
\n";
+}
+
+#do not delete last line!
+1;
diff --git a/website/agenda/planung/calendar.cgi b/website/agenda/planung/calendar.cgi
index 1f3033b..0e00e80 100755
--- a/website/agenda/planung/calendar.cgi
+++ b/website/agenda/planung/calendar.cgi
@@ -34,6 +34,7 @@ use playout();
use user_settings();
use audio_recordings();
use audio();
+use user_day_start();
binmode STDOUT, ":utf8";
@@ -44,6 +45,7 @@ my $config = config::get('../config/config.cgi');
my $debug = $config->{system}->{debug};
my ( $user, $expires ) = auth::get_user( $config, $params, $cgi );
return if ( !defined $user ) || ( $user eq '' );
+$config->{user} = $user;
my $user_presets = uac::get_user_presets(
$config,
@@ -1731,7 +1733,7 @@ sub printToolbar {
# start of day
my $day_start = $params->{day_start} || '';
$toolbar .= qq{
-