TypeError in search on GLPI 12: "Tags - Entity" search option uses a string join condition
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
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
- GLPI 12.0.0, tag plugin 2.15.0
- Add the "Tags - Entity" column (search option
10501) to the Ticket list display - 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
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di pluginsGLPI/tag
-
Tag column label is incorrectly prefixed by Carbon plugin labelForse già presa @btry l’ha presa 7 giorni fa. Apertabug
pluginsGLPI/tag#383 · 5 commenti · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di pluginsGLPI/tag
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
FriendsOfFlarum/best-answer#137 ·
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 90/100
-
bug
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 86/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
I maintainer di solito rispondono entro 1 giorno
-
[Admin]: Installation failsAperta🧠 Admin
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno