@@ -18,7 +18,7 @@ discard block |
||
| 18 | 18 | public static $pageExt; |
| 19 | 19 | |
| 20 | 20 | protected static function ths() { |
| 21 | - if (self::$cols) { |
|
| 21 | + if (self::$cols) { |
|
| 22 | 22 | $ths = []; |
| 23 | 23 | for ($i = 0; $i < sizeof(self::$cols); $i++) { |
| 24 | 24 | list($lbl, $col, $arg) = array_pad(self::$cols[$i], 3, null); |
@@ -74,8 +74,8 @@ discard block |
||
| 74 | 74 | $ths[] = $th; |
| 75 | 75 | } |
| 76 | 76 | return implode('', $ths); |
| 77 | - } |
|
| 78 | - } |
|
| 77 | + } |
|
| 78 | + } |
|
| 79 | 79 | |
| 80 | 80 | /** Adds conditions, orderBy and Limits to query. |
| 81 | 81 | * @param string $q |
@@ -103,7 +103,7 @@ discard block |
||
| 103 | 103 | ''; |
| 104 | 104 | |
| 105 | 105 | return $q . $c . $o . $l; |
| 106 | - } |
|
| 106 | + } |
|
| 107 | 107 | |
| 108 | 108 | protected static function exportData(){ |
| 109 | 109 | $data = self::$exportDataAsDisplayed ? |
@@ -200,7 +200,7 @@ discard block |
||
| 200 | 200 | |
| 201 | 201 | if(self::$exportActive === true){ |
| 202 | 202 | $url = strtok(self::$t['slug'],"?&") . ".json?table=" . |
| 203 | - self::$t['items'] . "&export="; |
|
| 203 | + self::$t['items'] . "&export="; |
|
| 204 | 204 | $v["export"] = ["url"=>$url, "types"=>self::config('SAVES')]; |
| 205 | 205 | } |
| 206 | 206 | |
@@ -23,51 +23,48 @@ discard block |
||
| 23 | 23 | for ($i = 0; $i < sizeof(self::$cols); $i++) { |
| 24 | 24 | list($lbl, $col, $arg) = array_pad(self::$cols[$i], 3, null); |
| 25 | 25 | |
| 26 | - if(is_null($col)){ $arg['sort']=false;} |
|
| 26 | + if (is_null($col)) { $arg['sort'] = false; } |
|
| 27 | 27 | |
| 28 | 28 | $sortable = !isset($arg['sort']) || $arg['sort'] !== false; |
| 29 | 29 | |
| 30 | 30 | $sort = $sortable ? |
| 31 | - (isset($arg['sort']) ? $arg['sort'] : $col) : |
|
| 32 | - null; |
|
| 31 | + (isset($arg['sort']) ? $arg['sort'] : $col) : null; |
|
| 33 | 32 | |
| 34 | - if(($del = isset($arg['type']) && $arg['type'] == 'delete')){ |
|
| 33 | + if (($del = isset($arg['type']) && $arg['type'] == 'delete')) { |
|
| 35 | 34 | $sortable = false; |
| 36 | - if(!isset($arg['width']) && |
|
| 35 | + if (!isset($arg['width']) && |
|
| 37 | 36 | false === strpos($arg['width'], 'width:') |
| 38 | 37 | ) { |
| 39 | 38 | $arg['width'] = '1%'; |
| 40 | 39 | } |
| 41 | 40 | } |
| 42 | 41 | |
| 43 | - if(isset($arg['width'])) { // Width attribute -> style |
|
| 42 | + if (isset($arg['width'])) { // Width attribute -> style |
|
| 44 | 43 | $width = 'width:' . $arg['width'] . ';'; |
| 45 | 44 | $arg['style'] = isset($arg['style']) ? |
| 46 | - $width . $arg['style'] : |
|
| 47 | - $width; |
|
| 45 | + $width . $arg['style'] : $width; |
|
| 48 | 46 | } |
| 49 | 47 | |
| 50 | 48 | $attr = array_diff_key((array)$arg, ['sort', 'type', 'width']); |
| 51 | 49 | |
| 52 | 50 | $th = '<th' . self::attributes($attr) . '>'; |
| 53 | - if($sortable){ |
|
| 51 | + if ($sortable) { |
|
| 54 | 52 | $th .= '<a onclick="table.Sort(' . $i . ',this);">'; |
| 55 | 53 | } |
| 56 | 54 | if (!$del) { |
| 57 | - if($sort == self::$t['order']['col']) { |
|
| 55 | + if ($sort == self::$t['order']['col']) { |
|
| 58 | 56 | $span = self::$t['order']['dir'] === 'desc' ? |
| 59 | - self::config('UTF8_DESC_SYMBOL') : |
|
| 60 | - self::config('UTF8_ASC_SYMBOL'); |
|
| 57 | + self::config('UTF8_DESC_SYMBOL') : self::config('UTF8_ASC_SYMBOL'); |
|
| 61 | 58 | } else { |
| 62 | 59 | $span = ""; |
| 63 | 60 | } |
| 64 | 61 | $th .= '<span>' . $span . '</span>' . $lbl; |
| 65 | 62 | } else { |
| 66 | - $th .= '<input id="'.self::$t['items'].'CheckDeleteAll"' . |
|
| 63 | + $th .= '<input id="' . self::$t['items'] . 'CheckDeleteAll"' . |
|
| 67 | 64 | ' onclick=\"checkAllDeleteCheckboxes(this,' . |
| 68 | - ' \''.self::$t['items'].'\')" type="checkbox"/>'; |
|
| 65 | + ' \'' . self::$t['items'] . '\')" type="checkbox"/>'; |
|
| 69 | 66 | } |
| 70 | - if($sortable){ |
|
| 67 | + if ($sortable) { |
|
| 71 | 68 | $th .= '</a>'; |
| 72 | 69 | } |
| 73 | 70 | $th .= '</th>'; |
@@ -84,11 +81,10 @@ discard block |
||
| 84 | 81 | * @param int|arr $limit -> 5 or [$start, $count] |
| 85 | 82 | * @param bool $h Having flag - to use HAVING instead of WHERE |
| 86 | 83 | * @return (string) */ |
| 87 | - protected static function q($q, $cond=null, $order=[], $limit=0, $h=false){ |
|
| 84 | + protected static function q($q, $cond = null, $order = [], $limit = 0, $h = false) { |
|
| 88 | 85 | //Condition: '' | '(HAVING|WHERE|AND) ' . $cond |
| 89 | - $c = !empty($cond) && !strpos($q, ($cl = !$h ? 'WHERE' : 'HAVING')) ? |
|
| 90 | - (' ' . (!strpos($q, $cl) ? $cl : ' AND ') .' ' . $cond ) : |
|
| 91 | - ''; |
|
| 86 | + $c = !empty($cond) && !strpos($q, ($cl = !$h ? 'WHERE' : 'HAVING')) ? |
|
| 87 | + (' ' . (!strpos($q, $cl) ? $cl : ' AND ') . ' ' . $cond) : ''; |
|
| 92 | 88 | //Order: '' | 'ORDER BY ' . array_keys($order)[0] . ' ' . $order[0] |
| 93 | 89 | $o = !empty($order) ? |
| 94 | 90 | ' ORDER BY ' . implode(', ', |
@@ -99,35 +95,33 @@ discard block |
||
| 99 | 95 | ''; |
| 100 | 96 | //Limit: '' | ' LIMIT ' . '(20, 40|20)' |
| 101 | 97 | $l = !empty($limit) ? |
| 102 | - (' LIMIT ' . (is_array($limit) ? implode(', ',$limit) : $limit)) : |
|
| 103 | - ''; |
|
| 98 | + (' LIMIT ' . (is_array($limit) ? implode(', ', $limit) : $limit)) : ''; |
|
| 104 | 99 | |
| 105 | 100 | return $q . $c . $o . $l; |
| 106 | 101 | } |
| 107 | 102 | |
| 108 | - protected static function exportData(){ |
|
| 103 | + protected static function exportData() { |
|
| 109 | 104 | $data = self::$exportDataAsDisplayed ? |
| 110 | - self::$data : |
|
| 111 | - self::select(self::$t['q']); |
|
| 105 | + self::$data : self::select(self::$t['q']); |
|
| 112 | 106 | $fnReplace = []; |
| 113 | - $fnReplace[':app']= self::$app; |
|
| 114 | - $fnReplace[':items']= self::$t['items']; |
|
| 107 | + $fnReplace[':app'] = self::$app; |
|
| 108 | + $fnReplace[':items'] = self::$t['items']; |
|
| 115 | 109 | $format = str_replace(':', ' ', GLOBAL_MYSQL_DATETIME_LONG); |
| 116 | 110 | $timeQuery = 'SELECT DATE_FORMAT(Now(), "' . $format . '") AS `now`;'; |
| 117 | 111 | $fnReplace[':datetime'] = self::select($timeQuery); |
| 118 | 112 | $outFilename = strtr(self::config('EXPORT_FILE_NAME'), $fnReplace); |
| 119 | 113 | $outColumns = []; |
| 120 | - foreach(self::$cols as $c){ |
|
| 121 | - if(isset($c[2]['sort']) && $c[2]['sort']===false){continue;} |
|
| 114 | + foreach (self::$cols as $c) { |
|
| 115 | + if (isset($c[2]['sort']) && $c[2]['sort'] === false) {continue; } |
|
| 122 | 116 | $outColumns[] = $c[1]; |
| 123 | 117 | $outHeader[] = $c[0]; |
| 124 | 118 | } |
| 125 | 119 | $eData = [$outHeader]; |
| 126 | - if(count($data) > 0) { |
|
| 127 | - foreach($data as $k => $row){ |
|
| 120 | + if (count($data) > 0) { |
|
| 121 | + foreach ($data as $k => $row) { |
|
| 128 | 122 | $rowData = []; |
| 129 | - foreach($row as $dbName => $value){ |
|
| 130 | - if(in_array($dbName,$outColumns)){ |
|
| 123 | + foreach ($row as $dbName => $value) { |
|
| 124 | + if (in_array($dbName, $outColumns)) { |
|
| 131 | 125 | $rowData[] = is_array($value) ? $value[0] : $value; |
| 132 | 126 | } |
| 133 | 127 | } |
@@ -135,71 +129,69 @@ discard block |
||
| 135 | 129 | } |
| 136 | 130 | } |
| 137 | 131 | |
| 138 | - switch(self::$export){ |
|
| 132 | + switch (self::$export) { |
|
| 139 | 133 | case 'Excel': |
| 140 | 134 | case 'CSV': |
| 141 | - $escape = function($v){ return str_replace("\t", "	" ,$v); }; |
|
| 135 | + $escape = function($v) { return str_replace("\t", "	", $v); }; |
|
| 142 | 136 | header('Content-Type:application/csv'); |
| 143 | 137 | header('Content-Disposition:attachment; filename=' . |
| 144 | 138 | $outFilename . '.csv'); |
| 145 | - $output = fopen('php://output','w') |
|
| 139 | + $output = fopen('php://output', 'w') |
|
| 146 | 140 | or die('Can\'t open php://output'); |
| 147 | - foreach($eData as $v){ |
|
| 141 | + foreach ($eData as $v) { |
|
| 148 | 142 | self::$export === 'CSV' ? |
| 149 | - fputcsv($output, $v) : |
|
| 150 | - fputs($output, implode("\t",array_map($escape, $v))."\r\n"); |
|
| 143 | + fputcsv($output, $v) : fputs($output, implode("\t", array_map($escape, $v)) . "\r\n"); |
|
| 151 | 144 | } |
| 152 | 145 | fclose($output) or die('Can\'t close php://output'); |
| 153 | 146 | break; |
| 154 | 147 | } |
| 155 | 148 | } |
| 156 | 149 | |
| 157 | - protected static function jsonGetBodyData(){ |
|
| 150 | + protected static function jsonGetBodyData() { |
|
| 158 | 151 | $json = $outColumns = []; |
| 159 | - foreach(self::$cols as $c){ |
|
| 152 | + foreach (self::$cols as $c) { |
|
| 160 | 153 | $outColumns[] = isset($c[1]) ? $c[1] : null; |
| 161 | 154 | } |
| 162 | - if((self::$t['rows'] = count(self::$data)) > 0) { |
|
| 163 | - foreach(self::$data as $row){ |
|
| 155 | + if ((self::$t['rows'] = count(self::$data)) > 0) { |
|
| 156 | + foreach (self::$data as $row) { |
|
| 164 | 157 | $rowData = []; |
| 165 | - foreach($outColumns as $dbName){ |
|
| 158 | + foreach ($outColumns as $dbName) { |
|
| 166 | 159 | $rowData[] = array_key_exists($dbName, $row) ? |
| 167 | 160 | $row[$dbName] : ''; |
| 168 | 161 | } |
| 169 | 162 | $json[] = $rowData; |
| 170 | 163 | } |
| 171 | 164 | } else { |
| 172 | - $attr = ['colspan'=>count(self::$cols),'class'=>'no-results']; |
|
| 165 | + $attr = ['colspan'=>count(self::$cols), 'class'=>'no-results']; |
|
| 173 | 166 | $json[] = [[self::config('EMPTY_TABLE_MSG'), $attr]]; |
| 174 | 167 | } |
| 175 | 168 | return $json; |
| 176 | 169 | } |
| 177 | 170 | |
| 178 | - protected static function jsonGetFooterData(){ |
|
| 171 | + protected static function jsonGetFooterData() { |
|
| 179 | 172 | $jsonArrFooter = []; |
| 180 | - if(count(self::$data) > 0) { |
|
| 173 | + if (count(self::$data) > 0) { |
|
| 181 | 174 | $pageNo = self::$t['page']; |
| 182 | - if($pageNo === 1 && count(self::$data) < self::$t['paging'] ){ |
|
| 175 | + if ($pageNo === 1 && count(self::$data) < self::$t['paging']) { |
|
| 183 | 176 | //Skips total count query |
| 184 | 177 | self::$t['rows'] = count(self::$data); |
| 185 | 178 | } else { |
| 186 | - $q = 'SELECT COUNT(*) FROM ('. self::$t['qAll'] .') AS dt'; |
|
| 179 | + $q = 'SELECT COUNT(*) FROM (' . self::$t['qAll'] . ') AS dt'; |
|
| 187 | 180 | self::$t['rows'] = self::select($q); |
| 188 | 181 | } |
| 189 | 182 | self::$t['pages'] = ceil(self::$t['rows']/self::$t['paging']); |
| 190 | 183 | |
| 191 | 184 | $v = []; |
| 192 | 185 | |
| 193 | - $v['from'] = ($pageNo-1) * self::$t['paging'] + 1; |
|
| 186 | + $v['from'] = ($pageNo - 1)*self::$t['paging'] + 1; |
|
| 194 | 187 | $v['upto'] = ($pageNo*self::$t['paging'] < self::$t['rows']) ? |
| 195 | - $pageNo*self::$t['paging'] : |
|
| 196 | - self::$t['rows']; |
|
| 188 | + $pageNo*self::$t['paging'] : self::$t['rows']; |
|
| 197 | 189 | |
| 198 | 190 | $v["total"] = self::$t['rows']; |
| 199 | 191 | $v["items"] = self::$t['items']; |
| 200 | 192 | |
| 201 | - if(self::$exportActive === true){ |
|
| 202 | - $url = strtok(self::$t['slug'],"?&") . ".json?table=" . |
|
| 193 | + if (self::$exportActive === true) { |
|
| 194 | + $url = strtok(self::$t['slug'], "?&") . ".json?table=" . |
|
| 203 | 195 | self::$t['items'] . "&export="; |
| 204 | 196 | $v["export"] = ["url"=>$url, "types"=>self::config('SAVES')]; |
| 205 | 197 | } |
@@ -208,7 +200,7 @@ discard block |
||
| 208 | 200 | |
| 209 | 201 | $html = self::view('views/table.footer.html', $v); |
| 210 | 202 | |
| 211 | - $jsonArrFooter[] = [[$html,["colspan"=>count(self::$cols)]]]; |
|
| 203 | + $jsonArrFooter[] = [[$html, ["colspan"=>count(self::$cols)]]]; |
|
| 212 | 204 | } |
| 213 | 205 | return $jsonArrFooter; |
| 214 | 206 | } |
@@ -217,20 +209,20 @@ discard block |
||
| 217 | 209 | $items = self::$t['items']; |
| 218 | 210 | $v = ['items' => $items]; |
| 219 | 211 | $div_attr = ['id'=>$items . '-list', 'class'=>'table']; |
| 220 | - if(array_key_exists('div', self::$attributes)){ |
|
| 212 | + if (array_key_exists('div', self::$attributes)) { |
|
| 221 | 213 | $div_attr += self::$attributes['div']; |
| 222 | 214 | } |
| 223 | - if(isset(self::$attributes['div']['class'])){ |
|
| 215 | + if (isset(self::$attributes['div']['class'])) { |
|
| 224 | 216 | $div_attr['class'] .= ' ' . self::$attributes['div']['class']; |
| 225 | 217 | } |
| 226 | 218 | $v['div_attributes'] = self::attributes($div_attr); |
| 227 | 219 | |
| 228 | - if(self::$filterActive){ |
|
| 220 | + if (self::$filterActive) { |
|
| 229 | 221 | self::filterValues($v['f_value'], $v['f_options']); |
| 230 | 222 | } |
| 231 | 223 | |
| 232 | 224 | $tbl_attr = ['id'=>$items . '-table', 'data-table'=>'js']; |
| 233 | - if(array_key_exists('table', self::$attributes)){ |
|
| 225 | + if (array_key_exists('table', self::$attributes)) { |
|
| 234 | 226 | $tbl_attr += self::$attributes['table']; |
| 235 | 227 | } |
| 236 | 228 | $v['table_attributes'] = self::attributes($tbl_attr); |
@@ -259,7 +251,7 @@ discard block |
||
| 259 | 251 | . '</td></tr>'; |
| 260 | 252 | } |
| 261 | 253 | } |
| 262 | - } else if($for === 'footer') { |
|
| 254 | + } else if ($for === 'footer') { |
|
| 263 | 255 | if (self::$t['rows'] > 0) { |
| 264 | 256 | $ftr = self::jsonGetFooterData()[0][0]; |
| 265 | 257 | $trs .= '<tr><td' . self::attributes($ftr[1]) . '>' |
@@ -269,8 +261,8 @@ discard block |
||
| 269 | 261 | return $trs; |
| 270 | 262 | } |
| 271 | 263 | |
| 272 | - protected static function reset($tableId){ |
|
| 273 | - if(!in_array($tableId, self::$t["tables"])){ |
|
| 264 | + protected static function reset($tableId) { |
|
| 265 | + if (!in_array($tableId, self::$t["tables"])) { |
|
| 274 | 266 | self::$t["tables"][] = $tableId; |
| 275 | 267 | self::$cols = []; |
| 276 | 268 | self::$t['rows'] = null; |
@@ -279,17 +271,16 @@ discard block |
||
| 279 | 271 | } |
| 280 | 272 | } |
| 281 | 273 | |
| 282 | - static function select(string $expression, array $bindings = []){ |
|
| 283 | - if(is_object(static::$select) && (static::$select instanceof Closure)){ |
|
| 274 | + static function select(string $expression, array $bindings = []) { |
|
| 275 | + if (is_object(static::$select) && (static::$select instanceof Closure)) { |
|
| 284 | 276 | $select = static::$select; |
| 285 | 277 | $res = $select($expression, $bindings); |
| 286 | 278 | //if result is single cell value ($res[0]->value), return the value |
| 287 | 279 | return (count($res) === 1 && count((array)$res[0]) === 1) ? |
| 288 | - reset($res[0]) : |
|
| 289 | - $res; |
|
| 280 | + reset($res[0]) : $res; |
|
| 290 | 281 | } else { |
| 291 | 282 | die('ERROR: table::$select is not a valid closure. ' |
| 292 | - .__METHOD__.'() #'.__LINE__); |
|
| 283 | + .__METHOD__ . '() #' . __LINE__); |
|
| 293 | 284 | } |
| 294 | 285 | } |
| 295 | 286 | } |
@@ -12,12 +12,12 @@ discard block |
||
| 12 | 12 | /** @param array Re-settable values for current table call*/ |
| 13 | 13 | protected static $config; |
| 14 | 14 | |
| 15 | - static function assets($path = "/public/table"){ |
|
| 15 | + static function assets($path = "/public/table") { |
|
| 16 | 16 | return "<script src=\"{$path}/table.js\"></script>\n\t" . |
| 17 | 17 | "<link href=\"{$path}/table.css\" rel=\"stylesheet\">\n"; |
| 18 | 18 | } |
| 19 | 19 | |
| 20 | - public static function config($c){ |
|
| 20 | + public static function config($c) { |
|
| 21 | 21 | self::$config = self::$config ?: [ |
| 22 | 22 | 'DB_COLLATION_CI' => 'utf8mb4_general_ci', //UTF8_GENERAL_CI |
| 23 | 23 | 'EMPTY_TABLE_MSG' => 'No results found.', |
@@ -29,9 +29,9 @@ discard block |
||
| 29 | 29 | 'UTF8_LEFT_SYMBOL' => '‹', |
| 30 | 30 | 'UTF8_RIGHT_SYMBOL' => '›' |
| 31 | 31 | ]; |
| 32 | - switch(gettype($c)){ |
|
| 32 | + switch (gettype($c)) { |
|
| 33 | 33 | case 'array'; |
| 34 | - foreach($c as $k => $v){ |
|
| 34 | + foreach ($c as $k => $v) { |
|
| 35 | 35 | self::$config[$k] = $v; |
| 36 | 36 | } |
| 37 | 37 | break; |
@@ -43,36 +43,36 @@ discard block |
||
| 43 | 43 | /** Converts array to space separated key value list |
| 44 | 44 | * @param array $attributes |
| 45 | 45 | * @return string */ |
| 46 | - protected static function attributes(array $attributes){ |
|
| 46 | + protected static function attributes(array $attributes) { |
|
| 47 | 47 | $list = []; |
| 48 | - foreach($attributes as $key => $value){ |
|
| 49 | - if(is_bool($value)) { |
|
| 50 | - if((bool)$value){ |
|
| 48 | + foreach ($attributes as $key => $value) { |
|
| 49 | + if (is_bool($value)) { |
|
| 50 | + if ((bool)$value) { |
|
| 51 | 51 | $list[] = $key; |
| 52 | 52 | } |
| 53 | 53 | } else if (empty($value) && !is_int($value)) { |
| 54 | 54 | $list[] = $key; |
| 55 | 55 | } else { |
| 56 | - $list[] = $key.'="'.$value.'"'; |
|
| 56 | + $list[] = $key . '="' . $value . '"'; |
|
| 57 | 57 | } |
| 58 | 58 | } |
| 59 | - return (count($list)>0 ? ' ': '') . join(' ', $list); |
|
| 59 | + return (count($list) > 0 ? ' ' : '') . join(' ', $list); |
|
| 60 | 60 | } |
| 61 | 61 | |
| 62 | 62 | /** Parses view to string |
| 63 | 63 | * @param string $template |
| 64 | 64 | * @param array $vars |
| 65 | 65 | * @return string */ |
| 66 | - protected static function view($template, $vars = []){ |
|
| 66 | + protected static function view($template, $vars = []) { |
|
| 67 | 67 | extract($vars); |
| 68 | 68 | ob_start(); |
| 69 | 69 | require $template; |
| 70 | - return (string) ob_get_clean(); |
|
| 70 | + return (string)ob_get_clean(); |
|
| 71 | 71 | } |
| 72 | 72 | |
| 73 | 73 | protected static function paging(&$v) { |
| 74 | - if(self::$t['pages'] > 1){ |
|
| 75 | - $v['pages']= self::$t['pages']; |
|
| 74 | + if (self::$t['pages'] > 1) { |
|
| 75 | + $v['pages'] = self::$t['pages']; |
|
| 76 | 76 | $v['page'] = self::$t['page']; |
| 77 | 77 | $v['jumpL'] = self::pagingJumps(); |
| 78 | 78 | $v['jumpR'] = self::pagingJumps(); |
@@ -81,11 +81,11 @@ discard block |
||
| 81 | 81 | |
| 82 | 82 | $limit = 10; |
| 83 | 83 | |
| 84 | - $v['start'] = $v['page'] > ($limit/2) ? ($v['page']-$limit/2) : 1; |
|
| 84 | + $v['start'] = $v['page'] > ($limit/2) ? ($v['page'] - $limit/2) : 1; |
|
| 85 | 85 | |
| 86 | - if($v['page'] > ($v['pages']-($limit/2))){ |
|
| 86 | + if ($v['page'] > ($v['pages'] - ($limit/2))) { |
|
| 87 | 87 | $v['final'] = $v['pages']; |
| 88 | - } else if($v['page'] > ($limit/2)){ |
|
| 88 | + } else if ($v['page'] > ($limit/2)) { |
|
| 89 | 89 | $v['final'] = $v['start'] + $limit; |
| 90 | 90 | } else { |
| 91 | 91 | $v['final'] = $limit; |
@@ -100,58 +100,58 @@ discard block |
||
| 100 | 100 | protected static function pagingJumps($html = '', $m = null) { |
| 101 | 101 | static $direction; |
| 102 | 102 | |
| 103 | - if(is_null($m)){ //on self::createPaginationLinks() calls only |
|
| 103 | + if (is_null($m)) { //on self::createPaginationLinks() calls only |
|
| 104 | 104 | $direction = !isset($direction) ? '-' : '+'; |
| 105 | 105 | $m = 100; |
| 106 | 106 | } |
| 107 | 107 | $jump2show = function($m) use ($direction){ |
| 108 | - if( $m>=1000000){ return ($direction . ($m/1000000)."M"); |
|
| 109 | - } else if($m>=1000){ return ($direction . ($m/1000)."K"); |
|
| 108 | + if ($m >= 1000000) { return ($direction . ($m/1000000) . "M"); |
|
| 109 | + } else if ($m >= 1000) { return ($direction . ($m/1000) . "K"); |
|
| 110 | 110 | } else { return ($direction . $m); } |
| 111 | 111 | }; |
| 112 | 112 | $add = '<li class="jump"><a>' . $jump2show($m) . '</a></li>'; |
| 113 | 113 | |
| 114 | - if($direction === '-'){ |
|
| 114 | + if ($direction === '-') { |
|
| 115 | 115 | $jump_exists = (self::$t['page'] - $m) > 0; |
| 116 | 116 | } else { |
| 117 | 117 | $jump_exists = (self::$t['page'] + $m) <= self::$t['pages']; |
| 118 | 118 | } |
| 119 | 119 | |
| 120 | - if($jump_exists){ |
|
| 120 | + if ($jump_exists) { |
|
| 121 | 121 | $html = $direction === '-' ? $add . $html : $html . $add; |
| 122 | 122 | } |
| 123 | 123 | |
| 124 | - return $jump_exists ? self::pagingJumps($html, ($m * 10)) : $html; |
|
| 124 | + return $jump_exists ? self::pagingJumps($html, ($m*10)) : $html; |
|
| 125 | 125 | } |
| 126 | 126 | |
| 127 | - protected static function filterValues(&$f, &$opts=[]){ |
|
| 127 | + protected static function filterValues(&$f, &$opts = []) { |
|
| 128 | 128 | $f = filter_input(INPUT_GET, 'filter', FILTER_SANITIZE_STRING) ?: null; |
| 129 | 129 | |
| 130 | 130 | $by = filter_input(INPUT_GET, 'filter-by', FILTER_VALIDATE_INT); |
| 131 | - foreach(self::$cols as $k => $v){ |
|
| 132 | - if(isset($v[2]['sort']) && $v[2]['sort']===false){continue;} |
|
| 133 | - if(empty($v)){ $v=[null]; } // fix for column requested as [] |
|
| 131 | + foreach (self::$cols as $k => $v) { |
|
| 132 | + if (isset($v[2]['sort']) && $v[2]['sort'] === false) {continue; } |
|
| 133 | + if (empty($v)) { $v = [null]; } // fix for column requested as [] |
|
| 134 | 134 | $selected = $by === $k ? ' selected' : null; |
| 135 | 135 | $opts[] = "<option value=\"{$k}\"{$selected}>{$v[0]}</option>"; |
| 136 | 136 | } |
| 137 | 137 | } |
| 138 | 138 | |
| 139 | - protected static function requestFilter(){ |
|
| 139 | + protected static function requestFilter() { |
|
| 140 | 140 | $filter = filter_input(INPUT_GET, 'filter') ?: false; |
| 141 | - if($filter){ |
|
| 141 | + if ($filter) { |
|
| 142 | 142 | $by = filter_input(INPUT_GET, 'filter-by', FILTER_VALIDATE_INT); |
| 143 | - if($by === false || is_null($by)){ |
|
| 143 | + if ($by === false || is_null($by)) { |
|
| 144 | 144 | $by = []; |
| 145 | - foreach(self::$cols as $v){ |
|
| 146 | - if(isset($v[2]['sort']) && $v[2]['sort']===false){continue;} |
|
| 145 | + foreach (self::$cols as $v) { |
|
| 146 | + if (isset($v[2]['sort']) && $v[2]['sort'] === false) {continue; } |
|
| 147 | 147 | $by[] = 'IFNULL(' . $v[1] . ', "")'; |
| 148 | 148 | } |
| 149 | - $by = 'CONCAT('.implode(',',$by).')'; |
|
| 149 | + $by = 'CONCAT(' . implode(',', $by) . ')'; |
|
| 150 | 150 | } else { |
| 151 | 151 | $by = self::$cols[$by][1]; |
| 152 | 152 | } |
| 153 | - $by = 'CONCAT(" ",'.$by.', " ")'; |
|
| 154 | - if(self::config('FILTER_CASE_SENSITIVE') !== true) { |
|
| 153 | + $by = 'CONCAT(" ",' . $by . ', " ")'; |
|
| 154 | + if (self::config('FILTER_CASE_SENSITIVE') !== true) { |
|
| 155 | 155 | $by .= ' COLLATE ' . self::config('DB_COLLATION_CI'); |
| 156 | 156 | } |
| 157 | 157 | $filter = $by . ' LIKE ' . '"%' . $filter . '%"'; |
@@ -159,30 +159,27 @@ discard block |
||
| 159 | 159 | return $filter; |
| 160 | 160 | } |
| 161 | 161 | |
| 162 | - protected static function requestOrderCol(){ |
|
| 163 | - if(($col = filter_input(INPUT_GET, 'col', FILTER_VALIDATE_INT))){ |
|
| 162 | + protected static function requestOrderCol() { |
|
| 163 | + if (($col = filter_input(INPUT_GET, 'col', FILTER_VALIDATE_INT))) { |
|
| 164 | 164 | return isset(self::$cols[$col][2]['sort']) ? |
| 165 | - self::$cols[$col][2]['sort'] : |
|
| 166 | - self::$cols[$col][1]; |
|
| 165 | + self::$cols[$col][2]['sort'] : self::$cols[$col][1]; |
|
| 167 | 166 | } |
| 168 | 167 | return self::$t['order']['col']; |
| 169 | 168 | } |
| 170 | 169 | |
| 171 | - protected static function requestOrderDir(){ |
|
| 170 | + protected static function requestOrderDir() { |
|
| 172 | 171 | $reset = filter_has_var(INPUT_GET, 'col') ? 'asc' : null; |
| 173 | 172 | return in_array(filter_input(INPUT_GET, 'ord'), ['asc', 'desc']) ? |
| 174 | - filter_input(INPUT_GET, 'ord') : |
|
| 175 | - ($reset ?: self::$t['order']['dir']); |
|
| 173 | + filter_input(INPUT_GET, 'ord') : ($reset ?: self::$t['order']['dir']); |
|
| 176 | 174 | } |
| 177 | 175 | |
| 178 | - protected static function requestExport(){ |
|
| 179 | - $exp = filter_input(INPUT_GET,'export', FILTER_SANITIZE_STRING); |
|
| 176 | + protected static function requestExport() { |
|
| 177 | + $exp = filter_input(INPUT_GET, 'export', FILTER_SANITIZE_STRING); |
|
| 180 | 178 | return in_array($exp, self::config('SAVES')) ? $exp : false; |
| 181 | 179 | } |
| 182 | 180 | |
| 183 | - protected static function requestPage(){ |
|
| 181 | + protected static function requestPage() { |
|
| 184 | 182 | return filter_has_var(INPUT_GET, 'pg') && self::$export == false ? |
| 185 | - (int)filter_input(INPUT_GET, 'pg', FILTER_SANITIZE_NUMBER_INT) : |
|
| 186 | - self::$t['page']; |
|
| 183 | + (int)filter_input(INPUT_GET, 'pg', FILTER_SANITIZE_NUMBER_INT) : self::$t['page']; |
|
| 187 | 184 | } |
| 188 | 185 | } |
@@ -33,10 +33,8 @@ discard block |
||
| 33 | 33 | self::prepare(true); |
| 34 | 34 | self::$t['order']['col'] = $orderBy; |
| 35 | 35 | $dir = strtolower($orderDir); |
| 36 | - self::$t['order']['dir'] = in_array($dir, ['asc', 'desc']) ? $dir : |
|
| 37 | - die('Invalid orderDir(Asc/Desc): ' . $orderDir); |
|
| 38 | - self::$t['paging'] = ($p = abs($paging)) > 10 ? $p : |
|
| 39 | - die('Invalid paging(>10): ' . $paging); |
|
| 36 | + self::$t['order']['dir'] = in_array($dir, ['asc', 'desc']) ? $dir : die('Invalid orderDir(Asc/Desc): ' . $orderDir); |
|
| 37 | + self::$t['paging'] = ($p = abs($paging)) > 10 ? $p : die('Invalid paging(>10): ' . $paging); |
|
| 40 | 38 | } |
| 41 | 39 | |
| 42 | 40 | /** #2. Execute (queries) |
@@ -55,7 +53,7 @@ discard block |
||
| 55 | 53 | |
| 56 | 54 | $filter = self::requestFilter(); |
| 57 | 55 | $order = [self::$t['order']['col'] => self::$t['order']['dir']]; |
| 58 | - $offset = (self::$t['page'] - 1) * self::$t['paging']; |
|
| 56 | + $offset = (self::$t['page'] - 1)*self::$t['paging']; |
|
| 59 | 57 | $limit = [$offset, self::$t['paging']]; |
| 60 | 58 | self::$t['q'] = self::q($q, $filter, $order, $limit, true); |
| 61 | 59 | |
@@ -99,8 +97,7 @@ discard block |
||
| 99 | 97 | public static function prepare($setOrCheck = false) |
| 100 | 98 | { |
| 101 | 99 | //@see http://php.net/manual/es/function.filter-input.php#77307 |
| 102 | - $uri = filter_input(INPUT_SERVER, 'REQUEST_URI', FILTER_SANITIZE_URL) ?: |
|
| 103 | - filter_var($_SERVER['REQUEST_URI'], FILTER_SANITIZE_URL); |
|
| 100 | + $uri = filter_input(INPUT_SERVER, 'REQUEST_URI', FILTER_SANITIZE_URL) ?: filter_var($_SERVER['REQUEST_URI'], FILTER_SANITIZE_URL); |
|
| 104 | 101 | |
| 105 | 102 | $extension = pathinfo(strtok($uri, '?'), PATHINFO_EXTENSION); |
| 106 | 103 | |