X-Git-Url: https://ruin.nu/git/?a=blobdiff_plain;f=lib%2FNDWeb%2FController%2FSettings.pm;h=4a60ebebf53354378a35390568121cc6cafcbb45;hb=7782222a680e2752239bd7f9a853630412d47c74;hp=9277c7fadc2d2519cc82465981d165693907642b;hpb=15e271f8e65bfc35d311f9b9cad581e3a1c70def;p=ndwebbie.git diff --git a/lib/NDWeb/Controller/Settings.pm b/lib/NDWeb/Controller/Settings.pm index 9277c7f..4a60ebe 100644 --- a/lib/NDWeb/Controller/Settings.pm +++ b/lib/NDWeb/Controller/Settings.pm @@ -6,6 +6,8 @@ use parent 'Catalyst::Controller'; use NDWeb::Include; +use DateTime::TimeZone; + =head1 NAME NDWeb::Controller::Settings - Catalyst Controller @@ -37,10 +39,21 @@ sub index :Path :Args(0) { } } $c->stash(stylesheets => \@stylesheets); - $c->stash(birthday => $dbh->selectrow_array(q{ - SELECT birthday FROM users WHERE uid = $1 - },undef,$c->user->id) - ); + + my ($birthday,$timezone) = $dbh->selectrow_array(q{ +SELECT birthday,timezone FROM users WHERE uid = $1 + },undef,$c->user->id); + $c->stash(birthday => $birthday); + + my @timezone = split m{/},$timezone,2; + $c->stash(timezone => \@timezone); + + my @cat = DateTime::TimeZone->categories; + unshift @cat, 'GMT'; + $c->stash(tzcategories => \@cat); + + my @countries = DateTime::TimeZone->names_in_category($timezone[0]); + $c->stash(tzcountries => \@countries); } sub changeStylesheet : Local { @@ -75,6 +88,21 @@ sub changeBirthday : Local { $c->res->redirect($c->uri_for('')); } +sub changeTimezone : Local { + my ( $self, $c ) = @_; + my $dbh = $c->model; + + my $timezone = $c->req->param('timezone'); + my $query = $dbh->prepare(q{UPDATE users SET timezone = $2 WHERE uid = $1}); + eval{ + $dbh->selectrow_array(q{SELECT NOW() AT TIME ZONE $1},undef,$timezone); + $query->execute($c->user->id,$timezone ); + }; + if ($@){ + $c->flash(error => $@); + } + $c->res->redirect($c->uri_for('')); +} sub changePassword : Local { my ( $self, $c ) = @_;