diff --git a/app/classes/conference.php b/app/classes/conference.php index 4a5813e..8dd79c0 100644 --- a/app/classes/conference.php +++ b/app/classes/conference.php @@ -9,7 +9,7 @@ class Conference { // search/list specific conference ID - public function conferenceById($conference_id, $from_time, $until_time) { + public function conferenceById($conference_id, $from_time, $until_time, $offset=0, $items_per_page='') { // time period drill-down // FIXME make it similar to the bash version @@ -69,6 +69,11 @@ AND (event_time >= '%s 00:00:00' AND event_time <= '%s 23:59:59') ORDER BY pe.time"; + if ($items_per_page) { + $items_per_page = (int)$items_per_page; + $sql .= ' LIMIT ' . $offset . ',' . $items_per_page; + } + $sql = sprintf($sql, $conference_id, $from_time, $until_time, $conference_id, $from_time, $until_time); $query = $this->db->prepare($sql); @@ -79,7 +84,7 @@ ORDER BY // search/list specific conference name - public function conferenceByName($conference_name, $from_time, $until_time) { + public function conferenceByName($conference_name, $from_time, $until_time, $offset=0, $items_per_page='') { // time period drill-down // FIXME make it similar to the bash version @@ -139,6 +144,11 @@ AND (event_time >= '%s 00:00:00' AND event_time <= '%s 23:59:59') ORDER BY pe.time"; + if ($items_per_page) { + $items_per_page = (int)$items_per_page; + $sql .= ' LIMIT ' . $offset . ',' . $items_per_page; + } + $sql = sprintf($sql, $conference_name, $from_time, $until_time, $conference_name, $from_time, $until_time); $query = $this->db->prepare($sql); @@ -149,7 +159,7 @@ ORDER BY // list of all conferences - public function conferencesAllFormatted($from_time, $until_time) { + public function conferencesAllFormatted($from_time, $until_time, $offset=0, $items_per_page='') { // time period drill-down // FIXME make it similar to the bash version @@ -234,6 +244,11 @@ WHERE (ce.time >= '%s 00:00:00' AND ce.time <= '%s 23:59:59') ORDER BY c.id"; + if ($items_per_page) { + $items_per_page = (int)$items_per_page; + $sql .= ' LIMIT ' . $offset . ',' . $items_per_page; + } + $sql = sprintf($sql, $from_time, $until_time); $query = $this->db->prepare($sql); diff --git a/app/classes/participant.php b/app/classes/participant.php index 373ca31..d3ab0cf 100644 --- a/app/classes/participant.php +++ b/app/classes/participant.php @@ -9,7 +9,7 @@ class Participant { // search/list specific participant ID - public function conferenceByParticipantId($participant_id, $from_time, $until_time) { + public function conferenceByParticipantId($participant_id, $from_time, $until_time, $offset=0, $items_per_page='') { // time period drill-down // FIXME make it similar to the bash version @@ -69,6 +69,11 @@ AND (event_time >= '%s 00:00:00' AND event_time <= '%s 23:59:59') ORDER BY pe.time"; + if ($items_per_page) { + $items_per_page = (int)$items_per_page; + $sql .= ' LIMIT ' . $offset . ',' . $items_per_page; + } + $sql = sprintf($sql, $participant_id, $from_time, $until_time, $participant_id, $from_time, $until_time); $query = $this->db->prepare($sql); @@ -79,7 +84,7 @@ ORDER BY // search/list specific participant name (stats_id) - public function conferenceByParticipantName($participant_name, $from_time, $until_time) { + public function conferenceByParticipantName($participant_name, $from_time, $until_time, $offset=0, $items_per_page='') { // time period drill-down // FIXME make it similar to the bash version @@ -139,6 +144,11 @@ AND (event_time >= '%s 00:00:00' AND event_time <= '%s 23:59:59') ORDER BY pe.time"; + if ($items_per_page) { + $items_per_page = (int)$items_per_page; + $sql .= ' LIMIT ' . $offset . ',' . $items_per_page; + } + $sql = sprintf($sql, $participant_name, $from_time, $until_time, $participant_name, $from_time, $until_time); $query = $this->db->prepare($sql); @@ -149,7 +159,7 @@ ORDER BY // search/list specific participant IP - public function conferenceByParticipantIP($participant_ip, $from_time, $until_time) { + public function conferenceByParticipantIP($participant_ip, $from_time, $until_time, $offset=0, $items_per_page='') { // time period drill-down // FIXME make it similar to the bash version @@ -209,6 +219,11 @@ AND (event_time >= '%s 00:00:00' AND event_time <= '%s 23:59:59') ORDER BY pe.time"; + if ($items_per_page) { + $items_per_page = (int)$items_per_page; + $sql .= ' LIMIT ' . $offset . ',' . $items_per_page; + } + $sql = sprintf($sql, $participant_ip, $from_time, $until_time, $participant_ip, $from_time, $until_time); $query = $this->db->prepare($sql); @@ -219,7 +234,7 @@ ORDER BY // list of all participants - public function participantsAll($from_time, $until_time) { + public function participantsAll($from_time, $until_time, $offset=0, $items_per_page='') { // time period drill-down // FIXME make it similar to the bash version @@ -246,6 +261,11 @@ WHERE pe.time >= '%s 00:00:00' AND pe.time <= '%s 23:59:59' ORDER BY p.id"; + if ($items_per_page) { + $items_per_page = (int)$items_per_page; + $sql .= ' LIMIT ' . $offset . ',' . $items_per_page; + } + $sql = sprintf($sql, $from_time, $until_time); $query = $this->db->prepare($sql); diff --git a/app/helpers/pagination.php b/app/helpers/pagination.php new file mode 100644 index 0000000..c48b3eb --- /dev/null +++ b/app/helpers/pagination.php @@ -0,0 +1,47 @@ + +
+ +
diff --git a/app/pages/conferences.php b/app/pages/conferences.php index 6630927..30308c0 100644 --- a/app/pages/conferences.php +++ b/app/pages/conferences.php @@ -31,18 +31,31 @@ if (isset($_REQUEST['id']) && $_REQUEST['id'] != '') { $conferenceObject = new Conference($db); +// pagination variables +$items_per_page = 15; +$browse_page = $_REQUEST['p'] ?? 1; +$browse_page = (int)$browse_page; +$offset = ($browse_page -1) * $items_per_page; + // search and list specific conference ID if (isset($conferenceId)) { - $search = $conferenceObject->conferenceById($conferenceId, $from_time, $until_time); + $search = $conferenceObject->conferenceById($conferenceId, $from_time, $until_time, $offset, $items_per_page); + $search_all = $conferenceObject->conferenceById($conferenceId, $from_time, $until_time); // search and list specific conference name } elseif (isset($conferenceName)) { - $search = $conferenceObject->conferenceByName($conferenceName, $from_time, $until_time); + $search = $conferenceObject->conferenceByName($conferenceName, $from_time, $until_time, $offset, $items_per_page); + $search_all = $conferenceObject->conferenceByName($conferenceName, $from_time, $until_time); // list of all conferences (default) } else { - $search = $conferenceObject->conferencesAllFormatted($from_time, $until_time); + $search = $conferenceObject->conferencesAllFormatted($from_time, $until_time, $offset, $items_per_page); + $search_all = $conferenceObject->conferencesAllFormatted($from_time, $until_time); } if (!empty($search)) { + // we get total items and number of pages + $item_count = count($search_all); + $page_count = ceil($item_count / $items_per_page); + $conferences = array(); $conferences['records'] = array(); @@ -109,6 +122,7 @@ $widget['name'] = 'Conferences'; $widget['collapsible'] = false; $widget['collapsed'] = false; $widget['filter'] = true; +$widget['pagination'] = true; // widget title if (isset($_REQUEST['name']) && $_REQUEST['name'] != '') { diff --git a/app/pages/participants.php b/app/pages/participants.php index fcc0f5a..3705741 100644 --- a/app/pages/participants.php +++ b/app/pages/participants.php @@ -34,22 +34,36 @@ if (isset($_REQUEST['id']) && $_REQUEST['id'] != '') { $participantObject = new Participant($db); +// pagination variables +$items_per_page = 15; +$browse_page = $_REQUEST['p'] ?? 1; +$browse_page = (int)$browse_page; +$offset = ($browse_page -1) * $items_per_page; + // search and list specific participant ID if (isset($participantId)) { - $search = $participantObject->conferenceByParticipantId($participantId, $from_time, $until_time, $participantId, $from_time, $until_time); + $search = $participantObject->conferenceByParticipantId($participantId, $from_time, $until_time, $offset, $items_per_page); + $search_all = $participantObject->conferenceByParticipantId($participantId, $from_time, $until_time); // search and list specific participant name (stats_id) } elseif (isset($participantName)) { - $search = $participantObject->conferenceByParticipantName($participantName, $from_time, $until_time); + $search = $participantObject->conferenceByParticipantName($participantName, $from_time, $until_time, $offset, $items_per_page); + $search_all = $participantObject->conferenceByParticipantName($participantName, $from_time, $until_time); // search and list specific participant IP } elseif (isset($participantIp)) { - $search = $participantObject->conferenceByParticipantIP($participantIp, $from_time, $until_time); + $search = $participantObject->conferenceByParticipantIP($participantIp, $from_time, $until_time, $offset, $items_per_page); + $search_all = $participantObject->conferenceByParticipantIP($participantIp, $from_time, $until_time); // list of all participants (default) } else { // prepare the result - $search = $participantObject->participantsAll($from_time, $until_time); + $search = $participantObject->participantsAll($from_time, $until_time, $offset, $items_per_page); + $search_all = $participantObject->participantsAll($from_time, $until_time); } if (!empty($search)) { + // we get total items and number of pages + $item_count = count($search_all); + $page_count = ceil($item_count / $items_per_page); + $participants = array(); $participants['records'] = array(); @@ -116,6 +130,7 @@ $widget['name'] = 'Participants'; $widget['collapsible'] = false; $widget['collapsed'] = false; $widget['filter'] = true; +$widget['pagination'] = true; // widget title if (isset($_REQUEST['name']) && $_REQUEST['name'] != '') { diff --git a/app/templates/widget.php b/app/templates/widget.php index 8e2fe8f..53051fc 100644 --- a/app/templates/widget.php +++ b/app/templates/widget.php @@ -68,6 +68,12 @@ + $items_per_page) { + $url = "$app_root?platform=$platform_id&page=$page"; + include '../app/helpers/pagination.php'; +} +?>

No matching records found.

diff --git a/public_html/static/all.css b/public_html/static/all.css index a3c1786..18429d9 100644 --- a/public_html/static/all.css +++ b/public_html/static/all.css @@ -230,3 +230,13 @@ left: 5px; } +.pagination { + font-size: 0.66em; + text-align: center; + display: block; +} + +.pagination span { + margin-left: 5px; + margin-right: 5px; +}