Ejemplo n.º 1
0
$ratingTool = new RatingArticle();
$dateDiff = strtotime('now - 1 month');
$res = $dbr->select(array($ratingTool->getTableName()), array("distinct {$ratingTool->getTablePrefix()}page"), array("{$ratingTool->getTablePrefix()}deleted_when > FROM_UNIXTIME('.{$dbw->addQuotes}({$dateDiff}).')"), 'refreshLowRating.php:newlyDeleted');
$newlyDeletedPages = array();
foreach ($res as $row) {
    $newlyDeletedPages[] = $row->{$ratingTool->getTablePrefix() . 'page'};
}
$notin = join(',', $newlyDeletedPages);
$conditions = array("{$ratingTool->getTablePrefix()}page = page_id", "{$ratingTool->getTablePrefix()}isdeleted" => 0, 'page_is_redirect' => 0);
if (!empty($notin)) {
    $notin = "{$ratingTool->getTablePrefix()}page NOT IN (" . $notin . ")";
    $conditions[] = $notin;
}
$dbw->query("delete from rating_low;", 'refreshLowRatings.php:delete');
$res = $dbr->select(array($ratingTool->getTableName(), 'page'), array("{$ratingTool->getTablePrefix()}page", "AVG({$ratingTool->getTablePrefix()}rating) as R", 'count(*) as C'), $conditions, __FILE__, array('GROUP BY' => "{$ratingTool->getTablePrefix()}page"));
$sqlStart = "INSERT into {$ratingTool->getLowTableName()} ({$ratingTool->getLowTablePrefix()}page, {$ratingTool->getLowTablePrefix()}avg, {$ratingTool->getLowTablePrefix()}count) VALUES ";
$sql = $sqlStart;
$count = 0;
foreach ($res as $row) {
    if ($row->C >= $minvotes && $row->R <= $avg) {
        if ($count % $insertMax != 0) {
            $sql .= ", ";
        }
        $sql .= "('" . $row->{$ratingTool->getTablePrefix() . 'page'} . "', '{$row->R}', '{$row->C}')";
        $count++;
        if ($count % $insertMax == 0) {
            $dbw->query($sql, __FILE__);
            $sql = $sqlStart;
        }
    }
}