From: Michael Tremer Date: Mon, 1 Dec 2014 20:01:55 +0000 (+0100) Subject: freifunk: Load networks as separate files X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=d5927389e0a81b5fd2bfc81ce6e331c07a2fa5b6;p=people%2Fms%2Fipfire-2.x.git freifunk: Load networks as separate files --- diff --git a/html/cgi-bin/freifunk.cgi b/html/cgi-bin/freifunk.cgi index 36acaeea82..e60d46c13d 100755 --- a/html/cgi-bin/freifunk.cgi +++ b/html/cgi-bin/freifunk.cgi @@ -31,7 +31,7 @@ require "${General::swroot}/lang.pl"; require "${General::swroot}/header.pl"; my $FASTD_CONFIG = "${General::swroot}/freifunk/fastd.conf"; -my $NETWORKS_LIST = "${General::swroot}/freifunk/networks.json"; +my $NETWORKS_DIR = "${General::swroot}/freifunk/networks"; #workaround to suppress a warning when a variable is used only once my @dummy = ( ${Header::colouryellow} ); @@ -322,23 +322,50 @@ sub BatmanAdvVersion() { } } +sub LoadNetworks() { + opendir (DIR, $NETWORKS_DIR) or die $!; + + my @networks = (); + while (my $filename = readdir(DIR)) { + my $network = &LoadNetwork("$NETWORKS_DIR/$filename"); + + if (defined($network)) { + push(@networks, $network); + } + } + + closedir(DIR); + + return @networks; +} + +sub LoadNetwork() { + my $file = shift; + + if (-e $file) { + return JSON::Parse::json_file_to_perl($file); + } + + return undef; +} + sub GetNetworkList() { - my $list = JSON::Parse::json_file_to_perl($NETWORKS_LIST); + my @networks = &LoadNetworks(); my @ret = (); - foreach my $network (@$list) { + foreach my $network (@networks) { push(@ret, [$network->{'id'}, $network->{'name'}]); } - return sort { $a->{1} cmp $b->{1} } @ret; + return sort { $a{1} cmp $b{1} } @ret; } sub GetNetwork($) { my $id = shift; - my $list = JSON::Parse::json_file_to_perl($NETWORKS_LIST); + my @networks = &LoadNetworks(); - foreach my $network (@$list) { + foreach my $network (@networks) { return $network if ($network->{'id'} eq $id); }