#!/usr/bin/perl use strict; use lib '/home/sites/home/web/perl/admin'; use Links qw/$CFG $IN $DB/; Links::init('/home/sites/home/web/perl/admin'); Links::init_user(); use Links::SiteHTML; use GT::SQL::Condition; use GT::Dumper; &main; sub main{ print "Starting Update...\n"; my $linksdb = $DB->table('Links'); my $reviewsdb = $DB->table('Reviews','Links'); my $sth = $linksdb->select(['ID']); my $m=10; # Minimum number of votes to be listed. my $total=0; my $i=0; while (my $id=$sth->fetchrow_array){ $reviewsdb->select_options ("GROUP BY Review_LinkID", "ORDER BY revrating DESC"); my $reviewsrating = $reviewsdb->select(['AVG(Review_Rating) as revrating'],{Review_Validated=>'Yes',Review_LinkID=>$id})->fetchrow_array||'0'; $total+=$reviewsrating; $i++; } my $C=$total/$i; $sth = $linksdb->select(['ID']); while (my $id)=$sth->fetchrow_array){ $reviewsdb->select_options ("GROUP BY Review_LinkID", "ORDER BY revrating DESC"); my $R = $reviewsdb->select(['AVG(Review_Rating) as revrating'],{Review_Validated=>'Yes',Review_LinkID=>$id})->fetchrow_array||'0'; my $v=$reviewsdb->count({Review_LinkID=>$id}); my $newrating= $R*$v/($v+$m) + $C*$m/($v+$m); $linksdb->update({New_Rating=>$newrating},{ID=>$id}); } print "Database Updated"; } 1;