diff options
Diffstat (limited to 'lib/Travelynx/Controller/Account.pm')
| -rw-r--r-- | lib/Travelynx/Controller/Account.pm | 43 | 
1 files changed, 43 insertions, 0 deletions
| diff --git a/lib/Travelynx/Controller/Account.pm b/lib/Travelynx/Controller/Account.pm index 033b270..0978c88 100644 --- a/lib/Travelynx/Controller/Account.pm +++ b/lib/Travelynx/Controller/Account.pm @@ -1077,6 +1077,49 @@ sub backend_form {  			$backend->{homepage}    = 'https://www.bahn.de';  			$backend->{recommended} = 1;  		} +		elsif ( $backend->{efa} ) { +			if ( my $s = $self->efa->get_service( $backend->{name} ) ) { +				$type                = 'EFA'; +				$backend->{longname} = $s->{name}; +				$backend->{homepage} = $s->{homepage}; +				$backend->{regions}  = [ map { $place_map{$_} // $_ } +					  @{ $s->{coverage}{regions} // [] } ]; +				$backend->{has_area}     = $s->{coverage}{area} ? 1 : 0; +				$backend->{experimental} = 1; + +				if ( +					    $s->{coverage}{area} +					and $s->{coverage}{area}{type} eq 'Polygon' +					and $self->lonlat_in_polygon( +						$s->{coverage}{area}{coordinates}, +						[ $user_lon, $user_lat ] +					) +				  ) +				{ +					push( @suggested_backends, $backend ); +				} +				elsif ( $s->{coverage}{area} +					and $s->{coverage}{area}{type} eq 'MultiPolygon' ) +				{ +					for my $s_poly ( +						@{ $s->{coverage}{area}{coordinates} // [] } ) +					{ +						if ( +							$self->lonlat_in_polygon( +								$s_poly, [ $user_lon, $user_lat ] +							) +						  ) +						{ +							push( @suggested_backends, $backend ); +							last; +						} +					} +				} +			} +			else { +				$type = undef; +			} +		}  		elsif ( $backend->{hafas} ) {  			# These backends lack a journey endpoint or are no longer | 
