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