forked from sc2tvru/chat-sc2tv
/
cron_dump_moderators_details.php
77 lines (64 loc) · 2.46 KB
/
cron_dump_moderators_details.php
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
<?php
require_once 'core.php';
require_once 'utils.php';
DumpModeratorsDetails();
DumpComplainsList();
/**
* получение данных по модераторам и запись их в memfs и memcache
* moderatorsDetails[ uid ] = array( name => '', bansCount => '' )
* содержит uid, имя модератора и, возможно, кол-во банов bansCount,
* которое устанавливается в chat.php при бане
*/
function DumpModeratorsDetails() {
global $memcache;
//$memcache->Delete( MODERATORS_DETAILS_MEMCACHE_KEY );
$moderatorsDetails = $memcache->Get( MODERATORS_DETAILS_MEMCACHE_KEY );
//SaveForDebug( 'cron dump moder details debug, get from memcache: ' . var_export( $moderatorsDetails, true ) );
// попытка считать статистику из файла, если ее нет в memcache
if ( $moderatorsDetails === FALSE ) {
$moderatorsDetails = GetModeratorDetailsFromFile();
}
if ( $moderatorsDetails === FALSE ) {
//получаем из базы
$queryString = '
SELECT users.uid, name
FROM users
INNER JOIN users_roles using(uid)
WHERE rid IN (3,4,5)
AND status = 1
GROUP BY users.uid';
$db = GetDb();
$queryResult = $db->Query( $queryString );
if ( $queryResult === FALSE ) {
SaveForDebug( CHAT_RUNTIME_ERROR . ' cron dump moderrators details 1' );
}
while( $moderatorDetail = $queryResult->fetch_assoc() ) {
$moderatorsDetails[ $moderatorDetail[ 'uid' ] ][ 'name' ] =
$moderatorDetail[ 'name' ];
}
//SaveForDebug( 'moderatorsDetails dump from bd' );
}
$memcache->Set( MODERATORS_DETAILS_MEMCACHE_KEY, $moderatorsDetails,
CHAT_MODERATORS_DETAILS_TTL );
//SaveForDebug( 'send to memcache: ' . var_export( $moderatorsDetails, true ) );
$dataJS = 'var moderatorsDetails = ' . json_encode( $moderatorsDetails );
file_put_contents( CHAT_MODERATORS_DETAILS, $dataJS );
}
/**
* получение списка жалоб на баны из memcache
*/
function DumpComplainsList() {
global $memcache;
$complainsList = $memcache->Get( COMPLAINS_LIST_MEMCACHE_KEY );
$result = array();
if ( $complainsList !== FALSE ) {
foreach( $complainsList as $banKey => $complainsForBan ) {
if ( $complainsForBan[ 'count' ] >= COMPLAINS_NEEDED ) {
$result[ $banKey ]['complains'] = $complainsForBan[ 'complains'];
}
}
}
$dataJS = 'var complainsList = ' . json_encode( $result );
file_put_contents( CHAT_COMPLAINS_FOR_BANS, $dataJS );
}
?>