$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; } } }