1
0
mirror of https://github.com/devcode-it/openstamanager.git synced 2025-06-05 22:09:38 +02:00

Rimozione

This commit is contained in:
Thomas Zilio
2019-02-01 17:44:31 +01:00
parent 18b54175e0
commit dd6fa69fbb
28 changed files with 449 additions and 352 deletions

View File

@ -3,102 +3,50 @@
include_once __DIR__.'/core.php';
// Informazioni fondamentali
$start = filter('start');
$length = filter('length');
$columns = filter('columns');
$order = filter('order')[0];
$order['column'] = $order['column'] - 1;
array_shift($columns);
$total = App::readQuery($structure);
$total = Util\Query::readQuery($structure);
// Lettura parametri modulo
$result_query = $total['query'];
// Predisposizione dela risposta
$results = [];
$results['data'] = [];
$results['recordsTotal'] = 0;
$results['recordsFiltered'] = 0;
$results['summable'] = [];
if (!empty($result_query) && $result_query != 'menu' && $result_query != 'custom') {
// Conteggio totale
$results['recordsTotal'] = $dbo->fetchNum($result_query);
// Filtri di ricerica
$search_filters = [];
for ($i = 0; $i < count($columns); ++$i) {
if (!empty($columns[$i]['search']['value'])) {
if (str_contains($total['search_inside'][$i], '|search|')) {
$pieces = explode(',', $columns[$i]['search']['value']);
foreach ($pieces as $piece) {
$piece = trim($piece);
$search_filters[] = str_replace('|search|', prepare('%'.$piece.'%'), $total['search_inside'][$i]);
}
} else {
// Per le icone cerco nel campo icon_title
if (preg_match('/^icon_(.+?)$/', $total['fields'][$i], $m)) {
$total['search_inside'][$i] = '`icon_title_'.$m[1].'`';
}
// Per i colori cerco nel campo color_title
elseif (preg_match('/^color_(.+?)$/', $total['fields'][$i], $m)) {
$total['search_inside'][$i] = '`color_title_'.$m[1].'`';
}
$search_filters[] = $total['search_inside'][$i].' LIKE '.prepare('%'.trim($columns[$i]['search']['value'].'%'));
}
}
// Ricerca
$search = [];
for ($i = 0; $i < count($columns); ++$i) {
if (!empty($columns[$i]['search']['value'])) {
$search[$total['fields'][$i]] = $columns[$i]['search']['value'];
}
}
// Ricerca
if (!empty($search_filters)) {
$result_query = str_replace('2=2', '2=2 AND ('.implode(' AND ', $search_filters).') ', $result_query);
}
$limit = [
'start' => filter('start'),
'length' => filter('length'),
];
// Predisposizione della risposta
$results = [
'data' => [],
'recordsTotal' => 0,
'recordsFiltered' => 0,
'summable' => [],
];
$query = Util\Query::getQuery($structure);
if (!empty($query)) {
// CONTEGGIO TOTALE
$results['recordsTotal'] = $dbo->fetchNum($query);
// RISULTATI VISIBILI
$query = Util\Query::getQuery($structure, $search, $order, $limit);
// Filtri derivanti dai permessi (eventuali)
if (empty($id_plugin)) {
$result_query = Modules::replaceAdditionals($id_module, $result_query);
$query = Modules::replaceAdditionals($id_module, $query);
}
// Ordinamento dei risultati
if (isset($order['dir']) && isset($order['column'])) {
$pieces = explode('ORDER', $result_query);
$count = count($pieces);
if ($count > 1) {
unset($pieces[$count - 1]);
}
$result_query = implode('ORDER', $pieces).' ORDER BY '.$total['order_by'][$order['column']].' '.$order['dir'];
}
// Calcolo di eventuali somme
if (!empty($total['summable'])) {
$sum_query = str_replace_once('SELECT', 'SELECT '.implode(', ', $total['summable']).' FROM(SELECT ', $result_query).') AS `z`';
$sums = $dbo->fetchArray($sum_query)[0];
if (!empty($sums)) {
$r = [];
foreach ($sums as $key => $sum) {
if (str_contains($key, 'sum_')) {
$r[str_replace('sum_', '', $key)] = Translator::numberToLocale($sum);
}
}
$results['summable'] = $r;
}
}
// Paginazione
if ($length > 0) {
$result_query .= ' LIMIT '.$start.', '.$length;
}
// Query effettiva
$query = str_replace_once('SELECT', 'SELECT SQL_CALC_FOUND_ROWS', $result_query);
$rs = $dbo->fetchArray($query);
$query = str_replace_once('SELECT', 'SELECT SQL_CALC_FOUND_ROWS', $query);
$rows = $dbo->fetchArray($query);
// Conteggio dei record filtrati
$count = $dbo->fetchArray('SELECT FOUND_ROWS()');
@ -106,27 +54,32 @@ if (!empty($result_query) && $result_query != 'menu' && $result_query != 'custom
$results['recordsFiltered'] = $count[0]['FOUND_ROWS()'];
}
// Creazione della tabella
// SOMME
$results['summable'] = Util\Query::getSums($structure, $search);
// Allineamento delle righe
$align = [];
foreach ($rs as $i => $r) {
if ($i == 0) {
foreach ($total['fields'] as $field) {
$value = trim($r[$field]);
$row = $rows[0] ?: [];
foreach ($row as $field => $value) {
$value = trim($value);
// Allineamento a destra se il valore della prima riga risulta numerica
if (formatter()->isStandardNumber($value)) {
$align[$field] = 'text-right';
}
// Allineamento al centro se il valore della prima riga risulta relativo a date o icone
elseif (formatter()->isStandardDate($value) || preg_match('/^icon_(.+?)$/', $field)) {
$align[$field] = 'text-center';
}
}
// Allineamento a destra se il valore della prima riga risulta numerica
if (formatter()->isStandardNumber($value)) {
$align[$field] = 'text-right';
}
$result = [];
$result[] = '<span class="hide" data-id="'.$r['id'].'"></span>';
// Allineamento al centro se il valore della prima riga risulta relativo a date o icone
elseif (formatter()->isStandardDate($value) || preg_match('/^icon_(.+?)$/', $field)) {
$align[$field] = 'text-center';
}
}
// Creazione della tabella
foreach ($rows as $i => $r) {
$result = [
'<span class="hide" data-id="'.$r['id'].'"></span>', // Colonna ID
];
foreach ($total['fields'] as $pos => $field) {
$column = [];
@ -219,5 +172,5 @@ if (!empty($result_query) && $result_query != 'menu' && $result_query != 'custom
}
}
$rows = json_encode($results);
echo $rows;
$json = json_encode($results);
echo $json;