mirror of
https://github.com/fusionpbx/fusionpbx.git
synced 2025-12-30 00:53:50 +00:00
Documentation, formatting (#7630)
* Documentation, formatting * Updated formatting to remove alignment * Updated spacing in the quoted script
This commit is contained in:
@@ -24,18 +24,34 @@
|
|||||||
Mark J Crane <markjcrane@fusionpbx.com>
|
Mark J Crane <markjcrane@fusionpbx.com>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generate pagination links and controls.
|
||||||
|
*
|
||||||
|
* @param int $num_rows Total number of rows.
|
||||||
|
* @param string $param URL parameters to sanitize.
|
||||||
|
* @param int $rows_per_page Number of rows per page.
|
||||||
|
* @param bool $mini Whether to display mini pagination (default: false).
|
||||||
|
* @param int $result_count Result count for last page handling.
|
||||||
|
*
|
||||||
|
* @return array Array containing pagination links and controls.
|
||||||
|
*/
|
||||||
function paging($num_rows, $param, $rows_per_page, $mini = false, $result_count = 0) {
|
function paging($num_rows, $param, $rows_per_page, $mini = false, $result_count = 0) {
|
||||||
|
|
||||||
//validate the data
|
//validate the data
|
||||||
if (!is_numeric($num_rows)) { $num_rows = 0; }
|
if (!is_numeric($num_rows)) {
|
||||||
if (!is_numeric($rows_per_page)) { $rows_per_page = 100; }
|
$num_rows = 0;
|
||||||
if (!is_numeric($result_count)) { $result_count = 0; }
|
}
|
||||||
|
if (!is_numeric($rows_per_page)) {
|
||||||
|
$rows_per_page = 100;
|
||||||
|
}
|
||||||
|
if (!is_numeric($result_count)) {
|
||||||
|
$result_count = 0;
|
||||||
|
}
|
||||||
|
|
||||||
// if $_get['page'] defined, use it as page number
|
// if $_get['page'] defined, use it as page number
|
||||||
if (isset($_GET['page']) && is_numeric($_GET['page'])) {
|
if (isset($_GET['page']) && is_numeric($_GET['page'])) {
|
||||||
$page_number = $_GET['page'];
|
$page_number = $_GET['page'];
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
$page_number = 0;
|
$page_number = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -44,15 +60,14 @@ function paging($num_rows, $param, $rows_per_page, $mini = false, $result_count
|
|||||||
if (isset($param) && !empty($param)) {
|
if (isset($param) && !empty($param)) {
|
||||||
$param_array = explode("&", $param);
|
$param_array = explode("&", $param);
|
||||||
if (is_array($param_array)) {
|
if (is_array($param_array)) {
|
||||||
foreach($param_array as $row) {
|
foreach ($param_array as $row) {
|
||||||
$param_sub_array = explode("=", $row);
|
$param_sub_array = explode("=", $row);
|
||||||
$key = preg_replace('#[^a-zA-Z0-9_\-]#', '', $param_sub_array['0']);
|
$key = preg_replace('#[^a-zA-Z0-9_\-]#', '', $param_sub_array['0']);
|
||||||
$value = urldecode($param_sub_array['1'] ?? '');
|
$value = urldecode($param_sub_array['1'] ?? '');
|
||||||
if ($key === 'order_by' && !empty($value)) {
|
if ($key === 'order_by' && !empty($value)) {
|
||||||
//validate order by
|
//validate order by
|
||||||
$sanitized_parameters .= "&order_by=". preg_replace('#[^a-zA-Z0-9_\-]#', '', $value);
|
$sanitized_parameters .= "&order_by=" . preg_replace('#[^a-zA-Z0-9_\-]#', '', $value);
|
||||||
}
|
} elseif ($key == 'order' && !empty($value)) {
|
||||||
else if ($key == 'order' && !empty($value)) {
|
|
||||||
//validate order
|
//validate order
|
||||||
switch ($value) {
|
switch ($value) {
|
||||||
case 'asc':
|
case 'asc':
|
||||||
@@ -62,12 +77,10 @@ function paging($num_rows, $param, $rows_per_page, $mini = false, $result_count
|
|||||||
$sanitized_parameters .= "&order=desc";
|
$sanitized_parameters .= "&order=desc";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
} elseif (!empty($value) && is_numeric($value)) {
|
||||||
else if (!empty($value) && is_numeric($value)) {
|
$sanitized_parameters .= "&" . $key . "=" . $value;
|
||||||
$sanitized_parameters .= "&".$key."=".$value;
|
} else {
|
||||||
}
|
$sanitized_parameters .= "&" . $key . "=" . urlencode($value ?? '');
|
||||||
else {
|
|
||||||
$sanitized_parameters .= "&".$key."=".urlencode($value ?? '');
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -75,114 +88,108 @@ function paging($num_rows, $param, $rows_per_page, $mini = false, $result_count
|
|||||||
|
|
||||||
//how many pages we have when using paging
|
//how many pages we have when using paging
|
||||||
if ($num_rows > 0) {
|
if ($num_rows > 0) {
|
||||||
$max_page = ceil($num_rows/$rows_per_page);
|
$max_page = ceil($num_rows / $rows_per_page);
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
$max_page = 1;
|
$max_page = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
//add multi-lingual support
|
//add multi-lingual support
|
||||||
$language = new text;
|
$language = new text;
|
||||||
$text = $language->get();
|
$text = $language->get();
|
||||||
|
|
||||||
//print the link to access each page
|
//print the link to access each page
|
||||||
$self = htmlspecialchars($_SERVER['PHP_SELF'], ENT_QUOTES, 'UTF-8');
|
$self = htmlspecialchars($_SERVER['PHP_SELF'], ENT_QUOTES, 'UTF-8');
|
||||||
$nav = '';
|
$nav = '';
|
||||||
for ($page = 1; $page <= $max_page; $page++){
|
for ($page = 1; $page <= $max_page; $page++) {
|
||||||
if ($page == $page_number) {
|
if ($page == $page_number) {
|
||||||
$nav .= " $page "; // no need to create a link to current page
|
$nav .= " $page "; // no need to create a link to current page
|
||||||
}
|
} else {
|
||||||
else {
|
$nav .= " <a href='" . $self . "?page=" . $page . "'>" . $page . "</a> \n";
|
||||||
$nav .= " <a href='".$self."?page=".$page."'>".$page."</a> \n";
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($page_number > 0) {
|
if ($page_number > 0) {
|
||||||
$page = $page_number - 1;
|
$page = $page_number - 1;
|
||||||
$prev = button::create(['type'=>'button','label'=>$text['button-back'],'icon'=>'chevron-left','link'=>$self."?page=".$page.$sanitized_parameters,'title'=>$text['label-page'].' '.($page+1)]);
|
$prev = button::create(['type' => 'button', 'label' => $text['button-back'], 'icon' => 'chevron-left', 'link' => $self . "?page=" . $page . $sanitized_parameters, 'title' => $text['label-page'] . ' ' . ($page + 1)]);
|
||||||
$first = button::create(['type'=>'button','label'=>$text['button-next'],'icon'=>'chevron-left','link'=>$self."?page=1".$sanitized_parameters]);
|
$first = button::create(['type' => 'button', 'label' => $text['button-next'], 'icon' => 'chevron-left', 'link' => $self . "?page=1" . $sanitized_parameters]);
|
||||||
}
|
} else {
|
||||||
else {
|
$prev = button::create(['type' => 'button', 'label' => $text['button-back'], 'icon' => 'chevron-left', 'onclick' => "return false;", 'title' => '', 'style' => 'opacity: 0.4; -moz-opacity: 0.4; cursor: default;']);
|
||||||
$prev = button::create(['type'=>'button','label'=>$text['button-back'],'icon'=>'chevron-left','onclick'=>"return false;",'title'=>'','style'=>'opacity: 0.4; -moz-opacity: 0.4; cursor: default;']);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (($page_number + 1) < $max_page) {
|
if (($page_number + 1) < $max_page) {
|
||||||
$page = $page_number + 1;
|
$page = $page_number + 1;
|
||||||
$next = button::create(['type'=>'button','label'=>$text['button-next'],'icon'=>'chevron-right','link'=>$self."?page=".$page.$sanitized_parameters,'title'=>$text['label-page'].' '.($page+1)]);
|
$next = button::create(['type' => 'button', 'label' => $text['button-next'], 'icon' => 'chevron-right', 'link' => $self . "?page=" . $page . $sanitized_parameters, 'title' => $text['label-page'] . ' ' . ($page + 1)]);
|
||||||
$last = button::create(['type'=>'button','label'=>$text['button-back'],'icon'=>'chevron-right','link'=>$self."?page=".$max_page.$sanitized_parameters]);
|
$last = button::create(['type' => 'button', 'label' => $text['button-back'], 'icon' => 'chevron-right', 'link' => $self . "?page=" . $max_page . $sanitized_parameters]);
|
||||||
}
|
} else {
|
||||||
else {
|
$last = button::create(['type' => 'button', 'label' => $text['button-next'], 'icon' => 'chevron-right', 'link' => $self . "?page=" . $max_page . $sanitized_parameters]);
|
||||||
$last = button::create(['type'=>'button','label'=>$text['button-next'],'icon'=>'chevron-right','link'=>$self."?page=".$max_page.$sanitized_parameters]);
|
$next = button::create(['type' => 'button', 'label' => $text['button-next'], 'icon' => 'chevron-right', 'onclick' => "return false;", 'title' => '', 'style' => 'opacity: 0.4; -moz-opacity: 0.4; cursor: default;']);
|
||||||
$next = button::create(['type'=>'button','label'=>$text['button-next'],'icon'=>'chevron-right','onclick'=>"return false;",'title'=>'','style'=>'opacity: 0.4; -moz-opacity: 0.4; cursor: default;']);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//if the result count is less than the rows per page then this is the last page of results
|
//if the result count is less than the rows per page then this is the last page of results
|
||||||
if ($result_count > 0 and $result_count < $rows_per_page) {
|
if ($result_count > 0 and $result_count < $rows_per_page) {
|
||||||
$next = button::create(['type'=>'button','label'=>(!$mini ? $text['button-next'] : null),'icon'=>'chevron-right','onclick'=>"return false;",'title'=>'','style'=>'opacity: 0.4; -moz-opacity: 0.4; cursor: default;']);
|
$next = button::create(['type' => 'button', 'label' => (!$mini ? $text['button-next'] : null), 'icon' => 'chevron-right', 'onclick' => "return false;", 'title' => '', 'style' => 'opacity: 0.4; -moz-opacity: 0.4; cursor: default;']);
|
||||||
}
|
}
|
||||||
|
|
||||||
$array = array();
|
$array = [];
|
||||||
$code = '';
|
$code = '';
|
||||||
if ($max_page > 1) {
|
if ($max_page > 1) {
|
||||||
//define javascript to include
|
//define javascript to include
|
||||||
$script = "<script>\n".
|
$script = "<script>\n" .
|
||||||
"function go(e) {\n".
|
" function go(e) {\n" .
|
||||||
"var page_num;\n".
|
" var page_num;\n" .
|
||||||
"page_num = document.getElementById('paging_page_num').value;\n".
|
" page_num = document.getElementById('paging_page_num').value;\n" .
|
||||||
|
|
||||||
"do_action = false;\n".
|
" do_action = false;\n" .
|
||||||
"if (e != null) {\n".
|
" if (e != null) {\n" .
|
||||||
"// called from a form field keypress event\n".
|
" // called from a form field keypress event\n" .
|
||||||
"var keyevent;\n".
|
" var keyevent;\n" .
|
||||||
"var keychar;\n".
|
" var keychar;\n" .
|
||||||
|
|
||||||
"if (window.event) { keyevent = e.keyCode; }\n".
|
" if (window.event) { keyevent = e.keyCode; }\n" .
|
||||||
"else if (e.which) { keyevent = e.which; }\n".
|
" else if (e.which) { keyevent = e.which; }\n" .
|
||||||
|
|
||||||
"keychar = keyevent;\n".
|
" keychar = keyevent;\n" .
|
||||||
"if (keychar == 13) {\n".
|
" if (keychar == 13) {\n" .
|
||||||
"do_action = true;\n".
|
" do_action = true;\n" .
|
||||||
"}\n".
|
" }\n" .
|
||||||
"else {\n".
|
" else {\n" .
|
||||||
"keychar;\n".
|
" keychar;\n" .
|
||||||
"return true;\n".
|
" return true;\n" .
|
||||||
"}\n".
|
" }\n" .
|
||||||
"}\n".
|
" }\n" .
|
||||||
"else {\n".
|
" else {\n" .
|
||||||
"// called from something else (non-keypress)\n".
|
" // called from something else (non-keypress)\n" .
|
||||||
"do_action = true;\n".
|
" do_action = true;\n" .
|
||||||
"}\n".
|
" }\n" .
|
||||||
|
|
||||||
"if (do_action) {\n".
|
" if (do_action) {\n" .
|
||||||
"// action to peform when enter is hit\n".
|
" // action to perform when enter is hit\n" .
|
||||||
"if (page_num < 1) { page_num = 1; }\n".
|
" if (page_num < 1) { page_num = 1; }\n" .
|
||||||
"if (page_num > ".$max_page.") { page_num = ".$max_page."; }\n".
|
" if (page_num > " . $max_page . ") { page_num = " . $max_page . "; }\n" .
|
||||||
"document.location.href = '".$self."?page='+(--page_num)+'".$sanitized_parameters."';\n".
|
" document.location.href = '" . $self . "?page='+(--page_num)+'" . $sanitized_parameters . "';\n" .
|
||||||
"return false;\n".
|
" return false;\n" .
|
||||||
"}\n".
|
" }\n" .
|
||||||
"}\n".
|
" }\n" .
|
||||||
"</script>\n";
|
"</script>\n";
|
||||||
//determine size
|
//determine size
|
||||||
if ($mini) {
|
if ($mini) {
|
||||||
$code = "<span style='white-space: nowrap;'>".$prev.$next."</span>\n".$script;
|
$code = "<span style='white-space: nowrap;'>" . $prev . $next . "</span>\n" . $script;
|
||||||
}
|
} else {
|
||||||
else {
|
$code .= "<center style='white-space: nowrap;'>";
|
||||||
$code .= "<center style='white-space: nowrap;'>";
|
$code .= " " . $prev;
|
||||||
$code .= " ".$prev;
|
$code .= " ";
|
||||||
$code .= " ";
|
$code .= " <input id='paging_page_num' class='formfld' style='max-width: 50px; min-width: 50px; text-align: center;' type='text' value='" . ($page_number + 1) . "' onfocus='this.select();' onkeypress='return go(event);'>";
|
||||||
$code .= " <input id='paging_page_num' class='formfld' style='max-width: 50px; min-width: 50px; text-align: center;' type='text' value='".($page_number+1)."' onfocus='this.select();' onkeypress='return go(event);'>";
|
if ($result_count == 0) {
|
||||||
if ($result_count == 0) {
|
$code .= " <strong>" . $max_page . "</strong>";
|
||||||
$code .= " <strong>".$max_page."</strong>";
|
|
||||||
}
|
|
||||||
$code .= " ";
|
|
||||||
$code .= " ".$next;
|
|
||||||
$code .= "</center>\n".$script;
|
|
||||||
}
|
}
|
||||||
|
$code .= " ";
|
||||||
|
$code .= " " . $next;
|
||||||
|
$code .= "</center>\n" . $script;
|
||||||
|
}
|
||||||
|
|
||||||
//add to array
|
//add to array
|
||||||
$array[] = $code;
|
$array[] = $code;
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
$array[] = "";
|
$array[] = "";
|
||||||
}
|
}
|
||||||
$array[] = $rows_per_page;
|
$array[] = $rows_per_page;
|
||||||
@@ -190,5 +197,3 @@ function paging($num_rows, $param, $rows_per_page, $mini = false, $result_count
|
|||||||
return $array;
|
return $array;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
|
||||||
|
|||||||
Reference in New Issue
Block a user