Fix a bug where ratings were allowed to be set with less than 10 votes. Fixes bug #11294

This helps fix people trying to game the system.
This commit is contained in:
Colin Kuskie 2009-12-08 14:39:24 -08:00
parent 5153d82327
commit d1e6f30493
5 changed files with 253 additions and 94 deletions

View file

@ -608,9 +608,11 @@ sub setRatings {
my $mean = $sum / ($count || 1);
my $median = $db->quickScalar("select rating $sql order by rating limit $half,1",[$self->getId,$category]);
$db->write("replace into MatrixListing_ratingSummary
(listingId, category, meanValue, medianValue, countValue, assetId)
values (?,?,?,?,?,?)",[$self->getId,$category,$mean,$median,$count,$matrixId]);
if ($count >= 10) {
$db->write("replace into MatrixListing_ratingSummary
(listingId, category, meanValue, medianValue, countValue, assetId)
values (?,?,?,?,?,?)",[$self->getId,$category,$mean,$median,$count,$matrixId]);
}
}
return undef;
}

View file

@ -631,16 +631,11 @@ sub view {
$style->setLink($url->extras('yui/build/datatable/assets/skins/sam/datatable.css'),
{type =>'text/css', rel=>'stylesheet'});
$style->setScript($url->extras('yui/build/utilities/utilities.js'),
{type => 'text/javascript'});
$style->setScript($url->extras('yui/build/json/json-min.js'),
{type => 'text/javascript'});
$style->setScript($url->extras('yui/build/datasource/datasource-min.js'),
{type => 'text/javascript'});
$style->setScript($url->extras('yui/build/datatable/datatable-min.js'),
{type => 'text/javascript'});
$style->setScript($url->extras('yui/build/button/button-min.js'),
{type => 'text/javascript'});
$style->setScript($url->extras('yui/build/utilities/utilities.js'), {type => 'text/javascript'});
$style->setScript($url->extras('yui/build/json/json-min.js'), {type => 'text/javascript'});
$style->setScript($url->extras('yui/build/datasource/datasource-min.js'), {type => 'text/javascript'});
$style->setScript($url->extras('yui/build/datatable/datatable-min.js'), {type => 'text/javascript'});
$style->setScript($url->extras('yui/build/button/button-min.js'), {type => 'text/javascript'});
my ($varStatistics,$varStatisticsEncoded);
my $var = $self->get;
@ -763,7 +758,7 @@ sub view {
push (@{ $varStatistics->{last_updated_loop} }, {
url => $lastUpdatedListing->getUrl,
name => $lastUpdatedListing->get('title'),
lastUpdated => $self->session->datetime->epochToHuman($lastUpdatedListing->get('lastUpdated'),"%z")
lastUpdated => $session->datetime->epochToHuman($lastUpdatedListing->get('lastUpdated'),"%z")
});
}
$varStatistics->{lastUpdated_sortButton} = "<span id='sortByUpdated'><button type='button'>"
@ -806,21 +801,21 @@ sub view {
$data = $db->quickHashRef($sql." desc limit 1",[$category,$self->getId]);
push(@{ $varStatistics->{best_rating_loop} },{
url=>'/'.$data->{url},
category=>$category,
name=>$data->{productName},
mean=>$data->{meanValue},
median=>$data->{medianValue},
count=>$data->{countValue}
url => $session->url->gateway($data->{url}),
category => $category,
name => $data->{productName},
mean => 0+$data->{meanValue},
median => 0+$data->{medianValue},
count => 0+$data->{countValue}
});
$data = $db->quickHashRef($sql." asc limit 1",[$category,$self->getId]);
push(@{ $varStatistics->{worst_rating_loop} },{
url=>'/'.$data->{url},
category=>$category,
name=>$data->{productName},
mean=>$data->{meanValue},
median=>$data->{medianValue},
count=>$data->{countValue}
url => $session->url->gateway($data->{url}),
category => $category,
name => $data->{productName},
mean => 0+$data->{meanValue},
median => 0+$data->{medianValue},
count => 0+$data->{countValue}
});
}