From 54ddc6577e8858a51fb70b313baa505e2e11b70b Mon Sep 17 00:00:00 2001 From: Yasen Pramatarov Date: Mon, 29 Jul 2024 16:38:44 +0300 Subject: [PATCH] Adds widgets to participants page --- public_html/pages/conferences.php | 2 +- public_html/pages/participants.php | 495 ++++++----------------------- public_html/templates/widget.php | 8 + 3 files changed, 114 insertions(+), 391 deletions(-) diff --git a/public_html/pages/conferences.php b/public_html/pages/conferences.php index 52d3540..cfc7ac6 100644 --- a/public_html/pages/conferences.php +++ b/public_html/pages/conferences.php @@ -124,7 +124,7 @@ if (!empty($search)) { // prepare the widget $widget['full'] = false; -$widget['name'] = 'ConferenceId'; +$widget['name'] = 'Conferences'; $widget['collapsible'] = false; $widget['collapsed'] = false; $widget['filter'] = true; diff --git a/public_html/pages/participants.php b/public_html/pages/participants.php index 99b86c7..36c4d0b 100644 --- a/public_html/pages/participants.php +++ b/public_html/pages/participants.php @@ -23,18 +23,18 @@ if (!isset($_REQUEST['until_time']) || (isset($_REQUEST['until_time']) && $_REQU // either id, name, OR IP - in that order // we use $_REQUEST, so that both links and forms work if (isset($_REQUEST['id']) && $_REQUEST['id'] != '') { - $participant_id = $_REQUEST['id']; + $participantId = $_REQUEST['id']; unset($_REQUEST['name']); - unset($participant_name); + unset($participantName); } elseif (isset($_REQUEST['name']) && $_REQUEST['name'] != '') { - unset($participant_id); - $participant_name = $_REQUEST['name']; + unset($participantId); + $participantName = $_REQUEST['name']; } elseif (isset($_REQUEST['ip']) && $_REQUEST['ip'] != '') { - unset($participant_id); - $participant_ip = $_REQUEST['ip']; + unset($participantId); + $participantIp = $_REQUEST['ip']; } else { - unset($participant_id); - unset($participant_name); + unset($participantId); + unset($participantName); } // connect to database @@ -51,394 +51,109 @@ try { // Participant listings // +$participant = new Participant($db); // search and list specific participant ID -if (isset($participant_id)) { - - try { - $participant = new Participant($db); - - // prepare the result - $search = $participant->conferenceByParticipantId($participant_id, $from_time, $until_time, $participant_id, $from_time, $until_time); - - if (!empty($search)) { - $conferences = array(); - $conferences['records'] = array(); - - foreach ($search as $item) { - extract($item); - $conference_record = array( - // assign title to the field in the array record - 'time' => $time, - 'conference ID' => $conference_id, - 'conference name' => $conference_name, - 'conference host' => $conference_host, - 'loglevel' => $loglevel, - 'participant ID' => $participant_id, - 'event' => $event_type, - 'parameter' => $event_param - ); - // populate the result array - array_push($conferences['records'], $conference_record); - } - } - - } catch (Exception $e) { - $error = 'Error: ' . $e->getMessage(); - include 'templates/message.php'; - exit(); - } - - // display the result - echo "
\n"; - echo "
Conferences with participant ID matching \"$participant_id\""; - if ($time_range_specified) { - echo "
for the time period $from_time - $until_time"; - } - echo "
\n\n"; - - // filters - time selection and sorting dropdowns - include 'templates/results-filter.php'; - - echo "
\n\n"; - - // results table - echo "
\n"; - - if (!empty($conferences['records'])) { - - echo "\t\n"; - - echo "\t\t\n"; - echo "\t\t\t\n"; - - // table headers - foreach (array_keys($conferences['records'][0]) as $header) { - echo "\t\t\t\t\n"; - } - echo "\t\t\t\n"; - echo "\t\t\n"; - - echo "\t\t\n"; - - //table rows - foreach ($conferences['records'] as $row) { - echo "\t\t\t\n"; - $stats_id = false; - $participant_ip = false; - if ($row['event'] === 'stats_id') $stats_id = true; - if ($row['event'] === 'pair selected') $participant_ip = true; - // sometimes $column is empty, we make it '' then - foreach ($row as $key => $column) { - if ($key === 'participant ID' && $column === $participant_id) { - echo "\t\t\t\t\n"; - } elseif ($key === 'conference ID') { - echo "\t\t\t\t\n"; - } elseif ($key === 'conference name') { - echo "\t\t\t\t\n"; - } elseif ($stats_id && $key === 'parameter') { - echo "\t\t\t\t\n"; - } elseif ($participant_ip && $key === 'parameter') { - echo "\t\t\t\t\n"; - } else { - echo "\t\t\t\t\n"; - } - } - echo "\t\t\t\n"; - } - - echo "\t\t\n"; - echo "\t
" . htmlspecialchars($header) . "
" . htmlspecialchars($column ?? '') . "" . htmlspecialchars($column ?? '') . "" . htmlspecialchars($column ?? '') . "" . htmlspecialchars($column ?? '') . "" . htmlspecialchars($column ?? '') . "" . htmlspecialchars($column ?? '') . "
\n"; - - } else { - echo '

No matching conferences found.

'; - } - echo "\n
\n"; - - +if (isset($participantId)) { + $search = $participant->conferenceByParticipantId($participantId, $from_time, $until_time, $participantId, $from_time, $until_time); // search and list specific participant name (stats_id) -} elseif (isset($participant_name)) { - - try { - $participant = new Participant($db); - - // prepare the result - $search = $participant->conferenceByParticipantName($participant_name, $from_time, $until_time); - - if (!empty($search)) { - $conferences = array(); - $conferences['records'] = array(); - - foreach ($search as $item) { - extract($item); - $conference_record = array( - // assign title to the field in the array record - 'time' => $time, - 'conference ID' => $conference_id, - 'conference name' => $conference_name, - 'conference host' => $conference_host, - 'loglevel' => $loglevel, - 'participant ID' => $participant_id, - 'event' => $event_type, - 'parameter' => $event_param - ); - // populate the result array - array_push($conferences['records'], $conference_record); - } - } - - } catch (Exception $e) { - $error = 'Error: ' . $e->getMessage(); - include 'templates/message.php'; - exit(); - } - - // display the result - echo "
\n"; - echo "
Conferences with participant name (stats_id) matching \"$participant_name\""; - if ($time_range_specified) { - echo "
for the time period $from_time - $until_time"; - } - echo "
\n\n"; - - // filters - time selection and sorting dropdowns - include 'templates/results-filter.php'; - - echo "
\n\n"; - - // results table - echo "
\n"; - - if (!empty($conferences['records'])) { - - echo "\t\n"; - - echo "\t\t\n"; - echo "\t\t\t\n"; - - // table headers - foreach (array_keys($conferences['records'][0]) as $header) { - echo "\t\t\t\t\n"; - } - echo "\t\t\t\n"; - echo "\t\t\n"; - - echo "\t\t\n"; - - //table rows - foreach ($conferences['records'] as $row) { - echo "\t\t\t\n"; - // sometimes $column is empty, we make it '' then - foreach ($row as $key => $column) { - if ($key === 'parameter' && $column === $participant_name) { - echo "\t\t\t\t\n"; - } elseif ($key === 'conference ID') { - echo "\t\t\t\t\n"; - } elseif ($key === 'conference name') { - echo "\t\t\t\t\n"; - } elseif ($key === 'participant ID') { - echo "\t\t\t\t\n"; - } else { - echo "\t\t\t\t\n"; - } - } - echo "\t\t\t\n"; - } - - echo "\t\t\n"; - echo "\t
" . htmlspecialchars($header) . "
" . htmlspecialchars($column ?? '') . "" . htmlspecialchars($column ?? '') . "" . htmlspecialchars($column ?? '') . "" . htmlspecialchars($column ?? '') . "" . htmlspecialchars($column ?? '') . "
\n"; - - } else { - echo '

No matching conferences found.

'; - } - echo "\n
\n"; - - +} elseif (isset($participantName)) { + $search = $participant->conferenceByParticipantName($participantName, $from_time, $until_time); // search and list specific participant IP -} elseif (isset($participant_ip)) { - - try { - $participant = new Participant($db); - - // prepare the result - $search = $participant->conferenceByParticipantIP($participant_ip, $from_time, $until_time); - - if (!empty($search)) { - $conferences = array(); - $conferences['records'] = array(); - - foreach ($search as $item) { - extract($item); - $conference_record = array( - // assign title to the field in the array record - 'time' => $time, - 'conference ID' => $conference_id, - 'conference name' => $conference_name, - 'conference host' => $conference_host, - 'loglevel' => $loglevel, - 'participant ID' => $participant_id, - 'event' => $event_type, - 'parameter' => $event_param - ); - // populate the result array - array_push($conferences['records'], $conference_record); - } - } - - } catch (Exception $e) { - $error = 'Error: ' . $e->getMessage(); - include 'templates/message.php'; - exit(); - } - - // display the result - echo "
\n"; - echo "
Conferences with participant IP matching \"$participant_ip\""; - if ($time_range_specified) { - echo "
for the time period $from_time - $until_time"; - } - echo "
\n\n"; - - // filters - time selection and sorting dropdowns - include 'templates/results-filter.php'; - - echo "
\n\n"; - - // results table - echo "
\n"; - - if (!empty($conferences['records'])) { - - echo "\t\n"; - - echo "\t\t\n"; - echo "\t\t\t\n"; - - // table headers - foreach (array_keys($conferences['records'][0]) as $header) { - echo "\t\t\t\t\n"; - } - echo "\t\t\t\n"; - echo "\t\t\n"; - - echo "\t\t\n"; - - //table rows - foreach ($conferences['records'] as $row) { - echo "\t\t\t\n"; - // sometimes $column is empty, we make it '' then - foreach ($row as $key => $column) { - if ($key === 'parameter' && $column === $participant_ip) { - echo "\t\t\t\t\n"; - } elseif ($key === 'conference ID') { - echo "\t\t\t\t\n"; - } elseif ($key === 'conference name') { - echo "\t\t\t\t\n"; - } elseif ($key === 'participant ID') { - echo "\t\t\t\t\n"; - } else { - echo "\t\t\t\t\n"; - } - } - echo "\t\t\t\n"; - } - - echo "\t\t\n"; - echo "\t
" . htmlspecialchars($header) . "
" . htmlspecialchars($column ?? '') . "" . htmlspecialchars($column ?? '') . "" . htmlspecialchars($column ?? '') . "" . htmlspecialchars($column ?? '') . "" . htmlspecialchars($column ?? '') . "
\n"; - - } else { - echo '

No matching conferences found.

'; - } - echo "\n
\n"; - - +} elseif (isset($participantIp)) { + $search = $participant->conferenceByParticipantIP($participantIp, $from_time, $until_time); // list of all participants (default) } else { - try { - $participant = new Participant($db); - - // prepare the result - $search = $participant->participantsAll($from_time, $until_time); - - if (!empty($search)) { - $participants = array(); - $participants['records'] = array(); - - foreach ($search as $item) { - extract($item); - $participant_record = array( - // assign title to the field in the array record - 'component' => $jitsi_component, - 'participant ID' => $endpoint_id, - 'conference ID' => $conference_id, - ); - // populate the result array - array_push($participants['records'], $participant_record); - } - } - - } catch (Exception $e) { - $error = 'Error: ' . $e->getMessage(); - include 'templates/message.php'; - exit(); - } - - // display the result - echo "
\n"; - echo "
All participants"; - if ($time_range_specified) { - echo "
for the time period $from_time - $until_time"; - } - echo "
\n\n"; - - // filters - time selection and sorting dropdowns - include 'templates/results-filter.php'; - - echo "
\n\n"; - - // results table - echo "
\n"; - - if (!empty($participants['records'])) { - - echo "\t\n"; - - echo "\t\t\n"; - echo "\t\t\t\n"; - - // table headers - foreach (array_keys($participants['records'][0]) as $header) { - echo "\t\t\t\t\n"; - } - echo "\t\t\t\n"; - echo "\t\t\n"; - - echo "\t\t\n"; - - //table rows - foreach ($participants['records'] as $row) { - echo "\t\t\t\n"; - // sometimes $column is empty, we make it '' then - foreach ($row as $key => $column) { - if ($key === 'participant ID') { - echo "\t\t\t\t\n"; - } elseif ($key === 'conference ID') { - echo "\t\t\t\t\n"; - } else { - echo "\t\t\t\t\n"; - } - } - echo "\t\t\t\n"; - } - - echo "\t\t\n"; - echo "\t
" . htmlspecialchars($header) . "
" . htmlspecialchars($column ?? '') . "" . htmlspecialchars($column ?? '') . "" . htmlspecialchars($column ?? '') . "
\n"; - - } else { - echo '

No matching participants found.

'; - } - echo "\n
\n"; - +// prepare the result + $search = $participant->participantsAll($from_time, $until_time); } +if (!empty($search)) { + $participants = array(); + $participants['records'] = array(); + + foreach ($search as $item) { + extract($item); + + // search and list specific participant ID + if (isset($participantId)) { + $participant_record = array( + // assign title to the field in the array record + 'time' => $time, + 'conference ID' => $conference_id, + 'conference name' => $conference_name, + 'conference host' => $conference_host, + 'loglevel' => $loglevel, + 'participant ID' => $participant_id, + 'event' => $event_type, + 'parameter' => $event_param + ); + // search and list specific participant name (stats_id) + } elseif (isset($participantName)) { + $participant_record = array( + // assign title to the field in the array record + 'time' => $time, + 'conference ID' => $conference_id, + 'conference name' => $conference_name, + 'conference host' => $conference_host, + 'loglevel' => $loglevel, + 'participant ID' => $participant_id, + 'event' => $event_type, + 'parameter' => $event_param + ); + // search and list specific participant IP + } elseif (isset($participantIp)) { + $participant_record = array( + // assign title to the field in the array record + 'time' => $time, + 'conference ID' => $conference_id, + 'conference name' => $conference_name, + 'conference host' => $conference_host, + 'loglevel' => $loglevel, + 'participant ID' => $participant_id, + 'event' => $event_type, + 'parameter' => $event_param + ); + // list of all participants (default) + } else { + $participant_record = array( + // assign title to the field in the array record + 'component' => $jitsi_component, + 'participant ID' => $endpoint_id, + 'conference ID' => $conference_id + ); + } + + // populate the result array + array_push($participants['records'], $participant_record); + } +} + +// prepare the widget +$widget['full'] = false; +$widget['name'] = 'Participants'; +$widget['collapsible'] = false; +$widget['collapsed'] = false; +$widget['filter'] = true; + +// widget title +if (isset($_REQUEST['name']) && $_REQUEST['name'] != '') { + $widget['title'] = 'Conferences with participant name (stats_id) matching "' . $_REQUEST['name'] . '"'; +} elseif (isset($_REQUEST['id']) && $_REQUEST['id'] != '') { + $widget['title'] = 'Conference with participant ID matching "' . $_REQUEST['id'] . '"'; +} elseif (isset($participantIp)) { + $widget['title'] = 'Conference with participant IP matching "' . $participantIp . '"'; +} else { + $widget['title'] = 'All participants'; +} +// widget records +if (!empty($participants['records'])) { + $widget['full'] = true; + $widget['table_headers'] = array_keys($participants['records'][0]); + $widget['table_records'] = $participants['records']; +} + +// display the widget +include('templates/widget.php'); + ?> diff --git a/public_html/templates/widget.php b/public_html/templates/widget.php index e5ae1da..0da51a1 100644 --- a/public_html/templates/widget.php +++ b/public_html/templates/widget.php @@ -46,10 +46,18 @@ + + + + + + + +