Я пытаюсь написать кусок кода, который проверяет статистику пользователей, будь то их очки, rank или num_friends, и, в свою очередь, награждает их значком, подобным используемому в SO. Система настроена таким образом, что когда пользователь выполняет задание (голосование, комментарий и т. Д.), Его user_id записывается и ставится в очередь для оценки через 5 минут с помощью задания cron. Это самый эффективный способ сделать это? Я видел другой пост о значках, но не уверен, что этот метод был выбран в качестве предпочтительного.
Другой вопрос, который у меня есть, касается проверки этих переменных (points, rank, num_friends) у пользователя. У меня есть несколько значков, и я хочу разрешить администраторам добавлять свои собственные, где они выбирают переменную, оператор (==,> = и т. Д.) И значение, которое оно установило. Как я могу оценить это в условном утверждении IF? Я попытался использовать SWITCH для операторов, но не могу правильно оценить переменные, например:
function checkbadges($userid,$points,$rank,$friends){
global $database;
$q = $database->db_query("SELECT * FROM badges");
while($bq = $database->db_fetch_assoc($q)) {
switch($bq[badge_sign]) {
case "1":
if($bq[badge_var] == $bq[badge_value])
givebadge($userid, $bq[badge_id]);
break;
case "2":
if($bq[badge_var] >= $bq[badge_value]))
givebadge($userid, $bq[badge_id]);
break;
case "3":
if($bq[badge_var] <= $bq[badge_value]))
givebadge($userid, $bq[badge_id]);
break;
case "4":
if($bq[badge_var] != $bq[badge_value]))
givebadge($userid, $bq[badge_id]);
break;
}
}
}
Я думаю, что должен использовать eval (), но я не уверен, как, любая помощь будет признательна!