Adds initial conferences search support
							parent
							
								
									15320854f3
								
							
						
					
					
						commit
						7f3b006d4d
					
				| 
						 | 
				
			
			@ -4,6 +4,7 @@ $config = [
 | 
			
		|||
    'domain'		=> 'localhost',
 | 
			
		||||
    'folder'		=> '/jilo-web/',
 | 
			
		||||
    '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',
 | 
			
		||||
    'profile',
 | 
			
		||||
    'config',
 | 
			
		||||
    'conferences',
 | 
			
		||||
];
 | 
			
		||||
 | 
			
		||||
// 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 ?>
 | 
			
		||||
 | 
			
		||||
<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 ?>
 | 
			
		||||
 | 
			
		||||
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>
 | 
			
		||||
<?php if ( isset($_SESSION['username']) ) { ?>
 | 
			
		||||
        <li><a href="?page=config">config</a></li>
 | 
			
		||||
        <li><a href="?page=conferences">conferences</a></li>
 | 
			
		||||
<?php } ?>
 | 
			
		||||
    </ul>
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue