Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

TypeError in search on GLPI 12: "Tags - Entity" search option uses a string join condition

Aperta Adatta ai principianti
#389 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
1/5
Tempo stimato
Meno di un'ora
Idoneità per principianti
90/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
php
Ambito
backend

Direzione di ricerca

Apri hook.php e individua plugin_tag_getAddSearchOptionsNew(), in particolare l'opzione di ricerca con id 10501 e il suo joinparams condition impostato sulla stringa "AND 1=1". Sostituiscilo con un \Glpi\DBAL\QueryExpression racchiuso in un array come mostrato nel diff suggerito dall'issue, mantenendo il commento che spiega perché la condizione esiste. Verifica aggiungendo la colonna "Tags - Entity" all'elenco dei ticket in un'istanza GLPI 12 e confermando che non compaia alcun TypeError di analyseCrit(); controlla se ci sono test del plugin o una voce di CHANGELOG da aggiornare.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

Description

After upgrading to GLPI 12.0.0 with tag 2.15.0, every search that includes the "Tags - Entity" search option (id 10501) fails. This breaks the ticket list, dashboard cards based on saved searches, and saved search alerts (cron).

GLPI 12 no longer accepts a raw SQL string as join condition: DBmysqlIterator::analyseCrit() is now typed array $crit.

Steps to reproduce

  1. GLPI 12.0.0, tag plugin 2.15.0
  2. Add the "Tags - Entity" column (search option 10501) to the Ticket list display
  3. Open the ticket list (or any dashboard card / saved search on Ticket)

Error

glpi.CRITICAL: *** Uncaught PHP Exception TypeError: "DBmysqlIterator::analyseCrit(): Argument #1 ($crit) must be of type array, string given, called in ./src/DBmysqlIterator.php on line 602"
  ./src/DBmysqlIterator.php:602              DBmysqlIterator->analyseCrit()
  ./src/DBmysqlIterator.php:820              DBmysqlIterator->analyseCrit()
  ./src/DBmysqlIterator.php:612              DBmysqlIterator->analyseFkey()
  ./src/DBmysqlIterator.php:767              DBmysqlIterator->analyseCrit()
  ./src/DBmysqlIterator.php:327              DBmysqlIterator->analyseJoins()
  ./src/Glpi/DBAL/Parts/BasePart.php:64      DBmysqlIterator->buildQuery()
  ./src/Search.php:710                       Glpi\DBAL\Parts\BasePart->withCriteria()
  ./src/Glpi/Search/Provider/SQLProvider.php:4867  Search::addLeftJoin()
  ./src/Search.php:263                       Glpi\Search\Provider\SQLProvider::constructSQL()
  ./src/SavedSearch.php:1154                 Search::constructSQL()

Cause

hook.php, in plugin_tag_getAddSearchOptionsNew():

'joinparams'    =>  [
    'condition'  => "AND 1=1", // to force distinct complex id than the previous option

Suggested fix

Use an array condition, which keeps the distinct complex id while matching the GLPI 12 API:

-                    'condition'  => "AND 1=1", // to force distinct complex id than the previous option
+                    'condition'  => [new \Glpi\DBAL\QueryExpression('1=1')], // to force distinct complex id than the previous option

We applied this patch locally: the ticket list and dashboard cards work again.

Environment

  • GLPI 12.0.0 (official Docker image ghcr.io/glpi-project/glpi:12.0.0)
  • tag 2.15.0
  • PHP 8.x, MariaDB 11.8
Lingua principale
PHP
Stelle
29
Fork
26
Merge medio
1g 5h
PR unite (30g)
10

Preparare l'ambiente

  • Nessun Dockerfile né file Docker Compose
  • Ha un modello di pull request
  • Nessuna guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di pluginsGLPI/tag

Tutte le issue di pluginsGLPI/tag

Issue simili

Altre issue su PHP

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.