Skip to content

Removing the last display preference on an list view silently fails #22286

@btry

Description

@btry

Code of Conduct

  • I agree to follow this project's Code of Conduct

Is there an existing issue for this?

  • I have searched the existing issues

Version

11.0-dev

Bug description

When a user removes all display preferences of an itemtype, an exception is raised due to a missing key in $_POST.

Relevant log output

None. An exception is raised in fromt/displaypreferences.php but does not produce any log entry, nor error message in the UI

Page URL

/front/computertype.php

Steps To reproduce

There are two scenarios

### 1st scenario

  • Create a computer type
  • Display the list of computer types
  • Change the display preferences and add one column. Close the display prefs modal to refresh the list
  • Open again the display preferences, remove the additional column, close the modal
  • The list should refresh but the columns remains unchanged; the display preference is still visible

### 2nd scenario

  • Create a computer type
  • Display the list of computer types
  • Change the display preferences and add at least 2 columns. Close the display prefs modal to refresh the list
  • Open again the display preferences, remove all additional columns, close the modal
  • The list should refresh but one display preference is still visible; the others are properly deleted

Your GLPI setup information

GLPI information
GLPI: 11.0.5-dev-git-fix_removal_last_display_pref-b02c213ff2 ( => /var/www/glpi)
Installation mode: GIT
Current language: fr_FR
Source Integrity: N/A
Server
Operating system: Linux c54f3f1fd98c 6.14.0-36-generic #​36~24.04.1-Ubuntu SMP PREEMPT_DYNAMIC Wed Oct 15 15:45:17 UTC 2 x86_64

PHP: 8.4.12 apache2handler

PHP extensions: Core, date, libxml, openssl, pcre, sqlite3, zlib, ctype, curl, dom, fileinfo, filter, hash, iconv, json,
mbstring, SPL, session, PDO, pdo_sqlite, bz2, posix, random, Reflection, standard, SimpleXML, tokenizer, xml, xmlreader,
xmlwriter, mysqlnd, apache2handler, bcmath, Phar, exif, gd, intl, ldap, memcached, mysqli, pcntl, redis, sodium, xmlrpc, zip,
Zend OPcache, xdebug

Setup: disable_functions="" max_execution_time="30" max_input_vars="1000" memory_limit="128M" post_max_size="8M"
session.cookie_secure="0" session.cookie_httponly="1" session.cookie_samesite="" session.save_handler="files"
upload_max_filesize="2M"

Web server: Apache/2.4.65 (Debian) (Apache/2.4.65 (Debian) Server at localhost Port 8081)

User agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36

Database:

Server Software: (Ubuntu)

Server Version: 8.0.44-0ubuntu0.24.04.1

Server SQL Mode: STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

Parameters: [email protected]/glpi11a

Host info: host.docker.internal via TCP/IP

Requirements:
PHP version (8.4.12) is supported.
OS and PHP are relying on 64 bits integers.
Sessions configuration is OK.
Allocated memory is sufficient.
Following extensions are installed: dom, fileinfo, filter, libxml, simplexml, tokenizer, xmlreader,
xmlwriter.
mysqli extension is installed
curl extension is installed
gd extension is installed
intl extension is installed
mbstring extension is installed
zlib extension is installed
bcmath extension is installed
The constant
SODIUM_CRYPTO_AEAD_XCHACHA20POLY1305_IETF_NPUBBYTES is present.
openssl extension is installed
Database engine version (8.0.44) is supported.
The log file has been created successfully.
Write access
to /var/www/glpi/files/_cache has been validated.
Write access to /var/www/glpi/files/_cron has been validated.
Write access to /var/www/glpi/files has been validated.
Write access to /var/www/glpi/files/_graphs has been validated.
Write access to /var/www/glpi/files/_lock has been validated.
Write access to /var/www/glpi/files/_pictures has been validated.
Write access to /var/www/glpi/files/_plugins has been validated.
Write access to /var/www/glpi/files/_rss has been validated.
Write access to /var/www/glpi/files/_sessions has been validated.
Write access to /var/www/glpi/files/_tmp has been validated.
Write access to /var/www/glpi/files/_uploads has been validated.

Sessions configuration is secured.
exif extension is installed
ldap extension is installed
Following extensions are installed: bz2,
Phar, zip.
Zend OPcache extension is installed
Following extensions are installed:
ctype, iconv, sodium.
Write access to
/var/www/glpi/marketplace has been validated.
Timezones seems not loaded, see
https://glpi-install.readthedocs.io/en/latest/timezones.html.

GLPI constants

GLPI_ROOT: "/var/www/glpi"
GLPI_VERSION: "11.0.5-dev"
GLPI_SCHEMA_VERSION: "11.0.5-dev@6fb23347853af210966f29093a92f26ee444d14f"
GLPI_FILES_VERSION: "11.0.5-dev-00000000"
GLPI_MIN_PHP: "8.2"
GLPI_MAX_PHP: "8.5"
GLPI_YEAR: "2025"
GLPI_I18N_DIR: "/var/www/glpi/locales"
GLPI_ENVIRONMENT_TYPE: "development"
GLPI_CONFIG_DIR: "/var/www/glpi/config"
GLPI_VAR_DIR: "/var/www/glpi/files"
GLPI_MARKETPLACE_DIR: "/var/www/glpi/marketplace"
GLPI_ALLOW_IFRAME_IN_RICH_TEXT: false
GLPI_SERVERSIDE_URL_ALLOWLIST: ["^\n (http|https|feed)://
# protocol\n (\n (?:\n
(?:xn--[a-z0-9-]++\.)*+xn--[a-z0-9-]++ # a domain name using punycode\n
|\n (?:[\pL\pN\pS\pM\-\]++\.)+[\pL\pN\pM]++ # a multi-level domain
name\n |\n [a-z0-9\-\
]++
# a single-level domain name\n )\.?\n |
# or\n \d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}
# an IP address\n | #
or\n \[\n
(?:(?:(?:(?:(?:(?:(?:[0-9a-f]{1,4})):){6})(?:(?:(?:(?:(?:[0-9a-f]{1,4})):(?:(?:[0-9a-f]{1,4})))|(?:(?:(?:(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9]))\.){3}(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9])))))))|(?:(?:::(?:(?:(?:[0-9a-f]{1,4})):){5})(?:(?:(?:(?:(?:[0-9a-f]{1,4})):(?:(?:[0-9a-f]{1,4})))|(?:(?:(?:(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9]))\.){3}(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9])))))))|(?:(?:(?:(?:(?:[0-9a-f]{1,4})))?::(?:(?:(?:[0-9a-f]{1,4})):){4})(?:(?:(?:(?:(?:[0-9a-f]{1,4})):(?:(?:[0-9a-f]{1,4})))|(?:(?:(?:(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9]))\.){3}(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9])))))))|(?:(?:(?:(?:(?:(?:[0-9a-f]{1,4})):){0,1}(?:(?:[0-9a-f]{1,4})))?::(?:(?:(?:[0-9a-f]{1,4})):){3})(?:(?:(?:(?:(?:[0-9a-f]{1,4})):(?:(?:[0-9a-f]{1,4})))|(?:(?:(?:(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9]))\.){3}(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9])))))))|(?:(?:(?:(?:(?:(?:[0-9a-f]{1,4})):){0,2}(?:(?:[0-9a-f]{1,4})))?::(?:(?:(?:[0-9a-f]{1,4})):){2})(?:(?:(?:(?:(?:[0-9a-f]{1,4})):(?:(?:[0-9a-f]{1,4})))|(?:(?:(?:(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9]))\.){3}(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9])))))))|(?:(?:(?:(?:(?:(?:[0-9a-f]{1,4})):){0,3}(?:(?:[0-9a-f]{1,4})))?::(?:(?:[0-9a-f]{1,4})):)(?:(?:(?:(?:(?:[0-9a-f]{1,4})):(?:(?:[0-9a-f]{1,4})))|(?:(?:(?:(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9]))\.){3}(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9])))))))|(?:(?:(?:(?:(?:(?:[0-9a-f]{1,4})):){0,4}(?:(?:[0-9a-f]{1,4})))?::)(?:(?:(?:(?:(?:[0-9a-f]{1,4})):(?:(?:[0-9a-f]{1,4})))|(?:(?:(?:(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9]))\.){3}(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9])))))))|(?:(?:(?:(?:(?:(?:[0-9a-f]{1,4})):){0,5}(?:(?:[0-9a-f]{1,4})))?::)(?:(?:[0-9a-f]{1,4})))|(?:(?:(?:(?:(?:(?:[0-9a-f]{1,4})):){0,6}(?:(?:[0-9a-f]{1,4})))?::))))\n
\] # an IPv6 address\n
)\n (?:/ (?:[\pL\pN\pS\pM\-._\
!$&'()+,;=:@]|%[0-9A-Fa-f]{2}) )* # a path\n
(?:\? (?:[\pL\pN\-._\~!$&'\\+,;=:@/?]|%[0-9A-Fa-f]{2}) )? # a query (optional)\n
$~ixuD"]
GLPI_DISALLOWED_UPLOADS_PATTERN: "/\.(php\d*|phar)$/i"
GLPI_TELEMETRY_URI: "https://telemetry.glpi-project.org"
GLPI_INSTALL_MODE: "GIT"
GLPI_NETWORK_MAIL: "[email protected]"
GLPI_NETWORK_SERVICES: "https://services.glpi-network.com"
GLPI_MARKETPLACE_ENABLE: 3
GLPI_MARKETPLACE_PRERELEASES: true
GLPI_MARKETPLACE_ALLOW_OVERRIDE: true
GLPI_MARKETPLACE_MANUAL_DOWNLOADS: true
GLPI_USER_AGENT_EXTRA_COMMENTS: ""
GLPI_DOCUMENTATION_ROOT_URL: "https://links.glpi-project.org"
GLPI_DISABLE_ONLY_FULL_GROUP_BY_SQL_MODE: "1"
GLPI_LOG_LVL: "debug"
GLPI_SKIP_UPDATES: false
GLPI_STRICT_ENV: true
GLPI_AJAX_DASHBOARD: "1"
GLPI_CALDAV_IMPORT_STATE: 0
GLPI_CENTRAL_WARNINGS: "1"
GLPI_SYSTEM_CRON: false
GLPI_TEXT_MAXSIZE: "4000"
GLPI_WEBHOOK_ALLOW_RESPONSE_SAVING: "1"
GLPI_WEBHOOK_CRA_MANDATORY: false
GLPI_ALTCHA_MODE: "interactive"
GLPI_ALTCHA_MAX_NUMBER: 50000
GLPI_ALTCHA_EXPIRATION_INTERVAL: "PT20M"
GLPI_DOC_DIR: "/var/www/glpi/files"
GLPI_CACHE_DIR: "/var/www/glpi/files/_cache"
GLPI_CRON_DIR: "/var/www/glpi/files/_cron"
GLPI_GRAPH_DIR: "/var/www/glpi/files/_graphs"
GLPI_LOCAL_I18N_DIR: "/var/www/glpi/files/_locales"
GLPI_LOCK_DIR: "/var/www/glpi/files/_lock"
GLPI_LOG_DIR: "/var/www/glpi/files/_log"
GLPI_PICTURE_DIR: "/var/www/glpi/files/_pictures"
GLPI_PLUGIN_DOC_DIR: "/var/www/glpi/files/_plugins"
GLPI_RSS_DIR: "/var/www/glpi/files/_rss"
GLPI_SESSION_DIR: "/var/www/glpi/files/_sessions"
GLPI_TMP_DIR: "/var/www/glpi/files/_tmp"
GLPI_UPLOAD_DIR: "/var/www/glpi/files/_uploads"
GLPI_INVENTORY_DIR: "/var/www/glpi/files/_inventories"
GLPI_THEMES_DIR: "/var/www/glpi/files/_themes"
GLPI_PLUGINS_DIRECTORIES: ["/var/www/glpi/marketplace","/var/www/glpi/plugins"]
GLPI_NETWORK_API_URL: "https://services.glpi-network.com/api"
GLPI_NETWORK_REGISTRATION_API_URL: "https://services.glpi-network.com/api/registration/"
GLPI_MARKETPLACE_PLUGINS_API_URI: "https://services.glpi-network.com/api/marketplace/"
Réplicats SQL

Not active
Notifications

Way of sending emails: PHP
Plugins list

news Name: Alerts Version: 1.13.0-beta2 State: Non installé
Install Method: Manual
carbon Name: Carbon Version: 1.2.0-dev State: Activé
Install Method: Manual
flyvemdm Name: Flyve Mobile Device Management Version: 2.0.0-rc.3 State: Non installé
Install Method: Manual
formcreator Name: Form Creator Version: 2.12.7 State: Non installé
Install Method: Manual
Locales overrides

/var/www/glpi/files/_locales/formcreator/form_1108_en_US.php
/var/www/glpi/files/_locales/formcreator/form_1109_en_US.php
/var/www/glpi/files/_locales/formcreator/form_1134_en_US.php
/var/www/glpi/files/_locales/formcreator/form_1135_en_US.php
/var/www/glpi/files/_locales/formcreator/form_1145_en_US.php
/var/www/glpi/files/_locales/formcreator/form_1146_en_US.php
/var/www/glpi/files/_locales/formcreator/form_1147_en_US.php
/var/www/glpi/files/_locales/formcreator/form_1148_en_US.php
/var/www/glpi/files/_locales/formcreator/form_1150_en_US.php
/var/www/glpi/files/_locales/formcreator/form_1151_en_US.php
/var/www/glpi/files/_locales/formcreator/form_1155_en_US.php
/var/www/glpi/files/_locales/formcreator/form_1156_en_US.php
/var/www/glpi/files/_locales/formcreator/form_1175_en_US.php
/var/www/glpi/files/_locales/formcreator/form_1176_en_US.php
/var/www/glpi/files/_locales/formcreator/form_1689_en_US.php
/var/www/glpi/files/_locales/formcreator/form_1690_en_US.php
/var/www/glpi/files/_locales/formcreator/form_1709_en_US.php
/var/www/glpi/files/_locales/formcreator/form_1710_en_US.php
/var/www/glpi/files/_locales/formcreator/form_1732_en_US.php
/var/www/glpi/files/_locales/formcreator/form_1733_en_US.php
/var/www/glpi/files/_locales/formcreator/form_1745_en_US.php
/var/www/glpi/files/_locales/formcreator/form_1746_en_US.php
/var/www/glpi/files/_locales/formcreator/form_2290_en_US.php
/var/www/glpi/files/_locales/formcreator/form_2291_en_US.php
/var/www/glpi/files/_locales/formcreator/form_2344_en_US.php
/var/www/glpi/files/_locales/formcreator/form_2345_en_US.php
/var/www/glpi/files/_locales/formcreator/form_2398_en_US.php
/var/www/glpi/files/_locales/formcreator/form_2399_en_US.php
/var/www/glpi/files/_locales/formcreator/form_2403_en_US.php
/var/www/glpi/files/_locales/formcreator/form_2404_en_US.php
/var/www/glpi/files/_locales/formcreator/form_2834_en_US.php
/var/www/glpi/files/_locales/formcreator/form_2835_en_US.php
/var/www/glpi/files/_locales/formcreator/form_2923_en_US.php
/var/www/glpi/files/_locales/formcreator/form_2924_en_US.php
/var/www/glpi/files/_locales/formcreator/form_2943_en_US.php
/var/www/glpi/files/_locales/formcreator/form_2944_en_US.php
/var/www/glpi/files/_locales/formcreator/form_3001_en_US.php
/var/www/glpi/files/_locales/formcreator/form_3002_en_US.php
/var/www/glpi/files/_locales/formcreator/form_3433_en_US.php
/var/www/glpi/files/_locales/formcreator/form_3434_en_US.php
/var/www/glpi/files/_locales/formcreator/form_3542_en_US.php
/var/www/glpi/files/_locales/formcreator/form_3543_en_US.php
/var/www/glpi/files/_locales/formcreator/form_3600_en_US.php
/var/www/glpi/files/_locales/formcreator/form_3601_en_US.php
/var/www/glpi/files/_locales/formcreator/form_4052_en_US.php
/var/www/glpi/files/_locales/formcreator/form_4053_en_US.php
/var/www/glpi/files/_locales/formcreator/form_4650_en_US.php
/var/www/glpi/files/_locales/formcreator/form_4651_en_US.php
/var/www/glpi/files/_locales/formcreator/form_5248_en_US.php
/var/www/glpi/files/_locales/formcreator/form_5249_en_US.php
/var/www/glpi/files/_locales/formcreator/form_526_en_US.php
/var/www/glpi/files/_locales/formcreator/form_527_en_US.php
/var/www/glpi/files/_locales/formcreator/form_528_en_US.php
/var/www/glpi/files/_locales/formcreator/form_532_en_US.php
/var/www/glpi/files/_locales/formcreator/form_533_en_US.php
/var/www/glpi/files/_locales/formcreator/form_537_en_US.php
/var/www/glpi/files/_locales/formcreator/form_538_en_US.php
/var/www/glpi/files/_locales/formcreator/form_539_en_US.php
/var/www/glpi/files/_locales/formcreator/form_540_en_US.php
/var/www/glpi/files/_locales/formcreator/form_542_en_US.php
/var/www/glpi/files/_locales/formcreator/form_543_en_US.php
/var/www/glpi/files/_locales/formcreator/form_551_en_US.php
/var/www/glpi/files/_locales/formcreator/form_552_en_US.php
/var/www/glpi/files/_locales/formcreator/form_553_en_US.php
/var/www/glpi/files/_locales/formcreator/form_554_en_US.php
/var/www/glpi/files/_locales/formcreator/form_558_en_US.php
/var/www/glpi/files/_locales/formcreator/form_559_en_US.php
/var/www/glpi/files/_locales/formcreator/form_5846_en_US.php
/var/www/glpi/files/_locales/formcreator/form_5847_en_US.php
/var/www/glpi/files/_locales/formcreator/form_589_en_US.php
/var/www/glpi/files/_locales/formcreator/form_590_en_US.php
/var/www/glpi/files/_locales/formcreator/form_6541_en_US.php
/var/www/glpi/files/_locales/formcreator/form_6542_en_US.php
/var/www/glpi/files/_locales/formcreator/form_7139_en_US.php
/var/www/glpi/files/_locales/formcreator/form_7140_en_US.php
/var/www/glpi/files/_locales/formcreator/form_7897_en_US.php
/var/www/glpi/files/_locales/formcreator/form_7898_en_US.php
/var/www/glpi/files/_locales/formcreator/form_798_en_US.php
/var/www/glpi/files/_locales/formcreator/form_799_en_US.php
/var/www/glpi/files/_locales/formcreator/form_8545_en_US.php
/var/www/glpi/files/_locales/formcreator/form_8546_en_US.php

Anything else?

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions