summaryrefslogtreecommitdiff
path: root/scripts/cron/updatesort.php
blob: 498eda2741e7b2fce91ea97534bb0a58635a86c6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
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);
	}


?>