Adds initial conferences search support
parent
15320854f3
commit
7f3b006d4d
|
@ -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',
|
||||||
];
|
];
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|
|
@ -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;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
|
@ -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;"
|
||||||
|
|
||||||
|
|
||||||
|
];
|
||||||
|
|
||||||
|
?>
|
|
@ -20,6 +20,7 @@ $allowed_urls = [
|
||||||
'register',
|
'register',
|
||||||
'profile',
|
'profile',
|
||||||
'config',
|
'config',
|
||||||
|
'conferences',
|
||||||
];
|
];
|
||||||
|
|
||||||
// cnfig file
|
// cnfig 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();
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
|
@ -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>
|
||||||
|
|
|
@ -1,3 +1,11 @@
|
||||||
<?php ?>
|
<?php ?>
|
||||||
|
|
||||||
profile of <?= $user ?>
|
<div>
|
||||||
|
|
||||||
|
<p>Profile of <?= $user ?></p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>username: <?= $_SESSION['username'] ?></li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
|
@ -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>
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue