]> git.sesse.net Git - wloh/blobdiff - include/common.pm
Convert rating.pl to XML::Template. It is dog-slow, but much cleaner.
[wloh] / include / common.pm
diff --git a/include/common.pm b/include/common.pm
new file mode 100644 (file)
index 0000000..6ad6ae4
--- /dev/null
@@ -0,0 +1,116 @@
+use strict;
+use warnings;
+use POSIX;
+use XML::Template;
+
+package wloh_common;
+
+sub get_max_season {
+       my ($dbh, $locale) = @_;
+       my $ref = $dbh->selectrow_hashref('SELECT MAX(sesong) AS max_sesong FROM fotballserier se JOIN fotballspraak sp ON se.spraak=sp.id WHERE kultur=?',
+               undef, $locale);
+       return $ref->{'max_sesong'};
+}
+
+sub get_last_sync {
+       my $dbh = shift;
+       my $ref = $dbh->selectrow_hashref('SELECT EXTRACT(EPOCH FROM last_sync) AS last_sync FROM last_sync');
+       if (!defined($ref)) {
+               return "(ukjent)";
+       } else {
+               return POSIX::strftime("%Y-%m-%d %H:%M %Z", localtime($ref->{'last_sync'}));
+       }
+}
+
+sub output_last_sync {
+       my $dbh = shift;
+       my $ts = get_last_sync($dbh);
+       print "    <p class=\"lastsync\">Databasen ble sist synkronisert $ts.</p>\n";
+}
+
+sub get_locale {
+       my $cgi = shift;
+       my $url = $cgi->url(-absolute => 1);
+       $url =~ m#^/([a-z][a-z]-[A-Z][A-Z])/# or die "Invalid locale!";
+       return $1;
+}
+
+sub get_auxillary_parameters {
+       my ($dbh, $locale) = @_;
+
+       my $q = $dbh->prepare('SELECT * FROM aux_params WHERE kultur=?');
+       $q->execute($locale);
+
+       my $aux_parms = {};
+       while (my $ref = $q->fetchrow_hashref) {
+               $aux_parms->{$ref->{'id'}} = $ref->{'value'};
+       }
+       return $aux_parms;
+}
+
+sub get_navbar {
+       my ($cgi, $dbh, $locale) = @_;
+       my $url = $cgi->url(-relative => 1);
+
+       print "<p style=\"font-size: smaller;\">";
+
+       my $q = $dbh->prepare('SELECT spraak, kultur FROM fotballspraak WHERE nyestesesong <> -1 ORDER BY id');
+       $q->execute;
+
+       my @languages = ();
+
+       my $first = 1;
+       while (my $ref = $q->fetchrow_hashref) {
+               my %lang = ();
+               if ($first) {
+                       $lang{'separator'} = '';
+               }
+               $first = 0;
+
+               if ($ref->{'kultur'} eq $locale) {
+                       $lang{'lang-with-link'} = '';
+                       $lang{'lang-no-link'} = $ref->{'spraak'};
+               } else {
+                       $lang{'a'} = $ref->{'spraak'};
+                       $lang{'a/href'} = sprintf "/%s/%s", $ref->{'kultur'}, $url;
+                       $lang{'lang-no-link'} = '';
+               }
+               push @languages, \%lang;
+       }
+
+       return \@languages;
+}
+
+sub print_navbar {
+       my ($cgi, $dbh, $locale) = @_;
+       my $url = $cgi->url(-relative => 1);
+
+       print "<p style=\"font-size: smaller;\">";
+
+       my $q = $dbh->prepare('SELECT spraak, kultur FROM fotballspraak WHERE nyestesesong <> -1 ORDER BY id');
+       $q->execute;
+
+       my $first = 1;
+       while (my $ref = $q->fetchrow_hashref) {
+               if (!$first) {
+                       print " :: ";
+               }
+               $first = 0;
+
+               if ($ref->{'kultur'} eq $locale) {
+                       printf "%s ", $ref->{'spraak'};
+               } else {
+                       printf "<a href=\"/%s/%s\">%s</a> ", $ref->{'kultur'}, $url, $ref->{'spraak'};
+               }
+       }
+       print "</p>\n";
+}
+
+sub process_template {
+       my ($filename, $parms) = @_;
+
+       my $doc = XML::Template::process_file('../templates/' . $filename, $parms);
+       print $doc->toString;
+}
+
+1;