-
Notifications
You must be signed in to change notification settings - Fork 1
/
functions.inc.php
71 lines (60 loc) · 1.86 KB
/
functions.inc.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
<?php
function sql_connect() {
$sql = mysqli_connect(DMR_DB_HOST, DMR_DB_USER, DMR_DB_PASSWORD, DMR_DB_NAME);
if (!$sql) {
echo "error: can't connect to mysql database!\n";
return false;
}
$sql->query("set names 'utf8'");
$sql->query("set charset 'utf8'");
return $sql;
}
function is_srcid_valid($id) {
return preg_match(SRC_ID_REGEX, "$id");
}
function mqtt_procmsg($topic, $msg) {
$msg = json_decode($msg);
switch ($msg->Event) {
case 'Session-Stop':
if (!is_srcid_valid($msg->SourceID))
return;
if ($msg->SessionType != SESSION_TYPE_GROUP_VOICE &&
$msg->SessionType != SESSION_TYPE_PRIVATE_VOICE)
return;
$call_length_sec = round(($msg->DataCount*60)/1000);
echo "call from $msg->SourceID, length: $call_length_sec seconds\n";
if (!$call_length_sec) {
echo " empty call, ignoring\n";
return;
}
$sql = sql_connect();
if ($sql === false)
return;
// Querying stored talktime for the current day.
$query_response = $sql->query('select `talktime` from `' . DMR_DB_TABLE . '` ' .
'where `date`="' . date('Y-m-d') . '" and `id`="' .
$sql->escape_string($msg->SourceID) . '"');
if (!$query_response) {
echo "mysql query error: $sql->error\n";
return;
}
$row = $query_response->fetch_row();
if ($row)
$current_talk_time_sec = $row[0];
else
$current_talk_time_sec = 0;
echo " current talk time for this day: $current_talk_time_sec seconds\n";
$result = $sql->query('replace into `' . DMR_DB_TABLE . '` ' .
'(`id`, `date`, `talktime`) values (' .
'"' . $sql->escape_string($msg->SourceID) . '", now(), "' .
($current_talk_time_sec + $call_length_sec) . '")');
if (!$result) {
echo 'mysql query error: ' . mysqli_error();
return;
}
$sql->close();
echo " added to database\n";
break;
}
}
?>