Moves all SQL into the respective classes
parent
cd7b78a2e5
commit
c83baeee2f
|
@ -2,11 +2,9 @@
|
||||||
|
|
||||||
class Component {
|
class Component {
|
||||||
private $db;
|
private $db;
|
||||||
private $queries;
|
|
||||||
|
|
||||||
public function __construct($database) {
|
public function __construct($database) {
|
||||||
$this->db = $database->getConnection();
|
$this->db = $database->getConnection();
|
||||||
// $this->queries = include('queries.php');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -25,17 +23,20 @@ class Component {
|
||||||
$until_time = htmlspecialchars(strip_tags($until_time));
|
$until_time = htmlspecialchars(strip_tags($until_time));
|
||||||
|
|
||||||
// list of jitsi component events
|
// list of jitsi component events
|
||||||
$sql = "SELECT jitsi_component, loglevel, time, component_id, event_type, event_param
|
$sql = "
|
||||||
FROM
|
SELECT
|
||||||
|
jitsi_component, loglevel, time, component_id, event_type, event_param
|
||||||
|
FROM
|
||||||
jitsi_components
|
jitsi_components
|
||||||
WHERE
|
WHERE
|
||||||
jitsi_component = %s
|
jitsi_component = %s
|
||||||
AND
|
AND
|
||||||
component_id = %s
|
component_id = %s
|
||||||
AND
|
AND
|
||||||
(time >= '%s 00:00:00' AND time <= '%s 23:59:59')
|
(time >= '%s 00:00:00' AND time <= '%s 23:59:59')
|
||||||
ORDER BY
|
ORDER BY
|
||||||
time";
|
time";
|
||||||
|
|
||||||
$sql = sprintf($sql, $jitsi_component, $component_id, $from_time, $until_time);
|
$sql = sprintf($sql, $jitsi_component, $component_id, $from_time, $until_time);
|
||||||
|
|
||||||
$query = $this->db->prepare($sql);
|
$query = $this->db->prepare($sql);
|
||||||
|
|
|
@ -2,11 +2,9 @@
|
||||||
|
|
||||||
class Conference {
|
class Conference {
|
||||||
private $db;
|
private $db;
|
||||||
private $queries;
|
|
||||||
|
|
||||||
public function __construct($database) {
|
public function __construct($database) {
|
||||||
$this->db = $database->getConnection();
|
$this->db = $database->getConnection();
|
||||||
$this->queries = include('queries.php');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -25,7 +23,52 @@ class Conference {
|
||||||
// this is needed for compatibility with the bash version, so we use '%s' placeholders
|
// this is needed for compatibility with the bash version, so we use '%s' placeholders
|
||||||
$from_time = htmlspecialchars(strip_tags($from_time));
|
$from_time = htmlspecialchars(strip_tags($from_time));
|
||||||
$until_time = htmlspecialchars(strip_tags($until_time));
|
$until_time = htmlspecialchars(strip_tags($until_time));
|
||||||
$sql = $this->queries['conference_by_id'];
|
|
||||||
|
// search for a conference by its ID for a time period (if given)
|
||||||
|
$sql = "
|
||||||
|
SELECT
|
||||||
|
pe.time,
|
||||||
|
c.conference_id,
|
||||||
|
c.conference_name,
|
||||||
|
c.conference_host,
|
||||||
|
pe.loglevel,
|
||||||
|
pe.event_type,
|
||||||
|
p.endpoint_id AS participant_id,
|
||||||
|
pe.event_param
|
||||||
|
FROM
|
||||||
|
conferences c
|
||||||
|
LEFT JOIN
|
||||||
|
conference_events ce ON c.conference_id = ce.conference_id
|
||||||
|
LEFT JOIN
|
||||||
|
participants p ON c.conference_id = p.conference_id
|
||||||
|
LEFT JOIN
|
||||||
|
participant_events pe ON p.endpoint_id = pe.participant_id
|
||||||
|
WHERE
|
||||||
|
c.conference_id = '%s'
|
||||||
|
AND (pe.time >= '%s 00:00:00' AND pe.time <= '%s 23:59:59')
|
||||||
|
|
||||||
|
UNION
|
||||||
|
|
||||||
|
SELECT
|
||||||
|
ce.time AS event_time,
|
||||||
|
c.conference_id,
|
||||||
|
c.conference_name,
|
||||||
|
c.conference_host,
|
||||||
|
ce.loglevel,
|
||||||
|
ce.conference_event AS event_type,
|
||||||
|
NULL AS participant_id,
|
||||||
|
ce.conference_param AS event_param
|
||||||
|
FROM
|
||||||
|
conferences c
|
||||||
|
LEFT JOIN
|
||||||
|
conference_events ce ON c.conference_id = ce.conference_id
|
||||||
|
WHERE
|
||||||
|
c.conference_id = '%s'
|
||||||
|
AND (event_time >= '%s 00:00:00' AND event_time <= '%s 23:59:59')
|
||||||
|
|
||||||
|
ORDER BY
|
||||||
|
pe.time";
|
||||||
|
|
||||||
$sql = sprintf($sql, $conference_id, $from_time, $until_time, $conference_id, $from_time, $until_time);
|
$sql = sprintf($sql, $conference_id, $from_time, $until_time, $conference_id, $from_time, $until_time);
|
||||||
|
|
||||||
$query = $this->db->prepare($sql);
|
$query = $this->db->prepare($sql);
|
||||||
|
@ -50,7 +93,52 @@ class Conference {
|
||||||
// this is needed for compatibility with the bash version, so we use '%s' placeholders
|
// this is needed for compatibility with the bash version, so we use '%s' placeholders
|
||||||
$from_time = htmlspecialchars(strip_tags($from_time));
|
$from_time = htmlspecialchars(strip_tags($from_time));
|
||||||
$until_time = htmlspecialchars(strip_tags($until_time));
|
$until_time = htmlspecialchars(strip_tags($until_time));
|
||||||
$sql = $this->queries['conference_by_name'];
|
|
||||||
|
// search for a conference by its name for a time period (if given)
|
||||||
|
$sql = "
|
||||||
|
SELECT
|
||||||
|
pe.time,
|
||||||
|
c.conference_id,
|
||||||
|
c.conference_name,
|
||||||
|
c.conference_host,
|
||||||
|
pe.loglevel,
|
||||||
|
pe.event_type,
|
||||||
|
p.endpoint_id AS participant_id,
|
||||||
|
pe.event_param
|
||||||
|
FROM
|
||||||
|
conferences c
|
||||||
|
LEFT JOIN
|
||||||
|
conference_events ce ON c.conference_id = ce.conference_id
|
||||||
|
LEFT JOIN
|
||||||
|
participants p ON c.conference_id = p.conference_id
|
||||||
|
LEFT JOIN
|
||||||
|
participant_events pe ON p.endpoint_id = pe.participant_id
|
||||||
|
WHERE
|
||||||
|
c.conference_name = '%s'
|
||||||
|
AND (pe.time >= '%s 00:00:00' AND pe.time <= '%s 23:59:59')
|
||||||
|
|
||||||
|
UNION
|
||||||
|
|
||||||
|
SELECT
|
||||||
|
ce.time AS event_time,
|
||||||
|
c.conference_id,
|
||||||
|
c.conference_name,
|
||||||
|
c.conference_host,
|
||||||
|
ce.loglevel,
|
||||||
|
ce.conference_event AS event_type,
|
||||||
|
NULL AS participant_id,
|
||||||
|
ce.conference_param AS event_param
|
||||||
|
FROM
|
||||||
|
conferences c
|
||||||
|
LEFT JOIN
|
||||||
|
conference_events ce ON c.conference_id = ce.conference_id
|
||||||
|
WHERE
|
||||||
|
c.conference_name = '%s'
|
||||||
|
AND (event_time >= '%s 00:00:00' AND event_time <= '%s 23:59:59')
|
||||||
|
|
||||||
|
ORDER BY
|
||||||
|
pe.time";
|
||||||
|
|
||||||
$sql = sprintf($sql, $conference_name, $from_time, $until_time, $conference_name, $from_time, $until_time);
|
$sql = sprintf($sql, $conference_name, $from_time, $until_time, $conference_name, $from_time, $until_time);
|
||||||
|
|
||||||
$query = $this->db->prepare($sql);
|
$query = $this->db->prepare($sql);
|
||||||
|
@ -75,7 +163,77 @@ class Conference {
|
||||||
// this is needed for compatibility with the bash version, so we use '%s' placeholders
|
// this is needed for compatibility with the bash version, so we use '%s' placeholders
|
||||||
$from_time = htmlspecialchars(strip_tags($from_time));
|
$from_time = htmlspecialchars(strip_tags($from_time));
|
||||||
$until_time = htmlspecialchars(strip_tags($until_time));
|
$until_time = htmlspecialchars(strip_tags($until_time));
|
||||||
$sql = $this->queries['conferences_all_formatted'];
|
|
||||||
|
// list of conferences for time period (if given)
|
||||||
|
// fields: component, duration, conference ID, conference name, number of participants, name count (the conf name is found), conference host
|
||||||
|
$sql = "
|
||||||
|
SELECT DISTINCT
|
||||||
|
c.jitsi_component,
|
||||||
|
(SELECT COALESCE
|
||||||
|
(
|
||||||
|
(SELECT ce.time
|
||||||
|
FROM conference_events ce
|
||||||
|
WHERE
|
||||||
|
ce.conference_id = c.conference_id
|
||||||
|
AND
|
||||||
|
ce.conference_event = 'conference created'
|
||||||
|
),
|
||||||
|
(SELECT ce.time
|
||||||
|
FROM conference_events ce
|
||||||
|
WHERE
|
||||||
|
ce.conference_id = c.conference_id
|
||||||
|
AND
|
||||||
|
ce.conference_event = 'bridge selected'
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
AS start,
|
||||||
|
(SELECT COALESCE
|
||||||
|
(
|
||||||
|
(SELECT ce.time
|
||||||
|
FROM conference_events ce
|
||||||
|
WHERE
|
||||||
|
ce.conference_id = c.conference_id
|
||||||
|
AND
|
||||||
|
(ce.conference_event = 'conference expired' OR ce.conference_event = 'conference stopped')
|
||||||
|
),
|
||||||
|
(SELECT pe.time
|
||||||
|
FROM participant_events pe
|
||||||
|
WHERE
|
||||||
|
pe.event_param = c.conference_id
|
||||||
|
ORDER BY pe.time DESC
|
||||||
|
LIMIT 1
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
AS end,
|
||||||
|
c.conference_id,
|
||||||
|
c.conference_name,
|
||||||
|
(SELECT COUNT(pe.participant_id)
|
||||||
|
FROM participant_events pe
|
||||||
|
WHERE
|
||||||
|
pe.event_type = 'participant joining'
|
||||||
|
AND
|
||||||
|
pe.event_param = c.conference_id) AS participants,
|
||||||
|
name_counts.name_count,
|
||||||
|
c.conference_host
|
||||||
|
FROM
|
||||||
|
conferences c
|
||||||
|
JOIN (
|
||||||
|
SELECT
|
||||||
|
conference_name,
|
||||||
|
COUNT(*) AS name_count
|
||||||
|
FROM
|
||||||
|
conferences
|
||||||
|
GROUP BY
|
||||||
|
conference_name
|
||||||
|
) AS name_counts ON c.conference_name = name_counts.conference_name
|
||||||
|
JOIN
|
||||||
|
conference_events ce ON c.conference_id = ce.conference_id
|
||||||
|
WHERE (ce.time >= '%s 00:00:00' AND ce.time <= '%s 23:59:59')
|
||||||
|
ORDER BY
|
||||||
|
c.id";
|
||||||
|
|
||||||
$sql = sprintf($sql, $from_time, $until_time);
|
$sql = sprintf($sql, $from_time, $until_time);
|
||||||
|
|
||||||
$query = $this->db->prepare($sql);
|
$query = $this->db->prepare($sql);
|
||||||
|
@ -99,7 +257,28 @@ class Conference {
|
||||||
// this is needed for compatibility with the bash version, so we use '%s' placeholders
|
// this is needed for compatibility with the bash version, so we use '%s' placeholders
|
||||||
$from_time = htmlspecialchars(strip_tags($from_time));
|
$from_time = htmlspecialchars(strip_tags($from_time));
|
||||||
$until_time = htmlspecialchars(strip_tags($until_time));
|
$until_time = htmlspecialchars(strip_tags($until_time));
|
||||||
$sql = $this->queries['conference_number'];
|
|
||||||
|
// number of conferences for time period (if given)
|
||||||
|
// NB we need to cross check with first occurrence of "bridge selected"
|
||||||
|
// as in Jicofo logs there is no way to get the time for conference ID creation
|
||||||
|
$sql = "
|
||||||
|
SELECT COUNT(c.conference_id) as conferences
|
||||||
|
FROM
|
||||||
|
conferences c
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT ce.conference_id, MIN(ce.time) as first_event_time
|
||||||
|
FROM conference_events ce
|
||||||
|
WHERE ce.conference_event = 'bridge selected'
|
||||||
|
GROUP BY ce.conference_id
|
||||||
|
) AS first_event ON c.conference_id = first_event.conference_id
|
||||||
|
LEFT JOIN
|
||||||
|
conference_events ce ON c.conference_id = ce.conference_id
|
||||||
|
WHERE
|
||||||
|
(ce.time >= '%s 00:00:00' AND ce.time <= '%s 23:59:59')
|
||||||
|
AND (ce.conference_event = 'conference created'
|
||||||
|
OR (ce.conference_event = 'bridge selected' AND ce.time = first_event.first_event_time)
|
||||||
|
)";
|
||||||
|
|
||||||
$sql = sprintf($sql, $from_time, $until_time);
|
$sql = sprintf($sql, $from_time, $until_time);
|
||||||
|
|
||||||
$query = $this->db->prepare($sql);
|
$query = $this->db->prepare($sql);
|
||||||
|
|
|
@ -2,11 +2,9 @@
|
||||||
|
|
||||||
class Participant {
|
class Participant {
|
||||||
private $db;
|
private $db;
|
||||||
private $queries;
|
|
||||||
|
|
||||||
public function __construct($database) {
|
public function __construct($database) {
|
||||||
$this->db = $database->getConnection();
|
$this->db = $database->getConnection();
|
||||||
$this->queries = include('queries.php');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -25,7 +23,52 @@ class Participant {
|
||||||
// this is needed for compatibility with the bash version, so we use '%s' placeholders
|
// this is needed for compatibility with the bash version, so we use '%s' placeholders
|
||||||
$from_time = htmlspecialchars(strip_tags($from_time));
|
$from_time = htmlspecialchars(strip_tags($from_time));
|
||||||
$until_time = htmlspecialchars(strip_tags($until_time));
|
$until_time = htmlspecialchars(strip_tags($until_time));
|
||||||
$sql = $this->queries['conference_by_participant_id'];
|
|
||||||
|
// list conferences where participant ID (endpoint_id) is found
|
||||||
|
$sql = "
|
||||||
|
SELECT
|
||||||
|
pe.time,
|
||||||
|
c.conference_id,
|
||||||
|
c.conference_name,
|
||||||
|
c.conference_host,
|
||||||
|
pe.loglevel,
|
||||||
|
pe.event_type,
|
||||||
|
p.endpoint_id AS participant_id,
|
||||||
|
pe.event_param
|
||||||
|
FROM
|
||||||
|
conferences c
|
||||||
|
LEFT JOIN
|
||||||
|
conference_events ce ON c.conference_id = ce.conference_id
|
||||||
|
LEFT JOIN
|
||||||
|
participants p ON c.conference_id = p.conference_id
|
||||||
|
LEFT JOIN
|
||||||
|
participant_events pe ON p.endpoint_id = pe.participant_id
|
||||||
|
WHERE
|
||||||
|
p.endpoint_id = '%s'
|
||||||
|
AND (pe.time >= '%s 00:00:00' AND pe.time <= '%s 23:59:59')
|
||||||
|
|
||||||
|
UNION
|
||||||
|
|
||||||
|
SELECT
|
||||||
|
ce.time AS event_time,
|
||||||
|
c.conference_id,
|
||||||
|
c.conference_name,
|
||||||
|
c.conference_host,
|
||||||
|
ce.loglevel,
|
||||||
|
ce.conference_event AS event_type,
|
||||||
|
NULL AS participant_id,
|
||||||
|
ce.conference_param AS event_param
|
||||||
|
FROM
|
||||||
|
conferences c
|
||||||
|
LEFT JOIN
|
||||||
|
conference_events ce ON c.conference_id = ce.conference_id
|
||||||
|
WHERE
|
||||||
|
participant_id = '%s'
|
||||||
|
AND (event_time >= '%s 00:00:00' AND event_time <= '%s 23:59:59')
|
||||||
|
|
||||||
|
ORDER BY
|
||||||
|
pe.time";
|
||||||
|
|
||||||
$sql = sprintf($sql, $participant_id, $from_time, $until_time, $participant_id, $from_time, $until_time);
|
$sql = sprintf($sql, $participant_id, $from_time, $until_time, $participant_id, $from_time, $until_time);
|
||||||
|
|
||||||
$query = $this->db->prepare($sql);
|
$query = $this->db->prepare($sql);
|
||||||
|
@ -50,7 +93,52 @@ class Participant {
|
||||||
// this is needed for compatibility with the bash version, so we use '%s' placeholders
|
// this is needed for compatibility with the bash version, so we use '%s' placeholders
|
||||||
$from_time = htmlspecialchars(strip_tags($from_time));
|
$from_time = htmlspecialchars(strip_tags($from_time));
|
||||||
$until_time = htmlspecialchars(strip_tags($until_time));
|
$until_time = htmlspecialchars(strip_tags($until_time));
|
||||||
$sql = $this->queries['participant_by_stats_id'];
|
|
||||||
|
// list conferences where participant name (stats_id) is found
|
||||||
|
$sql = "
|
||||||
|
SELECT
|
||||||
|
pe.time,
|
||||||
|
c.conference_id,
|
||||||
|
c.conference_name,
|
||||||
|
c.conference_host,
|
||||||
|
pe.loglevel,
|
||||||
|
pe.event_type,
|
||||||
|
p.endpoint_id AS participant_id,
|
||||||
|
pe.event_param
|
||||||
|
FROM
|
||||||
|
conferences c
|
||||||
|
LEFT JOIN
|
||||||
|
conference_events ce ON c.conference_id = ce.conference_id
|
||||||
|
LEFT JOIN
|
||||||
|
participants p ON c.conference_id = p.conference_id
|
||||||
|
LEFT JOIN
|
||||||
|
participant_events pe ON p.endpoint_id = pe.participant_id
|
||||||
|
WHERE
|
||||||
|
pe.event_type = 'stats_id' AND pe.event_param LIKE '%%%s%%'
|
||||||
|
AND (pe.time >= '%s 00:00:00' AND pe.time <= '%s 23:59:59')
|
||||||
|
|
||||||
|
UNION
|
||||||
|
|
||||||
|
SELECT
|
||||||
|
ce.time AS event_time,
|
||||||
|
c.conference_id,
|
||||||
|
c.conference_name,
|
||||||
|
c.conference_host,
|
||||||
|
ce.loglevel,
|
||||||
|
ce.conference_event AS event_type,
|
||||||
|
NULL AS participant_id,
|
||||||
|
ce.conference_param AS event_param
|
||||||
|
FROM
|
||||||
|
conferences c
|
||||||
|
LEFT JOIN
|
||||||
|
conference_events ce ON c.conference_id = ce.conference_id
|
||||||
|
WHERE
|
||||||
|
event_type = 'stats_id' AND event_param LIKE '%%%s%%'
|
||||||
|
AND (event_time >= '%s 00:00:00' AND event_time <= '%s 23:59:59')
|
||||||
|
|
||||||
|
ORDER BY
|
||||||
|
pe.time";
|
||||||
|
|
||||||
$sql = sprintf($sql, $participant_name, $from_time, $until_time, $participant_name, $from_time, $until_time);
|
$sql = sprintf($sql, $participant_name, $from_time, $until_time, $participant_name, $from_time, $until_time);
|
||||||
|
|
||||||
$query = $this->db->prepare($sql);
|
$query = $this->db->prepare($sql);
|
||||||
|
@ -75,7 +163,52 @@ class Participant {
|
||||||
// this is needed for compatibility with the bash version, so we use '%s' placeholders
|
// this is needed for compatibility with the bash version, so we use '%s' placeholders
|
||||||
$from_time = htmlspecialchars(strip_tags($from_time));
|
$from_time = htmlspecialchars(strip_tags($from_time));
|
||||||
$until_time = htmlspecialchars(strip_tags($until_time));
|
$until_time = htmlspecialchars(strip_tags($until_time));
|
||||||
$sql = $this->queries['participant_by_ip'];
|
|
||||||
|
// list conferences where participant IP is found
|
||||||
|
$sql = "
|
||||||
|
SELECT
|
||||||
|
pe.time,
|
||||||
|
c.conference_id,
|
||||||
|
c.conference_name,
|
||||||
|
c.conference_host,
|
||||||
|
pe.loglevel,
|
||||||
|
pe.event_type,
|
||||||
|
p.endpoint_id AS participant_id,
|
||||||
|
pe.event_param
|
||||||
|
FROM
|
||||||
|
conferences c
|
||||||
|
LEFT JOIN
|
||||||
|
conference_events ce ON c.conference_id = ce.conference_id
|
||||||
|
LEFT JOIN
|
||||||
|
participants p ON c.conference_id = p.conference_id
|
||||||
|
LEFT JOIN
|
||||||
|
participant_events pe ON p.endpoint_id = pe.participant_id
|
||||||
|
WHERE
|
||||||
|
pe.event_type = 'pair selected' AND pe.event_param = '%s'
|
||||||
|
AND (pe.time >= '%s 00:00:00' AND pe.time <= '%s 23:59:59')
|
||||||
|
|
||||||
|
UNION
|
||||||
|
|
||||||
|
SELECT
|
||||||
|
ce.time AS event_time,
|
||||||
|
c.conference_id,
|
||||||
|
c.conference_name,
|
||||||
|
c.conference_host,
|
||||||
|
ce.loglevel,
|
||||||
|
ce.conference_event AS event_type,
|
||||||
|
NULL AS participant_id,
|
||||||
|
ce.conference_param AS event_param
|
||||||
|
FROM
|
||||||
|
conferences c
|
||||||
|
LEFT JOIN
|
||||||
|
conference_events ce ON c.conference_id = ce.conference_id
|
||||||
|
WHERE
|
||||||
|
event_type = 'pair selected' AND event_param = '%s'
|
||||||
|
AND (event_time >= '%s 00:00:00' AND event_time <= '%s 23:59:59')
|
||||||
|
|
||||||
|
ORDER BY
|
||||||
|
pe.time";
|
||||||
|
|
||||||
$sql = sprintf($sql, $participant_ip, $from_time, $until_time, $participant_ip, $from_time, $until_time);
|
$sql = sprintf($sql, $participant_ip, $from_time, $until_time, $participant_ip, $from_time, $until_time);
|
||||||
|
|
||||||
$query = $this->db->prepare($sql);
|
$query = $this->db->prepare($sql);
|
||||||
|
@ -85,7 +218,7 @@ class Participant {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// list of all conferences
|
// list of all participants
|
||||||
public function participantsAll($from_time, $until_time) {
|
public function participantsAll($from_time, $until_time) {
|
||||||
|
|
||||||
// time period drill-down
|
// time period drill-down
|
||||||
|
@ -100,7 +233,19 @@ class Participant {
|
||||||
// this is needed for compatibility with the bash version, so we use '%s' placeholders
|
// this is needed for compatibility with the bash version, so we use '%s' placeholders
|
||||||
$from_time = htmlspecialchars(strip_tags($from_time));
|
$from_time = htmlspecialchars(strip_tags($from_time));
|
||||||
$until_time = htmlspecialchars(strip_tags($until_time));
|
$until_time = htmlspecialchars(strip_tags($until_time));
|
||||||
$sql = $this->queries['participants_all'];
|
|
||||||
|
// list all participants
|
||||||
|
$sql = "
|
||||||
|
SELECT DISTINCT
|
||||||
|
p.jitsi_component, p.endpoint_id, p.conference_id
|
||||||
|
FROM
|
||||||
|
participants p
|
||||||
|
JOIN
|
||||||
|
participant_events pe ON p.endpoint_id = pe.participant_id
|
||||||
|
WHERE
|
||||||
|
pe.time >= '%s 00:00:00' AND pe.time <= '%s 23:59:59'
|
||||||
|
ORDER BY p.id";
|
||||||
|
|
||||||
$sql = sprintf($sql, $from_time, $until_time);
|
$sql = sprintf($sql, $from_time, $until_time);
|
||||||
|
|
||||||
$query = $this->db->prepare($sql);
|
$query = $this->db->prepare($sql);
|
||||||
|
@ -109,7 +254,7 @@ class Participant {
|
||||||
return $query->fetchAll(PDO::FETCH_ASSOC);
|
return $query->fetchAll(PDO::FETCH_ASSOC);
|
||||||
}
|
}
|
||||||
|
|
||||||
// number of conferences
|
// number of participants
|
||||||
public function participantNumber($from_time, $until_time) {
|
public function participantNumber($from_time, $until_time) {
|
||||||
|
|
||||||
// time period drill-down
|
// time period drill-down
|
||||||
|
@ -124,7 +269,18 @@ class Participant {
|
||||||
// this is needed for compatibility with the bash version, so we use '%s' placeholders
|
// this is needed for compatibility with the bash version, so we use '%s' placeholders
|
||||||
$from_time = htmlspecialchars(strip_tags($from_time));
|
$from_time = htmlspecialchars(strip_tags($from_time));
|
||||||
$until_time = htmlspecialchars(strip_tags($until_time));
|
$until_time = htmlspecialchars(strip_tags($until_time));
|
||||||
$sql = $this->queries['participant_number'];
|
|
||||||
|
// number of participants for time period (if given)
|
||||||
|
$sql = "
|
||||||
|
SELECT COUNT(DISTINCT p.endpoint_id) as participants
|
||||||
|
FROM
|
||||||
|
participants p
|
||||||
|
LEFT JOIN
|
||||||
|
participant_events pe ON p.endpoint_id = pe.participant_id
|
||||||
|
WHERE
|
||||||
|
(pe.time >= '%s 00:00:00' AND pe.time <= '%s 23:59:59')
|
||||||
|
AND pe.event_type = 'participant joining'";
|
||||||
|
|
||||||
$sql = sprintf($sql, $from_time, $until_time);
|
$sql = sprintf($sql, $from_time, $until_time);
|
||||||
|
|
||||||
$query = $this->db->prepare($sql);
|
$query = $this->db->prepare($sql);
|
||||||
|
|
|
@ -1,402 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
// all sql queries for the jilo database in one place
|
|
||||||
|
|
||||||
return [
|
|
||||||
|
|
||||||
// number of conferences for time period (if given)
|
|
||||||
// NB we need to cross check with first occurrence of "bridge selected"
|
|
||||||
// as in Jicofo logs there is no way to get the time for conference ID creation
|
|
||||||
'conference_number' => "
|
|
||||||
SELECT COUNT(c.conference_id) as conferences
|
|
||||||
FROM
|
|
||||||
conferences c
|
|
||||||
LEFT JOIN (
|
|
||||||
SELECT ce.conference_id, MIN(ce.time) as first_event_time
|
|
||||||
FROM conference_events ce
|
|
||||||
WHERE ce.conference_event = 'bridge selected'
|
|
||||||
GROUP BY ce.conference_id
|
|
||||||
) AS first_event ON c.conference_id = first_event.conference_id
|
|
||||||
LEFT JOIN
|
|
||||||
conference_events ce ON c.conference_id = ce.conference_id
|
|
||||||
WHERE
|
|
||||||
(ce.time >= '%s 00:00:00' AND ce.time <= '%s 23:59:59')
|
|
||||||
AND (ce.conference_event = 'conference created'
|
|
||||||
OR (ce.conference_event = 'bridge selected' AND ce.time = first_event.first_event_time)
|
|
||||||
)",
|
|
||||||
|
|
||||||
|
|
||||||
// search for a conference by its ID for a time period (if given)
|
|
||||||
'conference_by_id' => "
|
|
||||||
SELECT
|
|
||||||
pe.time,
|
|
||||||
c.conference_id,
|
|
||||||
c.conference_name,
|
|
||||||
c.conference_host,
|
|
||||||
pe.loglevel,
|
|
||||||
pe.event_type,
|
|
||||||
p.endpoint_id AS participant_id,
|
|
||||||
pe.event_param
|
|
||||||
FROM
|
|
||||||
conferences c
|
|
||||||
LEFT JOIN
|
|
||||||
conference_events ce ON c.conference_id = ce.conference_id
|
|
||||||
LEFT JOIN
|
|
||||||
participants p ON c.conference_id = p.conference_id
|
|
||||||
LEFT JOIN
|
|
||||||
participant_events pe ON p.endpoint_id = pe.participant_id
|
|
||||||
WHERE
|
|
||||||
c.conference_id = '%s'
|
|
||||||
AND (pe.time >= '%s 00:00:00' AND pe.time <= '%s 23:59:59')
|
|
||||||
|
|
||||||
UNION
|
|
||||||
|
|
||||||
SELECT
|
|
||||||
ce.time AS event_time,
|
|
||||||
c.conference_id,
|
|
||||||
c.conference_name,
|
|
||||||
c.conference_host,
|
|
||||||
ce.loglevel,
|
|
||||||
ce.conference_event AS event_type,
|
|
||||||
NULL AS participant_id,
|
|
||||||
ce.conference_param AS event_param
|
|
||||||
FROM
|
|
||||||
conferences c
|
|
||||||
LEFT JOIN
|
|
||||||
conference_events ce ON c.conference_id = ce.conference_id
|
|
||||||
WHERE
|
|
||||||
c.conference_id = '%s'
|
|
||||||
AND (event_time >= '%s 00:00:00' AND event_time <= '%s 23:59:59')
|
|
||||||
|
|
||||||
ORDER BY
|
|
||||||
pe.time;",
|
|
||||||
|
|
||||||
|
|
||||||
// list of conferences for time period (if given)
|
|
||||||
// fields: component, duration, conference ID, conference name, number of participants, name count (the conf name is found), conference host
|
|
||||||
'conferences_all_formatted' => "
|
|
||||||
SELECT DISTINCT
|
|
||||||
c.jitsi_component,
|
|
||||||
(SELECT COALESCE
|
|
||||||
(
|
|
||||||
(SELECT ce.time
|
|
||||||
FROM conference_events ce
|
|
||||||
WHERE
|
|
||||||
ce.conference_id = c.conference_id
|
|
||||||
AND
|
|
||||||
ce.conference_event = 'conference created'
|
|
||||||
),
|
|
||||||
(SELECT ce.time
|
|
||||||
FROM conference_events ce
|
|
||||||
WHERE
|
|
||||||
ce.conference_id = c.conference_id
|
|
||||||
AND
|
|
||||||
ce.conference_event = 'bridge selected'
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
AS start,
|
|
||||||
(SELECT COALESCE
|
|
||||||
(
|
|
||||||
(SELECT ce.time
|
|
||||||
FROM conference_events ce
|
|
||||||
WHERE
|
|
||||||
ce.conference_id = c.conference_id
|
|
||||||
AND
|
|
||||||
(ce.conference_event = 'conference expired' OR ce.conference_event = 'conference stopped')
|
|
||||||
),
|
|
||||||
(SELECT pe.time
|
|
||||||
FROM participant_events pe
|
|
||||||
WHERE
|
|
||||||
pe.event_param = c.conference_id
|
|
||||||
ORDER BY pe.time DESC
|
|
||||||
LIMIT 1
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
AS end,
|
|
||||||
c.conference_id,
|
|
||||||
c.conference_name,
|
|
||||||
(SELECT COUNT(pe.participant_id)
|
|
||||||
FROM participant_events pe
|
|
||||||
WHERE
|
|
||||||
pe.event_type = 'participant joining'
|
|
||||||
AND
|
|
||||||
pe.event_param = c.conference_id) AS participants,
|
|
||||||
name_counts.name_count,
|
|
||||||
c.conference_host
|
|
||||||
FROM
|
|
||||||
conferences c
|
|
||||||
JOIN (
|
|
||||||
SELECT
|
|
||||||
conference_name,
|
|
||||||
COUNT(*) AS name_count
|
|
||||||
FROM
|
|
||||||
conferences
|
|
||||||
GROUP BY
|
|
||||||
conference_name
|
|
||||||
) AS name_counts ON c.conference_name = name_counts.conference_name
|
|
||||||
JOIN
|
|
||||||
conference_events ce ON c.conference_id = ce.conference_id
|
|
||||||
WHERE (ce.time >= '%s 00:00:00' AND ce.time <= '%s 23:59:59')
|
|
||||||
ORDER BY
|
|
||||||
c.id;",
|
|
||||||
|
|
||||||
|
|
||||||
// search for a conference by its ID for a time period (if given)
|
|
||||||
'conference_by_id' => "
|
|
||||||
SELECT
|
|
||||||
pe.time,
|
|
||||||
c.conference_id,
|
|
||||||
c.conference_name,
|
|
||||||
c.conference_host,
|
|
||||||
pe.loglevel,
|
|
||||||
pe.event_type,
|
|
||||||
p.endpoint_id AS participant_id,
|
|
||||||
pe.event_param
|
|
||||||
FROM
|
|
||||||
conferences c
|
|
||||||
LEFT JOIN
|
|
||||||
conference_events ce ON c.conference_id = ce.conference_id
|
|
||||||
LEFT JOIN
|
|
||||||
participants p ON c.conference_id = p.conference_id
|
|
||||||
LEFT JOIN
|
|
||||||
participant_events pe ON p.endpoint_id = pe.participant_id
|
|
||||||
WHERE
|
|
||||||
c.conference_id = '%s'
|
|
||||||
AND (pe.time >= '%s 00:00:00' AND pe.time <= '%s 23:59:59')
|
|
||||||
|
|
||||||
UNION
|
|
||||||
|
|
||||||
SELECT
|
|
||||||
ce.time AS event_time,
|
|
||||||
c.conference_id,
|
|
||||||
c.conference_name,
|
|
||||||
c.conference_host,
|
|
||||||
ce.loglevel,
|
|
||||||
ce.conference_event AS event_type,
|
|
||||||
NULL AS participant_id,
|
|
||||||
ce.conference_param AS event_param
|
|
||||||
FROM
|
|
||||||
conferences c
|
|
||||||
LEFT JOIN
|
|
||||||
conference_events ce ON c.conference_id = ce.conference_id
|
|
||||||
WHERE
|
|
||||||
c.conference_id = '%s'
|
|
||||||
AND (event_time >= '%s 00:00:00' AND event_time <= '%s 23:59:59')
|
|
||||||
|
|
||||||
ORDER BY
|
|
||||||
pe.time;",
|
|
||||||
|
|
||||||
|
|
||||||
// search for a conference by its name for a time period (if given)
|
|
||||||
'conference_by_name' => "
|
|
||||||
SELECT
|
|
||||||
pe.time,
|
|
||||||
c.conference_id,
|
|
||||||
c.conference_name,
|
|
||||||
c.conference_host,
|
|
||||||
pe.loglevel,
|
|
||||||
pe.event_type,
|
|
||||||
p.endpoint_id AS participant_id,
|
|
||||||
pe.event_param
|
|
||||||
FROM
|
|
||||||
conferences c
|
|
||||||
LEFT JOIN
|
|
||||||
conference_events ce ON c.conference_id = ce.conference_id
|
|
||||||
LEFT JOIN
|
|
||||||
participants p ON c.conference_id = p.conference_id
|
|
||||||
LEFT JOIN
|
|
||||||
participant_events pe ON p.endpoint_id = pe.participant_id
|
|
||||||
WHERE
|
|
||||||
c.conference_name = '%s'
|
|
||||||
AND (pe.time >= '%s 00:00:00' AND pe.time <= '%s 23:59:59')
|
|
||||||
|
|
||||||
UNION
|
|
||||||
|
|
||||||
SELECT
|
|
||||||
ce.time AS event_time,
|
|
||||||
c.conference_id,
|
|
||||||
c.conference_name,
|
|
||||||
c.conference_host,
|
|
||||||
ce.loglevel,
|
|
||||||
ce.conference_event AS event_type,
|
|
||||||
NULL AS participant_id,
|
|
||||||
ce.conference_param AS event_param
|
|
||||||
FROM
|
|
||||||
conferences c
|
|
||||||
LEFT JOIN
|
|
||||||
conference_events ce ON c.conference_id = ce.conference_id
|
|
||||||
WHERE
|
|
||||||
c.conference_name = '%s'
|
|
||||||
AND (event_time >= '%s 00:00:00' AND event_time <= '%s 23:59:59')
|
|
||||||
|
|
||||||
ORDER BY
|
|
||||||
pe.time;",
|
|
||||||
|
|
||||||
|
|
||||||
// number of participants for time period (if given)
|
|
||||||
'participant_number' => "
|
|
||||||
SELECT COUNT(DISTINCT p.endpoint_id) as participants
|
|
||||||
FROM
|
|
||||||
participants p
|
|
||||||
LEFT JOIN
|
|
||||||
participant_events pe ON p.endpoint_id = pe.participant_id
|
|
||||||
WHERE
|
|
||||||
(pe.time >= '%s 00:00:00' AND pe.time <= '%s 23:59:59')
|
|
||||||
AND pe.event_type = 'participant joining'",
|
|
||||||
|
|
||||||
|
|
||||||
// list all participants
|
|
||||||
'participants_all' => "
|
|
||||||
SELECT DISTINCT
|
|
||||||
p.jitsi_component, p.endpoint_id, p.conference_id
|
|
||||||
FROM
|
|
||||||
participants p
|
|
||||||
JOIN
|
|
||||||
participant_events pe ON p.endpoint_id = pe.participant_id
|
|
||||||
WHERE
|
|
||||||
pe.time >= '%s 00:00:00' AND pe.time <= '%s 23:59:59'
|
|
||||||
ORDER BY p.id;",
|
|
||||||
|
|
||||||
|
|
||||||
// list conferences where participant ID (endpoint_id) is found
|
|
||||||
'conference_by_participant_id' => "
|
|
||||||
SELECT
|
|
||||||
pe.time,
|
|
||||||
c.conference_id,
|
|
||||||
c.conference_name,
|
|
||||||
c.conference_host,
|
|
||||||
pe.loglevel,
|
|
||||||
pe.event_type,
|
|
||||||
p.endpoint_id AS participant_id,
|
|
||||||
pe.event_param
|
|
||||||
FROM
|
|
||||||
conferences c
|
|
||||||
LEFT JOIN
|
|
||||||
conference_events ce ON c.conference_id = ce.conference_id
|
|
||||||
LEFT JOIN
|
|
||||||
participants p ON c.conference_id = p.conference_id
|
|
||||||
LEFT JOIN
|
|
||||||
participant_events pe ON p.endpoint_id = pe.participant_id
|
|
||||||
WHERE
|
|
||||||
p.endpoint_id = '%s'
|
|
||||||
AND (pe.time >= '%s 00:00:00' AND pe.time <= '%s 23:59:59')
|
|
||||||
|
|
||||||
UNION
|
|
||||||
|
|
||||||
SELECT
|
|
||||||
ce.time AS event_time,
|
|
||||||
c.conference_id,
|
|
||||||
c.conference_name,
|
|
||||||
c.conference_host,
|
|
||||||
ce.loglevel,
|
|
||||||
ce.conference_event AS event_type,
|
|
||||||
NULL AS participant_id,
|
|
||||||
ce.conference_param AS event_param
|
|
||||||
FROM
|
|
||||||
conferences c
|
|
||||||
LEFT JOIN
|
|
||||||
conference_events ce ON c.conference_id = ce.conference_id
|
|
||||||
WHERE
|
|
||||||
participant_id = '%s'
|
|
||||||
AND (event_time >= '%s 00:00:00' AND event_time <= '%s 23:59:59')
|
|
||||||
|
|
||||||
ORDER BY
|
|
||||||
pe.time;",
|
|
||||||
|
|
||||||
|
|
||||||
// list conferences where participant name (stats_id) is found
|
|
||||||
'participant_by_stats_id' => "
|
|
||||||
SELECT
|
|
||||||
pe.time,
|
|
||||||
c.conference_id,
|
|
||||||
c.conference_name,
|
|
||||||
c.conference_host,
|
|
||||||
pe.loglevel,
|
|
||||||
pe.event_type,
|
|
||||||
p.endpoint_id AS participant_id,
|
|
||||||
pe.event_param
|
|
||||||
FROM
|
|
||||||
conferences c
|
|
||||||
LEFT JOIN
|
|
||||||
conference_events ce ON c.conference_id = ce.conference_id
|
|
||||||
LEFT JOIN
|
|
||||||
participants p ON c.conference_id = p.conference_id
|
|
||||||
LEFT JOIN
|
|
||||||
participant_events pe ON p.endpoint_id = pe.participant_id
|
|
||||||
WHERE
|
|
||||||
pe.event_type = 'stats_id' AND pe.event_param LIKE '%%%s%%'
|
|
||||||
AND (pe.time >= '%s 00:00:00' AND pe.time <= '%s 23:59:59')
|
|
||||||
|
|
||||||
UNION
|
|
||||||
|
|
||||||
SELECT
|
|
||||||
ce.time AS event_time,
|
|
||||||
c.conference_id,
|
|
||||||
c.conference_name,
|
|
||||||
c.conference_host,
|
|
||||||
ce.loglevel,
|
|
||||||
ce.conference_event AS event_type,
|
|
||||||
NULL AS participant_id,
|
|
||||||
ce.conference_param AS event_param
|
|
||||||
FROM
|
|
||||||
conferences c
|
|
||||||
LEFT JOIN
|
|
||||||
conference_events ce ON c.conference_id = ce.conference_id
|
|
||||||
WHERE
|
|
||||||
event_type = 'stats_id' AND event_param LIKE '%%%s%%'
|
|
||||||
AND (event_time >= '%s 00:00:00' AND event_time <= '%s 23:59:59')
|
|
||||||
|
|
||||||
ORDER BY
|
|
||||||
pe.time;",
|
|
||||||
|
|
||||||
|
|
||||||
// list conferences where participant IP is found
|
|
||||||
'participant_by_ip' => "
|
|
||||||
SELECT
|
|
||||||
pe.time,
|
|
||||||
c.conference_id,
|
|
||||||
c.conference_name,
|
|
||||||
c.conference_host,
|
|
||||||
pe.loglevel,
|
|
||||||
pe.event_type,
|
|
||||||
p.endpoint_id AS participant_id,
|
|
||||||
pe.event_param
|
|
||||||
FROM
|
|
||||||
conferences c
|
|
||||||
LEFT JOIN
|
|
||||||
conference_events ce ON c.conference_id = ce.conference_id
|
|
||||||
LEFT JOIN
|
|
||||||
participants p ON c.conference_id = p.conference_id
|
|
||||||
LEFT JOIN
|
|
||||||
participant_events pe ON p.endpoint_id = pe.participant_id
|
|
||||||
WHERE
|
|
||||||
pe.event_type = 'pair selected' AND pe.event_param = '%s'
|
|
||||||
AND (pe.time >= '%s 00:00:00' AND pe.time <= '%s 23:59:59')
|
|
||||||
|
|
||||||
UNION
|
|
||||||
|
|
||||||
SELECT
|
|
||||||
ce.time AS event_time,
|
|
||||||
c.conference_id,
|
|
||||||
c.conference_name,
|
|
||||||
c.conference_host,
|
|
||||||
ce.loglevel,
|
|
||||||
ce.conference_event AS event_type,
|
|
||||||
NULL AS participant_id,
|
|
||||||
ce.conference_param AS event_param
|
|
||||||
FROM
|
|
||||||
conferences c
|
|
||||||
LEFT JOIN
|
|
||||||
conference_events ce ON c.conference_id = ce.conference_id
|
|
||||||
WHERE
|
|
||||||
event_type = 'pair selected' AND event_param = '%s'
|
|
||||||
AND (event_time >= '%s 00:00:00' AND event_time <= '%s 23:59:59')
|
|
||||||
|
|
||||||
ORDER BY
|
|
||||||
pe.time;",
|
|
||||||
|
|
||||||
];
|
|
||||||
|
|
||||||
?>
|
|
Loading…
Reference in New Issue