Moves all SQL into the respective classes
							parent
							
								
									cd7b78a2e5
								
							
						
					
					
						commit
						c83baeee2f
					
				| 
						 | 
				
			
			@ -2,11 +2,9 @@
 | 
			
		|||
 | 
			
		||||
class Component {
 | 
			
		||||
    private $db;
 | 
			
		||||
    private $queries;
 | 
			
		||||
 | 
			
		||||
    public function __construct($database) {
 | 
			
		||||
        $this->db = $database->getConnection();
 | 
			
		||||
//        $this->queries = include('queries.php');
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -25,7 +23,9 @@ class Component {
 | 
			
		|||
        $until_time = htmlspecialchars(strip_tags($until_time));
 | 
			
		||||
 | 
			
		||||
        // list of jitsi component events
 | 
			
		||||
        $sql = "SELECT jitsi_component, loglevel, time, component_id, event_type, event_param
 | 
			
		||||
        $sql = "
 | 
			
		||||
SELECT
 | 
			
		||||
    jitsi_component, loglevel, time, component_id, event_type, event_param
 | 
			
		||||
FROM
 | 
			
		||||
    jitsi_components
 | 
			
		||||
WHERE
 | 
			
		||||
| 
						 | 
				
			
			@ -36,6 +36,7 @@ class Component {
 | 
			
		|||
    (time >= '%s 00:00:00' AND time <= '%s 23:59:59')
 | 
			
		||||
ORDER BY
 | 
			
		||||
    time";
 | 
			
		||||
 | 
			
		||||
        $sql = sprintf($sql, $jitsi_component, $component_id, $from_time, $until_time);
 | 
			
		||||
 | 
			
		||||
        $query = $this->db->prepare($sql);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2,11 +2,9 @@
 | 
			
		|||
 | 
			
		||||
class Conference {
 | 
			
		||||
    private $db;
 | 
			
		||||
    private $queries;
 | 
			
		||||
 | 
			
		||||
    public function __construct($database) {
 | 
			
		||||
        $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
 | 
			
		||||
        $from_time = htmlspecialchars(strip_tags($from_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);
 | 
			
		||||
 | 
			
		||||
        $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
 | 
			
		||||
        $from_time = htmlspecialchars(strip_tags($from_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);
 | 
			
		||||
 | 
			
		||||
        $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
 | 
			
		||||
        $from_time = htmlspecialchars(strip_tags($from_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);
 | 
			
		||||
 | 
			
		||||
        $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
 | 
			
		||||
        $from_time = htmlspecialchars(strip_tags($from_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);
 | 
			
		||||
 | 
			
		||||
        $query = $this->db->prepare($sql);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2,11 +2,9 @@
 | 
			
		|||
 | 
			
		||||
class Participant {
 | 
			
		||||
    private $db;
 | 
			
		||||
    private $queries;
 | 
			
		||||
 | 
			
		||||
    public function __construct($database) {
 | 
			
		||||
        $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
 | 
			
		||||
        $from_time = htmlspecialchars(strip_tags($from_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);
 | 
			
		||||
 | 
			
		||||
        $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
 | 
			
		||||
        $from_time = htmlspecialchars(strip_tags($from_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);
 | 
			
		||||
 | 
			
		||||
        $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
 | 
			
		||||
        $from_time = htmlspecialchars(strip_tags($from_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);
 | 
			
		||||
 | 
			
		||||
        $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) {
 | 
			
		||||
 | 
			
		||||
        // time period drill-down
 | 
			
		||||
| 
						 | 
				
			
			@ -100,7 +233,19 @@ class Participant {
 | 
			
		|||
        // this is needed for compatibility with the bash version, so we use '%s' placeholders
 | 
			
		||||
        $from_time = htmlspecialchars(strip_tags($from_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);
 | 
			
		||||
 | 
			
		||||
        $query = $this->db->prepare($sql);
 | 
			
		||||
| 
						 | 
				
			
			@ -109,7 +254,7 @@ class Participant {
 | 
			
		|||
        return $query->fetchAll(PDO::FETCH_ASSOC);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // number of conferences
 | 
			
		||||
    // number of participants
 | 
			
		||||
    public function participantNumber($from_time, $until_time) {
 | 
			
		||||
 | 
			
		||||
        // time period drill-down
 | 
			
		||||
| 
						 | 
				
			
			@ -124,7 +269,18 @@ class Participant {
 | 
			
		|||
        // this is needed for compatibility with the bash version, so we use '%s' placeholders
 | 
			
		||||
        $from_time = htmlspecialchars(strip_tags($from_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);
 | 
			
		||||
 | 
			
		||||
        $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