-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcommonFunctions.php
More file actions
185 lines (138 loc) · 4.38 KB
/
commonFunctions.php
File metadata and controls
185 lines (138 loc) · 4.38 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
<?php
/*
* Set of common functions.
* Update: 2016-04-02, testing VS Code and Git.
* __DIR__: the path to the web folder, for example: /var/www/html.
*/
/**
* Sets the error handling options for the site.
*/
function SetErrorsHandling () {
/* For development, comment on production. */
ini_set("display_errors", 1);
ini_set("display_startup_errors", 1);
error_reporting(E_ALL);
}
/**
* Returns the url parameter value.
*/
function GetUrlParam ($paramName, $defaultValue) {
if (isset($_GET[$paramName])) {
return $_GET[$paramName];
}
return $defaultValue;
}
/**
* Returns the value for the select/option attribute.
*/
function IsSelected ($optionValue, $currentValue) {
if ($optionValue == $currentValue) {
return " selected=\"selected\"";
}
return "";
}
/**
* Returns the html code for the paged list navigation.
* Prev 5 6 7 [8] 9 10 11 Next
* @param $navPages - the number of links before and after the current page.
*/
function HtmlPageNavigation ($page, $pageSize, $totalPages, $totalRecords, $navPages) {
if ($totalPages < 1) {
return "";
}
$res = "";
$delim = ""; // delimeter before the new page parameter.
$url = strtok ("http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]", "?"); // url without the query string
// 1. get the query string
$qs = $_SERVER["QUERY_STRING"];
// 2. remote the page=nnn string
$qs = preg_replace ('/&{0,1}page=\d*/i', '', $qs);
// 3. remove possible & in the string beginning.
$qs = preg_replace ('/^&/', '', $qs);
// First and Last pages in the control
// Start navigation from
$navFrom = $page - $navPages;
if ($navFrom < 1) {
$navFrom = 1;
}
// End navigation with
$navTo = $navFrom + $navPages * 2;
if ($navTo > $totalPages) {
$navTo = $totalPages;
// Correct NavFrom
$navFrom = $navTo - $navPages * 2;
if ($navFrom < 1) {
$navFrom = 1;
}
}
if ($page > 1) {
// Prev page, << character.
$res .= '<a href="' . HtmlMakePagedUrl ($url, $qs, $page - 1) . '">«</a> ';
}
if ($navFrom > 1) {
// First page
$res .= '<a href="' . HtmlMakePagedUrl ($url, $qs, 1) . '">1</a>…';
}
// Page links
for ($i = $navFrom; $i <= $navTo; $i++) {
if ($i == $page) {
$res .= '<b>' . $i . '</b>';
}
else {
$res .= '<a href="' . HtmlMakePagedUrl ($url, $qs, $i) . '">' . $i . '</a>';
}
}
if ($navTo < $totalPages) {
// Last page
$res .= '…<a href="' . HtmlMakePagedUrl ($url, $qs, $totalPages) . '">' . $totalPages . '</a>';
}
if ($page < $totalPages) {
// Next page
$res .= '<a href="' . HtmlMakePagedUrl ($url, $qs, $page + 1) . '">»</a> ';
}
return '<div class="page-nav">' . $res . '</div>';
}
// Returns the url for the page navigation link.
function HtmlMakePagedUrl ($url, $qs, $page) {
$pageParam = "page=" . $page;
$delim = "?";
if (strlen ($qs) > 0) {
return $url . "?" . $qs . "&" . $pageParam ;
}
return $url . "?" . $pageParam ;
}
/**
* Represents the records range for paged lists.
*/
class RecordsRange {
public $Page = 0;
public $PageSize = 25;
public $TotalPages = 0;
public $TotalRecords = 0;
public $StartRecordNumber = 0;
public $EndRecordNumber = 24;
/**
* Processes the parameters and set the instance values;
*/
public function __construct ($totalRecords, $page, $pageSize) {
$this->Page = intval ($page);
$this->PageSize = intval ($pageSize);
if ($this->PageSize < 1) {
$this->PageSize = 1;
}
$this->TotalRecords = intval ($totalRecords);
$this->TotalPages = intval (ceil ($this->TotalRecords / $this->PageSize));
if ($this->Page < 1 || $this->Page > $this->TotalPages) {
$this->Page = 1;
}
// page 1: 0 ... pageSize - 1
// page 2: pageSize ... pageSize * 2 - 1
// page i: pageSize * (page - 1) ... pageSize * (page) - 1
$this->StartRecordNumber = ($this->Page - 1) * $this->PageSize;
$this->EndRecordNumber = $this->StartRecordNumber + $this->PageSize - 1;
if ($this->TotalRecords > 0 && $this->EndRecordNumber >= $this->TotalRecords) {
$this->EndRecordNumber = $this->TotalRecords - 1;
}
}
}
?>