Miglioramento gestione select dinamici
Miglioramento della gestione dei select dinamici, in risposta a #66. Per il momento la gestione è ancora completamente delegata a file fisici, con possibilità di aggiungere un file ajax/select.php nei moduli.
This commit is contained in:
parent
3af63bbade
commit
3ca9156741
217
ajax_select.php
217
ajax_select.php
|
@ -2,6 +2,7 @@
|
||||||
|
|
||||||
include_once __DIR__.'/core.php';
|
include_once __DIR__.'/core.php';
|
||||||
|
|
||||||
|
if (!isset($superselect)) {
|
||||||
$op = empty($op) ? filter('op') : $op;
|
$op = empty($op) ? filter('op') : $op;
|
||||||
$search = filter('q');
|
$search = filter('q');
|
||||||
|
|
||||||
|
@ -10,216 +11,11 @@ if (!isset($elements)) {
|
||||||
}
|
}
|
||||||
$elements = (!is_array($elements)) ? explode(',', $elements) : $elements;
|
$elements = (!is_array($elements)) ? explode(',', $elements) : $elements;
|
||||||
|
|
||||||
$superselect = !empty($_SESSION['superselect']) ? $_SESSION['superselect'] : [];
|
$results = AJAX::getSelectValues($op, $elements, $search);
|
||||||
|
|
||||||
$where = [];
|
echo json_encode($results);
|
||||||
$filter = [];
|
|
||||||
$search_fields = [];
|
|
||||||
|
|
||||||
$custom = [
|
|
||||||
'id' => 'id',
|
|
||||||
'text' => 'descrizione',
|
|
||||||
];
|
|
||||||
|
|
||||||
if (!function_exists('completeResults')) {
|
|
||||||
function completeResults($query, $where, $filter = [], $search = [], $custom = [])
|
|
||||||
{
|
|
||||||
$dbo = Database::getConnection();
|
|
||||||
|
|
||||||
if (str_contains($query, '|filter|')) {
|
|
||||||
$query = str_replace('|filter|', !empty($filter) ? 'WHERE '.implode(' OR ', $filter) : '', $query);
|
|
||||||
} elseif (!empty($filter)) {
|
|
||||||
$where[] = '('.implode(' OR ', $filter).')';
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!empty($search)) {
|
|
||||||
$where[] = '('.implode(' OR ', $search).')';
|
|
||||||
}
|
|
||||||
|
|
||||||
$query = str_replace('|where|', !empty($where) ? 'WHERE '.implode(' AND ', $where) : '', $query);
|
|
||||||
|
|
||||||
$rs = $dbo->fetchArray($query);
|
|
||||||
|
|
||||||
$results = [];
|
|
||||||
foreach ($rs as $r) {
|
|
||||||
$result = [];
|
|
||||||
foreach ($custom as $key => $value) {
|
|
||||||
$result[$key] = $r[$value];
|
|
||||||
}
|
|
||||||
|
|
||||||
$results[] = $result;
|
|
||||||
}
|
|
||||||
|
|
||||||
return $results;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
switch ($op) {
|
|
||||||
case 'clienti':
|
|
||||||
if (Modules::get('Anagrafiche')['permessi'] != '-') {
|
|
||||||
//$citta_cliente = ", IF(citta IS NULL OR citta = '', '', CONCAT(' (', citta, ')'))";
|
|
||||||
|
|
||||||
$query = "SELECT an_anagrafiche.idanagrafica AS id, CONCAT(ragione_sociale $citta_cliente) AS descrizione, idtipointervento_default FROM an_anagrafiche INNER JOIN (an_tipianagrafiche_anagrafiche INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica=an_tipianagrafiche.idtipoanagrafica) ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica |where| ORDER BY ragione_sociale";
|
|
||||||
|
|
||||||
foreach ($elements as $element) {
|
|
||||||
$filter[] = 'an_anagrafiche.idanagrafica='.prepare($element);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (empty($filter)) {
|
|
||||||
$where[] = "descrizione='Cliente'";
|
|
||||||
$where[] = 'deleted=0';
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!empty($search)) {
|
|
||||||
$search_fields[] = 'ragione_sociale LIKE '.prepare('%'.$search.'%');
|
|
||||||
$search_fields[] = 'citta LIKE '.prepare('%'.$search.'%');
|
|
||||||
$search_fields[] = 'provincia LIKE '.prepare('%'.$search.'%');
|
|
||||||
}
|
|
||||||
|
|
||||||
$custom['idtipointervento'] = 'idtipointervento_default';
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'fornitori':
|
|
||||||
if (Modules::get('Anagrafiche')['permessi'] != '-') {
|
|
||||||
$query = "SELECT an_anagrafiche.idanagrafica AS id, CONCAT(ragione_sociale, IF(citta IS NULL OR citta = '', '', CONCAT(' (', citta, ')'))) AS descrizione, idtipointervento_default FROM an_anagrafiche INNER JOIN (an_tipianagrafiche_anagrafiche INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica=an_tipianagrafiche.idtipoanagrafica) ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica |where| ORDER BY ragione_sociale";
|
|
||||||
|
|
||||||
foreach ($elements as $element) {
|
|
||||||
$filter[] = 'an_anagrafiche.idanagrafica='.prepare($element);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (empty($filter)) {
|
|
||||||
$where[] = "descrizione='Fornitore'";
|
|
||||||
$where[] = 'deleted=0';
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!empty($search)) {
|
|
||||||
$search_fields[] = 'ragione_sociale LIKE '.prepare('%'.$search.'%');
|
|
||||||
$search_fields[] = 'citta LIKE '.prepare('%'.$search.'%');
|
|
||||||
$search_fields[] = 'provincia LIKE '.prepare('%'.$search.'%');
|
|
||||||
}
|
|
||||||
|
|
||||||
$custom['idtipointervento'] = 'idtipointervento_default';
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'agenti':
|
|
||||||
if (Modules::get('Anagrafiche')['permessi'] != '-') {
|
|
||||||
$query = "SELECT an_anagrafiche.idanagrafica AS id, CONCAT(ragione_sociale, IF(citta IS NULL OR citta = '', '', CONCAT(' (', citta, ')'))) AS descrizione, idtipointervento_default FROM an_anagrafiche INNER JOIN (an_tipianagrafiche_anagrafiche INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica=an_tipianagrafiche.idtipoanagrafica) ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica |where| ORDER BY ragione_sociale";
|
|
||||||
|
|
||||||
foreach ($elements as $element) {
|
|
||||||
$filter[] = 'an_anagrafiche.idanagrafica='.prepare($element);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (empty($filter)) {
|
|
||||||
$where[] = "descrizione='Agente'";
|
|
||||||
$where[] = 'deleted=0';
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!empty($search)) {
|
|
||||||
$search_fields[] = 'ragione_sociale LIKE '.prepare('%'.$search.'%');
|
|
||||||
$search_fields[] = 'citta LIKE '.prepare('%'.$search.'%');
|
|
||||||
$search_fields[] = 'provincia LIKE '.prepare('%'.$search.'%');
|
|
||||||
}
|
|
||||||
|
|
||||||
$results = completeResults($query, $where, $filter, $search, $custom);
|
|
||||||
|
|
||||||
// Evidenzia l'agente di default
|
|
||||||
if ($superselect['idanagrafica']) {
|
|
||||||
$rsa = $dbo->fetchArray('SELECT idagente FROM an_anagrafiche WHERE idanagrafica='.prepare($superselect['idanagrafica']));
|
|
||||||
$idagente_default = $rsa[0]['idagente'];
|
|
||||||
} else {
|
} else {
|
||||||
$idagente_default = 0;
|
switch ($resource) {
|
||||||
}
|
|
||||||
|
|
||||||
$ids = array_column($results, $id);
|
|
||||||
$pos = array_search($idagente_default, $ids);
|
|
||||||
if ($pos !== false) {
|
|
||||||
$results[$pos]['_bgcolor_'] = '#ff0';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'tecnici':
|
|
||||||
if (Modules::get('Anagrafiche')['permessi'] != '-') {
|
|
||||||
$query = "SELECT an_anagrafiche.idanagrafica AS id, CONCAT(ragione_sociale, IF(citta IS NULL OR citta = '', '', CONCAT(' (', citta, ')'))) AS descrizione, idtipointervento_default FROM an_anagrafiche INNER JOIN (an_tipianagrafiche_anagrafiche INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica=an_tipianagrafiche.idtipoanagrafica) ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica |where| ORDER BY ragione_sociale";
|
|
||||||
|
|
||||||
foreach ($elements as $element) {
|
|
||||||
$filter[] = 'an_anagrafiche.idanagrafica='.prepare($element);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (empty($filter)) {
|
|
||||||
$where[] = "descrizione='Tecnico'";
|
|
||||||
$where[] = 'deleted=0';
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!empty($search)) {
|
|
||||||
$search_fields[] = 'ragione_sociale LIKE '.prepare('%'.$search.'%');
|
|
||||||
$search_fields[] = 'citta LIKE '.prepare('%'.$search.'%');
|
|
||||||
$search_fields[] = 'provincia LIKE '.prepare('%'.$search.'%');
|
|
||||||
}
|
|
||||||
|
|
||||||
// $custom['idtipointervento'] = 'idtipointervento_default';
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
// Nota Bene: nel campo id viene specificato idtipoanagrafica-idanagrafica -> modulo Utenti e permessi, creazione nuovo utente
|
|
||||||
case 'anagrafiche':
|
|
||||||
if (Modules::get('Anagrafiche')['permessi'] != '-') {
|
|
||||||
$query = "SELECT CONCAT(an_tipianagrafiche.idtipoanagrafica, '-', an_anagrafiche.idanagrafica) AS id, CONCAT_WS('', ragione_sociale, ' (', citta, ' ', provincia, ')') AS descrizione idtipointervento_default FROM an_anagrafiche INNER JOIN (an_tipianagrafiche_anagrafiche INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica=an_tipianagrafiche.idtipoanagrafica) ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica |where| ORDER BY ragione_sociale";
|
|
||||||
|
|
||||||
foreach ($elements as $element) {
|
|
||||||
$filter[] = 'an_anagrafiche.idanagrafica='.prepare($element);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (empty($filter)) {
|
|
||||||
$where[] = 'deleted=0';
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!empty($search)) {
|
|
||||||
$search_fields[] = 'ragione_sociale LIKE '.prepare('%'.$search.'%');
|
|
||||||
$search_fields[] = 'citta LIKE '.prepare('%'.$search.'%');
|
|
||||||
$search_fields[] = 'provincia LIKE '.prepare('%'.$search.'%');
|
|
||||||
}
|
|
||||||
|
|
||||||
// $custom['idtipointervento'] = 'idtipointervento_default';
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'sedi':
|
|
||||||
if (Modules::get('Anagrafiche')['permessi'] != '-' && isset($superselect['idanagrafica'])) {
|
|
||||||
$query = "SELECT * FROM (SELECT 0 AS id, 'Sede legale' AS descrizione UNION SELECT id, CONCAT_WS(' - ', nomesede, citta) FROM an_sedi |where|) AS tab |filter| ORDER BY id";
|
|
||||||
|
|
||||||
foreach ($elements as $element) {
|
|
||||||
$filter[] = 'id='.prepare($element);
|
|
||||||
}
|
|
||||||
|
|
||||||
$where[] = 'idanagrafica='.prepare($superselect['idanagrafica']);
|
|
||||||
|
|
||||||
if (!empty($search)) {
|
|
||||||
$search_fields[] = 'nomesede LIKE '.prepare('%'.$search.'%');
|
|
||||||
$search_fields[] = 'citta LIKE '.prepare('%'.$search.'%');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'referenti':
|
|
||||||
if (Modules::get('Anagrafiche')['permessi'] != '-' && isset($superselect['idanagrafica'])) {
|
|
||||||
$query = 'SELECT id, nome AS descrizione FROM an_referenti |where| ORDER BY id';
|
|
||||||
|
|
||||||
foreach ($elements as $element) {
|
|
||||||
$filter[] = 'id='.prepare($element);
|
|
||||||
}
|
|
||||||
|
|
||||||
$where[] = 'idanagrafica='.prepare($superselect['idanagrafica']);
|
|
||||||
|
|
||||||
if (!empty($search)) {
|
|
||||||
$search_fields[] = 'nome LIKE '.prepare('%'.$search.'%');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'articoli':
|
case 'articoli':
|
||||||
$query = 'SELECT mg_articoli.*, co_iva.descrizione AS iva_vendita FROM mg_articoli LEFT OUTER JOIN co_iva ON mg_articoli.idiva_vendita=co_iva.id |where| ORDER BY mg_articoli.id_categoria ASC, mg_articoli.id_sottocategoria ASC';
|
$query = 'SELECT mg_articoli.*, co_iva.descrizione AS iva_vendita FROM mg_articoli LEFT OUTER JOIN co_iva ON mg_articoli.idiva_vendita=co_iva.id |where| ORDER BY mg_articoli.id_categoria ASC, mg_articoli.id_sottocategoria ASC';
|
||||||
|
|
||||||
|
@ -581,9 +377,4 @@ switch ($op) {
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!isset($results) && !empty($query)) {
|
|
||||||
$results = completeResults($query, $where, $filter, $search_fields, $custom);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
echo json_encode($results);
|
|
||||||
|
|
|
@ -0,0 +1,168 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
switch ($resource) {
|
||||||
|
case 'clienti':
|
||||||
|
if (Modules::get('Anagrafiche')['permessi'] != '-') {
|
||||||
|
//$citta_cliente = ", IF(citta IS NULL OR citta = '', '', CONCAT(' (', citta, ')'))";
|
||||||
|
|
||||||
|
$query = "SELECT an_anagrafiche.idanagrafica AS id, CONCAT(ragione_sociale $citta_cliente) AS descrizione, idtipointervento_default FROM an_anagrafiche INNER JOIN (an_tipianagrafiche_anagrafiche INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica=an_tipianagrafiche.idtipoanagrafica) ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica |where| ORDER BY ragione_sociale";
|
||||||
|
|
||||||
|
foreach ($elements as $element) {
|
||||||
|
$filter[] = 'an_anagrafiche.idanagrafica='.prepare($element);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (empty($filter)) {
|
||||||
|
$where[] = "descrizione='Cliente'";
|
||||||
|
$where[] = 'deleted=0';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($search)) {
|
||||||
|
$search_fields[] = 'ragione_sociale LIKE '.prepare('%'.$search.'%');
|
||||||
|
$search_fields[] = 'citta LIKE '.prepare('%'.$search.'%');
|
||||||
|
$search_fields[] = 'provincia LIKE '.prepare('%'.$search.'%');
|
||||||
|
}
|
||||||
|
|
||||||
|
$custom['idtipointervento'] = 'idtipointervento_default';
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'fornitori':
|
||||||
|
if (Modules::get('Anagrafiche')['permessi'] != '-') {
|
||||||
|
$query = "SELECT an_anagrafiche.idanagrafica AS id, CONCAT(ragione_sociale, IF(citta IS NULL OR citta = '', '', CONCAT(' (', citta, ')'))) AS descrizione, idtipointervento_default FROM an_anagrafiche INNER JOIN (an_tipianagrafiche_anagrafiche INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica=an_tipianagrafiche.idtipoanagrafica) ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica |where| ORDER BY ragione_sociale";
|
||||||
|
|
||||||
|
foreach ($elements as $element) {
|
||||||
|
$filter[] = 'an_anagrafiche.idanagrafica='.prepare($element);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (empty($filter)) {
|
||||||
|
$where[] = "descrizione='Fornitore'";
|
||||||
|
$where[] = 'deleted=0';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($search)) {
|
||||||
|
$search_fields[] = 'ragione_sociale LIKE '.prepare('%'.$search.'%');
|
||||||
|
$search_fields[] = 'citta LIKE '.prepare('%'.$search.'%');
|
||||||
|
$search_fields[] = 'provincia LIKE '.prepare('%'.$search.'%');
|
||||||
|
}
|
||||||
|
|
||||||
|
$custom['idtipointervento'] = 'idtipointervento_default';
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'agenti':
|
||||||
|
if (Modules::get('Anagrafiche')['permessi'] != '-') {
|
||||||
|
$query = "SELECT an_anagrafiche.idanagrafica AS id, CONCAT(ragione_sociale, IF(citta IS NULL OR citta = '', '', CONCAT(' (', citta, ')'))) AS descrizione, idtipointervento_default FROM an_anagrafiche INNER JOIN (an_tipianagrafiche_anagrafiche INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica=an_tipianagrafiche.idtipoanagrafica) ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica |where| ORDER BY ragione_sociale";
|
||||||
|
|
||||||
|
foreach ($elements as $element) {
|
||||||
|
$filter[] = 'an_anagrafiche.idanagrafica='.prepare($element);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (empty($filter)) {
|
||||||
|
$where[] = "descrizione='Agente'";
|
||||||
|
$where[] = 'deleted=0';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($search)) {
|
||||||
|
$search_fields[] = 'ragione_sociale LIKE '.prepare('%'.$search.'%');
|
||||||
|
$search_fields[] = 'citta LIKE '.prepare('%'.$search.'%');
|
||||||
|
$search_fields[] = 'provincia LIKE '.prepare('%'.$search.'%');
|
||||||
|
}
|
||||||
|
|
||||||
|
$results = completeResults($query, $where, $filter, $search, $custom);
|
||||||
|
|
||||||
|
// Evidenzia l'agente di default
|
||||||
|
if ($superselect['idanagrafica']) {
|
||||||
|
$rsa = $dbo->fetchArray('SELECT idagente FROM an_anagrafiche WHERE idanagrafica='.prepare($superselect['idanagrafica']));
|
||||||
|
$idagente_default = $rsa[0]['idagente'];
|
||||||
|
} else {
|
||||||
|
$idagente_default = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
$ids = array_column($results, $id);
|
||||||
|
$pos = array_search($idagente_default, $ids);
|
||||||
|
if ($pos !== false) {
|
||||||
|
$results[$pos]['_bgcolor_'] = '#ff0';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'tecnici':
|
||||||
|
if (Modules::get('Anagrafiche')['permessi'] != '-') {
|
||||||
|
$query = "SELECT an_anagrafiche.idanagrafica AS id, CONCAT(ragione_sociale, IF(citta IS NULL OR citta = '', '', CONCAT(' (', citta, ')'))) AS descrizione, idtipointervento_default FROM an_anagrafiche INNER JOIN (an_tipianagrafiche_anagrafiche INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica=an_tipianagrafiche.idtipoanagrafica) ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica |where| ORDER BY ragione_sociale";
|
||||||
|
|
||||||
|
foreach ($elements as $element) {
|
||||||
|
$filter[] = 'an_anagrafiche.idanagrafica='.prepare($element);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (empty($filter)) {
|
||||||
|
$where[] = "descrizione='Tecnico'";
|
||||||
|
$where[] = 'deleted=0';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($search)) {
|
||||||
|
$search_fields[] = 'ragione_sociale LIKE '.prepare('%'.$search.'%');
|
||||||
|
$search_fields[] = 'citta LIKE '.prepare('%'.$search.'%');
|
||||||
|
$search_fields[] = 'provincia LIKE '.prepare('%'.$search.'%');
|
||||||
|
}
|
||||||
|
|
||||||
|
// $custom['idtipointervento'] = 'idtipointervento_default';
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
// Nota Bene: nel campo id viene specificato idtipoanagrafica-idanagrafica -> modulo Utenti e permessi, creazione nuovo utente
|
||||||
|
case 'anagrafiche':
|
||||||
|
if (Modules::get('Anagrafiche')['permessi'] != '-') {
|
||||||
|
$query = "SELECT CONCAT(an_tipianagrafiche.idtipoanagrafica, '-', an_anagrafiche.idanagrafica) AS id, CONCAT_WS('', ragione_sociale, ' (', citta, ' ', provincia, ')') AS descrizione idtipointervento_default FROM an_anagrafiche INNER JOIN (an_tipianagrafiche_anagrafiche INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica=an_tipianagrafiche.idtipoanagrafica) ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica |where| ORDER BY ragione_sociale";
|
||||||
|
|
||||||
|
foreach ($elements as $element) {
|
||||||
|
$filter[] = 'an_anagrafiche.idanagrafica='.prepare($element);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (empty($filter)) {
|
||||||
|
$where[] = 'deleted=0';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($search)) {
|
||||||
|
$search_fields[] = 'ragione_sociale LIKE '.prepare('%'.$search.'%');
|
||||||
|
$search_fields[] = 'citta LIKE '.prepare('%'.$search.'%');
|
||||||
|
$search_fields[] = 'provincia LIKE '.prepare('%'.$search.'%');
|
||||||
|
}
|
||||||
|
|
||||||
|
// $custom['idtipointervento'] = 'idtipointervento_default';
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'sedi':
|
||||||
|
if (Modules::get('Anagrafiche')['permessi'] != '-' && isset($superselect['idanagrafica'])) {
|
||||||
|
$query = "SELECT * FROM (SELECT 0 AS id, 'Sede legale' AS descrizione UNION SELECT id, CONCAT_WS(' - ', nomesede, citta) FROM an_sedi |where|) AS tab |filter| ORDER BY id";
|
||||||
|
|
||||||
|
foreach ($elements as $element) {
|
||||||
|
$filter[] = 'id='.prepare($element);
|
||||||
|
}
|
||||||
|
|
||||||
|
$where[] = 'idanagrafica='.prepare($superselect['idanagrafica']);
|
||||||
|
|
||||||
|
if (!empty($search)) {
|
||||||
|
$search_fields[] = 'nomesede LIKE '.prepare('%'.$search.'%');
|
||||||
|
$search_fields[] = 'citta LIKE '.prepare('%'.$search.'%');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'referenti':
|
||||||
|
if (Modules::get('Anagrafiche')['permessi'] != '-' && isset($superselect['idanagrafica'])) {
|
||||||
|
$query = 'SELECT id, nome AS descrizione FROM an_referenti |where| ORDER BY id';
|
||||||
|
|
||||||
|
foreach ($elements as $element) {
|
||||||
|
$filter[] = 'id='.prepare($element);
|
||||||
|
}
|
||||||
|
|
||||||
|
$where[] = 'idanagrafica='.prepare($superselect['idanagrafica']);
|
||||||
|
|
||||||
|
if (!empty($search)) {
|
||||||
|
$search_fields[] = 'nome LIKE '.prepare('%'.$search.'%');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
|
@ -0,0 +1,102 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Classe per la gestione delle funzioni AJAX richiamabili del progetto.
|
||||||
|
*
|
||||||
|
* @since 2.4
|
||||||
|
*/
|
||||||
|
class AJAX
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Controlla se è in corso una richiesta AJAX generata dal progetto.
|
||||||
|
*
|
||||||
|
* @since 2.4
|
||||||
|
*
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public static function isAjaxRequest()
|
||||||
|
{
|
||||||
|
return \Whoops\Util\Misc::isAjaxRequest() && filter('ajax') !== null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function getSelectValues($resource, $elements = [], $search = null)
|
||||||
|
{
|
||||||
|
if (!isset($elements)) {
|
||||||
|
$elements = [];
|
||||||
|
}
|
||||||
|
$elements = (!is_array($elements)) ? explode(',', $elements) : $elements;
|
||||||
|
|
||||||
|
// Individuazione dei select esistenti
|
||||||
|
$customs = glob(DOCROOT.'/modules/*/ajax/select.php');
|
||||||
|
array_unshift($customs, DOCROOT.'/ajax_select.php');
|
||||||
|
|
||||||
|
foreach ($customs as $custom) {
|
||||||
|
$temp = str_replace('/ajax/', '/custom/ajax/', $custom);
|
||||||
|
$file = file_exists($temp) ? $file : $custom;
|
||||||
|
|
||||||
|
$results = self::getFileValues($file, $resource, $elements, $search);
|
||||||
|
if (isset($results)) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $results;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static function completeResults($query, $where, $filter = [], $search = [], $custom = [])
|
||||||
|
{
|
||||||
|
if (str_contains($query, '|filter|')) {
|
||||||
|
$query = str_replace('|filter|', !empty($filter) ? 'WHERE '.implode(' OR ', $filter) : '', $query);
|
||||||
|
} elseif (!empty($filter)) {
|
||||||
|
$where[] = '('.implode(' OR ', $filter).')';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($search)) {
|
||||||
|
$where[] = '('.implode(' OR ', $search).')';
|
||||||
|
}
|
||||||
|
|
||||||
|
$query = str_replace('|where|', !empty($where) ? 'WHERE '.implode(' AND ', $where) : '', $query);
|
||||||
|
|
||||||
|
$database = Database::getConnection();
|
||||||
|
$rs = $database->fetchArray($query);
|
||||||
|
|
||||||
|
$results = [];
|
||||||
|
foreach ($rs as $r) {
|
||||||
|
$result = [];
|
||||||
|
foreach ($custom as $key => $value) {
|
||||||
|
$result[$key] = $r[$value];
|
||||||
|
}
|
||||||
|
|
||||||
|
$results[] = $result;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $results;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static function getFileValues($file, $resource, $elements = [], $search = null)
|
||||||
|
{
|
||||||
|
$superselect = self::getSelectInfo();
|
||||||
|
|
||||||
|
$where = [];
|
||||||
|
$filter = [];
|
||||||
|
$search_fields = [];
|
||||||
|
|
||||||
|
$custom = [
|
||||||
|
'id' => 'id',
|
||||||
|
'text' => 'descrizione',
|
||||||
|
];
|
||||||
|
|
||||||
|
require $file;
|
||||||
|
|
||||||
|
if (!isset($results) && !empty($query)) {
|
||||||
|
$results = self::completeResults($query, $where, $filter, $search_fields, $custom);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $results;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static function getSelectInfo()
|
||||||
|
{
|
||||||
|
return !empty($_SESSION['superselect']) ? $_SESSION['superselect'] : [];
|
||||||
|
}
|
||||||
|
}
|
|
@ -123,7 +123,9 @@ class HTMLBuilder
|
||||||
protected static function generate($json)
|
protected static function generate($json)
|
||||||
{
|
{
|
||||||
// Elaborazione del formato
|
// Elaborazione del formato
|
||||||
list($values, $extras) = self::elaborate($json);
|
$elaboration = self::elaborate($json);
|
||||||
|
$values = $elaboration[0];
|
||||||
|
$extras = $elaboration[1];
|
||||||
|
|
||||||
$result = null;
|
$result = null;
|
||||||
if (!empty($values)) {
|
if (!empty($values)) {
|
||||||
|
|
Loading…
Reference in New Issue