X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=www%2Frating.pl;h=30951c4735c6848fe2b3b88df5b267da62cbb1c4;hb=51ea31c1dc6c87693c20bcdd2b1147359de926e4;hp=89c75b96e2ee89a6e64f862fd61bc8757ce5c096;hpb=beccc37c94398d34d002a6d9a8a2dde24e8b17f6;p=wloh
diff --git a/www/rating.pl b/www/rating.pl
index 89c75b9..30951c4 100755
--- a/www/rating.pl
+++ b/www/rating.pl
@@ -10,8 +10,9 @@ use POSIX;
use HTML::Entities;
use utf8;
use locale;
-require '../config.pm';
-require '../common.pm';
+use lib qw(../include);
+require 'config.pm';
+require 'common.pm';
my $dbh = DBI->connect($config::local_connstr, $config::local_username, $config::local_password)
or die "connect: " . $DBI::errstr;
@@ -20,132 +21,92 @@ $dbh->{RaiseError} = 1;
binmode STDOUT, ':utf8';
-# Find auxillary parameters.
-my %params = ();
-my $q = $dbh->prepare('SELECT * FROM ratings WHERE id < 0');
-$q->execute;
+my $cgi = CGI->new;
+my $locale = wloh_common::get_locale($cgi);
+
+my $aux_parms = wloh_common::get_auxillary_parameters($dbh, $locale);
+
+wloh_common::set_locale($locale);
+
+my $season = wloh_common::get_max_season($dbh, $locale);
+
+# Pick up all the subdivisions' ratings.
+my %subdivision_ratings = ();
+my $q = $dbh->prepare('SELECT divisjon, avdeling, serie_id, AVG(rating) AS avg_rating FROM ratings NATURAL JOIN siste_divisjon NATURAL JOIN spiller_kultur WHERE kultur=? AND sesong=? AND NOT jukser GROUP BY divisjon, avdeling, serie_id ORDER BY divisjon, avdeling');
+$q->execute($locale, $season);
+
while (my $ref = $q->fetchrow_hashref) {
- $params{$ref->{'id'}} = $ref->{'rating'};
+ my $division = $ref->{'divisjon'};
+ my $rating = $ref->{'avg_rating'};
+ my $id = $ref->{'serie_id'};
+
+ push @{$subdivision_ratings{$division}}, [ $id, $rating ];
}
-my $match_stddev = $params{-2} * sqrt(2.0);
-
-print CGI->header(-type=>'text/html; charset=utf-8', -expires=>'+5m');
-POSIX::setlocale(&POSIX::LC_ALL, 'nb_NO.UTF-8');
-
-printf <<"EOF", $params{-3}, $match_stddev;
-
-
-
-
- WLoH-rating
-
-
-
-
WLoH-rating
-
-
Dette er et hobbyprosjekt fra tredjepart, og ikke en offisiell del av
- Wordfeud Leage of Honour.
-
-
Ratingen er dog basert på spilledata fra WLoH (takk til Lobotommy
- for tilgang!), og oppdateres
- hver hele time. Den er fullstendig uoffisiell, og har ingen innflytelse
- på WLoH, men brukes for å estimere vinnersannsynligheter i
- sannsynlighetsberegningen.
-
-
Modellen kan endre seg når som helst når jeg føler for det :-)
- Ikke ta ratingen alt for alvorlig, selv om den er basert på
- relativt fornuftige matematiske modeller. Husk at all statistikk
- sier mer om fortiden enn om framtiden.
-
-
Modellparametre
-
-
For de som vet litt om slikt. Det finnes også en lengre, mer detaljert
- forklaring beregnet på ikke-matematikere.
Rimelighetfunksjon, prior: Normalfordeling med µ=1500, σ=%.1f (est.)
-
Rimelighetfunksjon, per kamp: Normalfordeling med µ=(score1 - score2), σ=%.1f (est.)
-
Vekting: Inneværende sesong samt de tre siste vektes fullt ut
- (likt med prior). Deretter eksponentielt synkende vekting, med
- halveringstid på tre sesonger. Spill som er registrert med
- 150-0, 0-150 eller 150-150 ignoreres.
-
-
-
Divisjonsoversikt
-
-
-
-
Div.
-
Snitt
-
Std.avvik
-
-EOF
-
-$q = $dbh->prepare('SELECT divisjon,AVG(rating) AS avg_rating,STDDEV(rating) AS stddev_rating FROM ratings NATURAL JOIN siste_divisjon GROUP BY divisjon ORDER BY divisjon');
-$q->execute;
+
+$q = $dbh->prepare('SELECT divisjon,AVG(rating) AS avg_rating,STDDEV(rating) AS stddev_rating FROM ratings NATURAL JOIN siste_divisjon NATURAL JOIN spiller_kultur WHERE kultur=? AND sesong=? AND NOT jukser GROUP BY divisjon ORDER BY divisjon');
+$q->execute($locale, $season);
+
+my @divisions = ();
my $i = 0;
while (my $ref = $q->fetchrow_hashref) {
- if (++$i % 2 == 0) {
- print "