Adds initial conferences search support

main
Yasen Pramatarov 2024-07-04 12:04:27 +03:00
parent 15320854f3
commit 7f3b006d4d
8 changed files with 201 additions and 1 deletions

View File

@ -4,6 +4,7 @@ $config = [
'domain' => 'localhost', 'domain' => 'localhost',
'folder' => '/jilo-web/', 'folder' => '/jilo-web/',
'database' => '/home/yasen/work/code/git/lindeas-code/jilo-web/jilo-web.db', 'database' => '/home/yasen/work/code/git/lindeas-code/jilo-web/jilo-web.db',
'jilo_database' => '/home/yasen/work/code/git/lindeas-code/jilo/jilo.db',
]; ];
?> ?>

View File

@ -0,0 +1,32 @@
<?php
class Conference {
private $db;
private $table_name = 'conferences';
public $jitsi_component;
public $start;
public $end;
public $conference_id;
public $conference_name;
public $participants;
public $name_count;
public $conference_host;
public function __construct($database) {
$this->db = $database->getConnection();
$this->queries = include('queries.php');
}
// list of all conferences
public function conferences_all_formatted() {
$sql = $this->queries['conferences_all_formatted'];
$query = $this->db->prepare($sql);
$query->execute();
return $query;
}
}
?>

View File

@ -0,0 +1,102 @@
<?php
// all sql queries for the jilo database in one place
return [
// 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 ce.time
FROM conference_events ce
WHERE
ce.conference_id = c.conference_id
AND
ce.conference_event = 'conference expired')
AS start,
(SELECT ce.time
FROM conference_events ce
WHERE
ce.conference_id = c.conference_id
AND
ce.conference_event = 'conference created')
AS end,
c.conference_id,
c.conference_name,
(SELECT COUNT(pe.participant_id) AS participants
FROM participant_events pe
WHERE
pe.event_type = 'participant joining'
AND
pe.event_param = c.conference_id),
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;"
];
?>

View File

@ -20,6 +20,7 @@ $allowed_urls = [
'register', 'register',
'profile', 'profile',
'config', 'config',
'conferences',
]; ];
// cnfig file // cnfig file

View File

@ -0,0 +1,43 @@
<?php
require_once 'classes/database.php';
require 'classes/conference.php';
// list of all conferences
try {
$db = new Database($config['jilo_database']);
$conference = new Conference($db);
$search = $conference->conferences_all_formatted();
if ($search->rowCount() > 0) {
$conferences = array();
$conferences['records'] = array();
while ($row = $search->fetch(PDO::FETCH_ASSOC)) {
extract($row);
$conference_record = array(
'jitsi_component' => $jitsi_component,
'start' => $start,
'end' => $end,
'conference_id' => $conference_id,
'conference_name' => $conference_name,
'participants' => $participants,
'name_count' => $name_count,
'conference_host' => $conference_host
);
array_push($conferences['records'], $conference_record);
}
// FIXME format this better
echo json_encode($conferences);
} else {
echo 'No matching conferences found';
}
} catch (Exception $e) {
$error = $e->getMessage();
}
?>

View File

@ -1 +1,13 @@
<?php ?> <?php ?>
<div>
<p>Jilo web configuration</p>
<ul>
<?php foreach ($config as $config_item=>$config_value) { ?>
<li><?php echo htmlspecialchars($config_item) . ': ' . htmlspecialchars($config_value); ?></li>
<?php } ?>
</ul>
</div>

View File

@ -1,3 +1,11 @@
<?php ?> <?php ?>
profile of <?= $user ?> <div>
<p>Profile of <?= $user ?></p>
<ul>
<li>username: <?= $_SESSION['username'] ?></li>
</ul>
</div>

View File

@ -4,6 +4,7 @@
<li><a href="index.php">home</a></li> <li><a href="index.php">home</a></li>
<?php if ( isset($_SESSION['username']) ) { ?> <?php if ( isset($_SESSION['username']) ) { ?>
<li><a href="?page=config">config</a></li> <li><a href="?page=config">config</a></li>
<li><a href="?page=conferences">conferences</a></li>
<?php } ?> <?php } ?>
</ul> </ul>