Собственно поэтому на этом сайте при голосовании за пост или за комент сайт начинает сильно тупить.
Чтобы не быть голословным, вот функция (выдержка из файла lib_karma.php папки core)
function setUsersRating(){ $inDB = cmsDatabase::getInstance(); $sql = "SELECT id FROM cms_users WHERE is_locked = 0 AND is_deleted = 0"; $res = $inDB->query($sql); while($user = $inDB->fetch_assoc($res)){ $sql = "SELECT SUM( r.points ) AS rating FROM cms_ratings r LEFT JOIN cms_content c ON r.item_id = c.id AND r.target = 'content' LEFT JOIN cms_photo_files f ON r.item_id = f.id AND r.target = 'photo' LEFT JOIN cms_blog_posts p ON r.item_id = p.id AND r.target = 'blogpost' WHERE c.user_id = ".$user['id']." OR f.user_id = ".$user['id']." OR p.user_id = ".$user['id']; $rs = $inDB->query($sql); if ($inDB->num_rows($rs)){ $data = $inDB->fetch_assoc($rs); $rating = $data['rating'] * 5; } else { $rating = 0; } $sql = "SELECT SUM(v.vote) AS votes FROM cms_comments_votes v LEFT JOIN cms_comments c ON v.comment_id = c.id WHERE c.user_id = ".$user['id']." AND v.comment_type = 'com'"; $rs = $inDB->query($sql); if ($inDB->num_rows($rs)){ $data = $inDB->fetch_assoc($rs); $rating += $data['votes'] * 2; } $sql = "UPDATE cms_users SET rating = $rating WHERE id = ".$user['id']; $inDB->query($sql); } }
А также не понятно зачем при голосовании за пост в обычном блоге вызывается функция setClubsRating(); — это файл karma.php папки /core/ajax.
Собственно суть моего поста:
У кого есть знания прошу помочь мне, да и в общем то всем, в пересмотрении указанного алгоритма.
Я конечно сам тоже попробую, но как говорится одна голова хорошо, а целое сообщество лучше.