Skip to content

Commit e8d34ca

Browse files
committed
fix: ricerca globale
1 parent b990fea commit e8d34ca

9 files changed

Lines changed: 51 additions & 13 deletions

File tree

modules/anagrafiche/ajax/search.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@
2727

2828
$link_id = Module::where('name', 'Anagrafiche')->first()->id;
2929

30+
$results = [];
31+
3032
$fields = [
3133
'Codice' => 'codice',
3234
'Ragione sociale' => 'ragione_sociale',

modules/articoli/ajax/search.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@
2626

2727
$show_prezzi = Auth::user()['gruppo'] != 'Tecnici' || (Auth::user()['gruppo'] == 'Tecnici' && setting('Mostra i prezzi al tecnico'));
2828

29+
$results = [];
30+
2931
$fields = [
3032
'idarticolo' => '`mg_articoli`.`id`',
3133
'codice' => '`mg_articoli`.`codice`',

modules/automezzi/ajax/search.php

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,15 @@
55

66
$link_id = Module::where('name', 'Automezzi')->first()->id;
77

8+
$results = [];
9+
810
$fields = [
911
'Nome' => 'nome',
1012
'Descrizione' => 'descrizione',
1113
'Targa' => 'targa',
1214
];
1315

14-
$query = 'SELECT * FROM an_sedi WHERE 1=0 ';
16+
$query = 'SELECT * FROM dt_automezzi WHERE 1=0 ';
1517

1618
foreach ($fields as $name => $value) {
1719
$query .= ' OR '.$value.' LIKE '.prepare('%'.$term.'%');
@@ -24,14 +26,14 @@
2426
foreach ($rs as $r) {
2527
$result = [];
2628

27-
$result['link'] = ROOTDIR.'/editor.php?id_module='.$link_id.'&id_record='.$r['id'];
29+
$result['link'] = base_path().'/editor.php?id_module='.$link_id.'&id_record='.$r['id'];
2830
$result['title'] = $r['nome'];
2931
$result['category'] = tr('Automezzi');
3032

3133
// Campi da evidenziare
3234
$result['labels'] = [];
3335
foreach ($fields as $name => $value) {
34-
if (str_contains((string) $r[$name], (string) $term)) {
36+
if (string_contains($r[$name], $term)) {
3537
$text = str_replace($term, "<span class='highlight'>".$term.'</span>', $r[$name]);
3638

3739
$result['labels'][] = $name.': '.$text.'<br/>';

modules/ddt/ajax/search.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@
2121
include_once __DIR__.'/../../../core.php';
2222
use Models\Module;
2323

24+
$results = [];
25+
2426
$fields = [
2527
'Numero' => 'numero',
2628
'Numero secondario' => 'numero_esterno',

modules/fatture/ajax/search.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@
2121
include_once __DIR__.'/../../../core.php';
2222
use Models\Module;
2323

24+
$results = [];
25+
2426
$fields = [
2527
'Numero' => 'numero',
2628
'Numero secondario' => 'numero_esterno',

modules/impianti/ajax/search.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@
2323

2424
$link_id = Module::where('name', 'Impianti')->first()->id;
2525

26+
$results = [];
27+
2628
$fields = [
2729
'Matricola' => 'matricola',
2830
'Nome' => 'nome',

modules/interventi/ajax/search.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@
2323

2424
$link_id = Module::where('name', 'Interventi')->first()->id;
2525

26+
$results = [];
27+
2628
$fields = [
2729
'Codice intervento' => 'codice',
2830
'Data intervento' => '(SELECT MIN(orario_inizio) FROM in_interventi_tecnici WHERE idintervento=in_interventi.id)',

modules/preventivi/ajax/search.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@
2323

2424
$link_id = Module::where('name', 'Preventivi')->first()->id;
2525

26+
$results = [];
27+
2628
$fields = [
2729
'Codice preventivo' => 'numero',
2830
'Nome' => 'nome',
@@ -41,7 +43,7 @@
4143
$query .= ' OR '.$value.' LIKE "%'.$term.'%"';
4244
}
4345

44-
$query .= Modules::getAdditionalsQuery('Preventivi');
46+
$query .= Modules::getAdditionalsQuery(Module::where('name', 'Preventivi')->first()->id);
4547

4648
$rs = $dbo->fetchArray($query);
4749

src/AJAX.php

Lines changed: 31 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ public static function selectResults($query, $where, $filter = [], $search = [],
147147
public static function search($term)
148148
{
149149
if (strlen($term) < 2) {
150-
return;
150+
return [];
151151
}
152152

153153
$files = self::find('ajax/search.php');
@@ -157,9 +157,15 @@ public static function search($term)
157157

158158
$results = [];
159159
foreach ($files as $file) {
160-
$module_results = self::getSearchResults($file, $term);
160+
try {
161+
$module_results = self::getSearchResults($file, $term);
161162

162-
$results = array_merge($results, $module_results);
163+
if (is_array($module_results)) {
164+
$results = array_merge($results, $module_results);
165+
}
166+
} catch (Exception $e) {
167+
// Continua con gli altri moduli
168+
}
163169
}
164170

165171
return $results;
@@ -335,27 +341,43 @@ protected static function transformElementLink($element, $link)
335341
*/
336342
protected static function getSearchResults($file, $term)
337343
{
344+
// Verifica che il file esista
345+
if (!file_exists($file)) {
346+
return [];
347+
}
348+
338349
// Database
339350
$dbo = $database = database();
340351

341352
// Ricerca anagrafiche per ragione sociale per potere mostrare gli interventi, fatture,
342353
// ordini, ecc della persona ricercata
343354
$idanagrafiche = ['-1'];
344355
$ragioni_sociali = ['-1'];
345-
$rs = $dbo->fetchArray('SELECT idanagrafica, ragione_sociale FROM an_anagrafiche WHERE ragione_sociale LIKE "%'.$term.'%"');
346356

347-
for ($a = 0; $a < sizeof($rs); ++$a) {
348-
$idanagrafiche[] = $rs[$a]['idanagrafica'];
349-
$ragioni_sociali[$rs[$a]['idanagrafica']] = $rs[$a]['ragione_sociale'];
357+
try {
358+
$rs = $dbo->fetchArray('SELECT idanagrafica, ragione_sociale FROM an_anagrafiche WHERE ragione_sociale LIKE '.prepare('%'.$term.'%'));
359+
360+
for ($a = 0; $a < sizeof($rs); ++$a) {
361+
$idanagrafiche[] = $rs[$a]['idanagrafica'];
362+
$ragioni_sociali[$rs[$a]['idanagrafica']] = $rs[$a]['ragione_sociale'];
363+
}
364+
} catch (Exception $e) {
365+
// Continua senza anagrafiche
350366
}
351367

352368
$results = [];
353369

354-
require $file;
370+
try {
371+
require $file;
372+
} catch (Exception $e) {
373+
return [];
374+
}
355375

356376
$results = (array) $results;
357377
foreach ($results as $key => $value) {
358-
$results[$key]['value'] = $key;
378+
if (is_array($value)) {
379+
$results[$key]['value'] = $key;
380+
}
359381
}
360382

361383
return $results;

0 commit comments

Comments
 (0)