summaryrefslogtreecommitdiff
path: root/scripts/cron/updatesort.php
diff options
context:
space:
mode:
authorMichael Tänzer <neo@nhng.de>2012-03-28 23:35:54 +0200
committerMichael Tänzer <neo@nhng.de>2012-03-28 23:35:54 +0200
commit02d307527b6797e8dd6f6117b8ff24707d007137 (patch)
tree8235c0241681f92203cdc51f8b310a7a9f2e6912 /scripts/cron/updatesort.php
parentd4bd109238aec503ad1d8abc1cd12ad8a12bba46 (diff)
parentb9d60cb4824796dc85d60e672d076ae25e534682 (diff)
downloadcacert-devel-02d307527b6797e8dd6f6117b8ff24707d007137.tar.gz
cacert-devel-02d307527b6797e8dd6f6117b8ff24707d007137.tar.xz
cacert-devel-02d307527b6797e8dd6f6117b8ff24707d007137.zip
Merge branch 'release' into bug-1024
Conflicts: includes/lib/account.php Signed-off-by: Michael Tänzer <neo@nhng.de>
Diffstat (limited to 'scripts/cron/updatesort.php')
-rwxr-xr-xscripts/cron/updatesort.php111
1 files changed, 111 insertions, 0 deletions
diff --git a/scripts/cron/updatesort.php b/scripts/cron/updatesort.php
new file mode 100755
index 0000000..498eda2
--- /dev/null
+++ b/scripts/cron/updatesort.php
@@ -0,0 +1,111 @@
+#!/usr/bin/php -q
+<? /*
+ LibreSSL - CAcert web application
+ Copyright (C) 2004-2008 CAcert Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; version 2 of the License.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+*/
+ require_once(dirname(__FILE__).'/../../includes/mysql.php');
+
+
+
+ /* Set assurer flag for accounts who miss it
+
+ See also includes/lib/account.php, function fix_assurer_flag($userID)
+
+ We may have some performance problems here, there are 150k assurances and 220k users
+ in the production database. The exists-clause on cats_passed should be a good filter... */
+
+ /* Synchronisation of assurer flag currently deactivated, see https://bugs.cacert.org/view.php?id=1003
+ and https://bugs.cacert.org/view.php?id=1024 */
+/*
+ $query = "select `n`.`to` as `uid` from `notary` as `n`, `users` as `u` ".
+ " where `n`.`to`=`u`.`id` and `u`.`assurer`<>'1' ".
+ " and (`n`.`expire` > now() OR `n`.`expire` IS NULL) ".
+ " and exists(select 1 from `cats_passed` as `cp`, `cats_variant` as `cv` ".
+ " where `cp`.`variant_id`=`cv`.`id` and `cv`.`type_id` = 1 and `cp`.`user_id`=`n`.`to`)".
+ " group by `n`.`to` having sum(`n`.`points`)>=100";
+
+ $res = mysql_query($query);
+ while($row = mysql_fetch_assoc($res))
+ {
+ $query = "update users set `assurer`='1' where `id`='${row['uid']}'";
+ //echo $query."\n";
+ mysql_query($query);
+ }
+*/
+ /* Remove assurer flag from accounts not eligible.
+
+ Also a bit performance critical, but assurer flag is only set at 5k accounts
+
+ */
+ /* Synchronisation of assurer flag currently deactivated, see https://bugs.cacert.org/view.php?id=1003
+ and https://bugs.cacert.org/view.php?id=1024 */
+/*
+ $query = "select `u`.id as `uid` from `users` as `u` " .
+ " where `u`.`assurer` = '1' ".
+ " and (not exists(select 1 from `cats_passed` as `cp`, `cats_variant` as `cv` ".
+ " where `cp`.`variant_id`=`cv`.`id` and `cv`.`type_id` = 1 and `cp`.`user_id`=`u`.`id`) ".
+ " or (select sum(`n`.`points`) from `notary` as `n` where `n`.`to`=`u`.`id` and (`n`.`expire` > now() OR `n`.`expire` IS NULL)) < 100) ";
+ $res = mysql_query($query);
+ while($row = mysql_fetch_assoc($res))
+ {
+ $query = "update users set `assurer`='0' where `id`='${row['uid']}'";
+ //echo $query."\n";
+ mysql_query($query);
+ }
+*/
+
+ mysql_query("update `locations` set `acount`=0");
+ $query = "SELECT `users`.`locid` AS `locid`, count(*) AS `total` FROM `users`
+ WHERE users.assurer='1' AND `users`.`locid` != 0 and users.listme=1
+ GROUP BY `users`.`locid`";
+ $res = mysql_query($query);
+ while($row = mysql_fetch_assoc($res))
+ {
+ $query = "update `locations` set `acount`='${row['total']}' where `id`='${row['locid']}'";
+ echo $query."\n";
+ mysql_query($query);
+ }
+
+
+ mysql_query("update `regions` set `acount`=0");
+ $query = "SELECT `users`.`regid` AS `regid`, count(*) AS `total` FROM `users`
+ WHERE users.assurer='1' AND `users`.`regid` != 0 and users.listme=1
+ GROUP BY `users`.`regid`";
+ $res = mysql_query($query);
+ while($row = mysql_fetch_assoc($res))
+ {
+ $query = "update `regions` set `acount`='${row['total']}' where `id`='${row['regid']}'";
+ echo $query."\n";
+ mysql_query($query);
+ }
+
+
+
+
+ mysql_query("update `countries` set `acount`=0");
+ $query = "SELECT `users`.`ccid` AS `ccid`, count(*) AS `total` FROM `users`
+ WHERE users.assurer='1' AND `users`.`ccid` != 0 and users.listme=1
+ GROUP BY `users`.`ccid`";
+ $res = mysql_query($query);
+ while($row = mysql_fetch_assoc($res))
+ {
+ $query = "update `countries` set `acount`='${row['total']}' where `id`='${row['ccid']}'";
+ echo $query."\n";
+ mysql_query($query);
+ }
+
+
+?>