summaryrefslogtreecommitdiff
path: root/lib/Travelynx
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Travelynx')
-rw-r--r--lib/Travelynx/Controller/Account.pm9
-rwxr-xr-xlib/Travelynx/Controller/Traveling.pm34
2 files changed, 41 insertions, 2 deletions
diff --git a/lib/Travelynx/Controller/Account.pm b/lib/Travelynx/Controller/Account.pm
index 10200a6..c68a22c 100644
--- a/lib/Travelynx/Controller/Account.pm
+++ b/lib/Travelynx/Controller/Account.pm
@@ -261,6 +261,13 @@ sub privacy {
$public_level &= ~0x30;
}
+ if ( $self->param('history_age') eq 'infinite' ) {
+ $public_level |= 0x40;
+ }
+ else {
+ $public_level &= ~0x40;
+ }
+
$self->users->set_privacy(
uid => $user->{id},
level => $public_level
@@ -281,6 +288,8 @@ sub privacy {
: $public_level & 0x20 ? 'extern'
: 'private'
);
+ $self->param(
+ history_age => $public_level & 0x40 ? 'infinite' : 'month' );
$self->render( 'privacy', name => $user->{name} );
}
}
diff --git a/lib/Travelynx/Controller/Traveling.pm b/lib/Travelynx/Controller/Traveling.pm
index 33b3118..24edaa3 100755
--- a/lib/Travelynx/Controller/Traveling.pm
+++ b/lib/Travelynx/Controller/Traveling.pm
@@ -160,12 +160,32 @@ sub public_profile {
)
{
my $status = $self->get_user_status( $user->{id} );
+ my @journeys;
+ if ( $user->{public_level} & 0x40 ) {
+ @journeys = $self->journeys->get(
+ uid => $user->{id},
+ limit => 10,
+ with_datetime => 1
+ );
+ }
+ else {
+ my $now = DateTime->now( time_zone => 'Europe/Berlin' );
+ my $month_ago = $now->clone->subtract( weeks => 4 );
+ @journeys = $self->journeys->get(
+ uid => $user->{id},
+ limit => 10,
+ with_datetime => 1,
+ after => $month_ago,
+ before => $now
+ );
+ }
$self->render(
'profile',
name => $name,
uid => $user->{id},
public_level => $user->{public_level},
journey => $status,
+ journeys => [@journeys],
version => $self->app->config->{version} // 'UNKNOWN',
);
}
@@ -207,12 +227,22 @@ sub public_journey_details {
with_polyline => 1,
);
+ if ( not( $user->{public_level} & 0x40 ) ) {
+ my $month_ago = DateTime->now( time_zone => 'Europe/Berlin' )
+ ->subtract( weeks => 4 )->epoch;
+ if ( $journey and $journey->{rt_dep_ts} < $month_ago ) {
+ $journey = undef;
+ }
+ }
+
if ($journey) {
my $map_data = $self->journeys_to_map_data(
journeys => [$journey],
include_manual => 1,
);
- if ( $journey->{user_data}{comment} ) {
+ if ( $journey->{user_data}{comment}
+ and not $user->{public_level} & 0x04 )
+ {
delete $journey->{user_data}{comment};
}
$self->render(
@@ -226,7 +256,7 @@ sub public_journey_details {
);
}
else {
- $self->render( 'not_found', );
+ $self->render('not_found');
}
}
else {