Fix for bug 942, untested. Compare the changes to function fix_assurer_flag in genera...
authorBernhard Fröhlich <bernhard@cacert.org>
Mon, 9 May 2011 21:35:03 +0000 (23:35 +0200)
committerBernhard Fröhlich <bernhard@cacert.org>
Mon, 9 May 2011 21:35:03 +0000 (23:35 +0200)
scripts/assurer.php
www/cats/cats_import.php

index c649fbf..d85a2a6 100644 (file)
@@ -30,7 +30,7 @@
        $query = "
 select u.email, fname, lname, sum(n.points) from users u, notary n
  where n.to=u.id
-   and not exists(select 1 from cats_passed cp where cp.user_id=u.id)
+   and not EXISTS(SELECT 1 FROM `cats_passed` AS `tp`, `cats_variant` AS `cv` WHERE `tp`.`variant_id` = `cv`.`id` AND `cv`.`type_id` = 1 AND `tp`.`user_id` = `u`.`id`)
    and exists(select 1 from notary n2 where n2.from=u.id and year(n2.`when`)>2007)
    and (select count(*) from notary n3 where n3.from=u.id) > 1
  group by email, fname, lname
index 6d77a75..7662fce 100644 (file)
@@ -154,7 +154,10 @@ if (!$query) {
 }
 
 // Update Assurer-Flag on users table if 100 points. Should the number of points be SUM(points) or SUM(awarded)?
-$query = mysql_query('UPDATE `users` AS `u` SET `assurer` = 1 WHERE `u`.`id` = \''.(int)intval($userID).'\' AND EXISTS(SELECT 1 FROM `cats_passed` AS `tp` WHERE `tp`.`user_id` = `u`.`id`) AND (SELECT SUM(`points`) FROM `notary` AS `n` WHERE `n`.`to` = `u`.`id` AND `expire` < now()) >= 100;'); // Challenge has been passed and non-expired points >= 100
+$query = mysql_query('UPDATE `users` AS `u` SET `assurer` = 1 '.
+                       'WHERE `u`.`id` = \''.(int)intval($userID).'\' '.
+                         'AND EXISTS(SELECT 1 FROM `cats_passed` AS `tp`, `cats_variant` AS `cv` WHERE `tp`.`variant_id` = `cv`.`id` AND `cv`.`type_id` = 1 AND `tp`.`user_id` = `u`.`id`) '.
+                         'AND (SELECT SUM(`points`) FROM `notary` AS `n` WHERE `n`.`to` = `u`.`id` AND `expire` < now()) >= 100;'); // Challenge has been passed and non-expired points >= 100
 if (!$query) {
   echo 'Invalid query'."\r\n";
   trigger_error('Invalid query', E_USER_ERROR);