The present file will list all changes made to the project; according to the Keep a Changelog project.
- Business Rules for Changes
- Business Rules for Problems
- Configurable toast notification location
Link ITIL Object
andUnlink ITIL Object
massive actions for Tickets, Changes, and Problems.- Group approval requests (any user from group can approve).
- Satisfaction surveys for Changes
- New right for assigning service levels to ITIL Objects (UPDATE right also still allows this).
- New right for impersonation of users with less rights (Config UPDATE right also still allows this globally).
- Marketplace availability configuration.
- Toast popup message location configuration.
- Datacenter room grid size configuration (per room).
- Approval reminder automatic action.
- Reservation massive actions.
alias
andcode
fields for Locations.- Profile cloning.
- Associated elements for recurring ITIL Objects.
- Processes and Environment Variable tabs for automatically inventoried assets.
- Log viewer for logs in
files/_log
directory. - Custom palette/theme support (uses
files/_themes
directory by default). - Two-Factor Authentication (2FA) support via Time-based One-time Password (TOTP).
Deny login
authorization rule action to deny login for a user, but not prevent the import/existence of the user in GLPI.- Directly capture screenshots or screen recordings from the "Add a document" form in tickets.
- With a clean install, dashboards now show fake/placeholder data by default with a message indicating you are viewing demonstration data and a button to disable it.
- Assets that can be assigned to users/groups have new "View assigned" and "Update assigned" rights which give read/update access to users and groups assigned to the asset.
ODS
andXLS
export of search results.- Support for the well-known `change-password" URI which can be used by some password managers to automatically (or assist with) changing a user's password.
- CLI commands for creating local GLPI users, enabling/disabling/deleting users, resetting local GLPI user passwords and granting profile assignments.
- ITIL Objects can now be linked to any other ITIL Objects similar to the previous Ticket/Ticket links.
- Logs are now shown using the Search Engine
- The approval option previously named
Group
is now calledGroup user(s)
to better reflect that it shows a list of users from a specific group rather than allow sending an approval for a group. - The ticket business rule action
Ticket category from code
was renamed toITIL category from code
. - The ticket business rule criteria
Code representing the ticket category
was renamed toCode representing the ITIL category
. - The ticket business rule criteria
Ticket location
was renamed toLocation
. - ITIL Templates can now restrict available statuses.
- Improved offline mode for marketplace.
- Lines can be assigned directly to assets without needing a SIM card.
- Planning event occurances can be detached from a series.
- Locations are now displayed in Datacenter breadcrumbs.
- Marketplace CLI download command now supports downloading specific versions of plugins.
- Browse tab of Knowledgebase now uses the Search Engine.
- Satisfaction surveys can now be configured with a custom maximum score, default score, and if a comment is required.
- LDAP TLS version can now be specified.
- Kanabn view state can be reset from the Kanban if the user has the right to modify the view.
- Personal reminders in central view now include only non-public reminders created by the user.
- Public reminders in central view now include public reminders regardless of who created them.
- Project description field is now a rich text field.
- Entity, profile, debug mode flag, and language are restored after ending impersonation.
- Volumes now show
Used percentage
instead ofFree percentage
. - Budget "Main" tab now shows negative values for "Total remaining in the budget" in parentheses instead of with a negative sign to align with typical accounting practices.
- Followups and Tasks no longer visible without the "See public" or "See private" rights even if the user has permission to be assigned the parent ITIL Object.
- Followups, Tasks and Solutions now check the
canView()
method of the parent ITIL Object rather than just the "See my/See author" right of the parent item. This means they now take into account "See all", "See group", etc. rights for the global permission check. Permission checks at the item-level have not been changed. - External Links
Link or filename
andFile content
fields now use Twig templates instead of a custom tag syntax. - Itemtypes associated with External links are now in the main form rather than a separate tab.
- The
Computer_Item
class has been replaced by the\Glpi\Asset\Asset_PeripheralAsset
class. - List of network ports in a VLAN form now shows the NetworkPort link in a breadcrumb manner (MyServer > eth0 where MyServer is a link to the computer and eth0 is a link to the port).
- Running
front/cron.php
orbin/console
will attempt to check and block execution if running as root. - Testing LDAP replicates now shows results as toast notifications rather than inside the replicate tab after a page reload.
- The debug tab that was present, for some items, when the debug mode was active, no longer exists. The corresponding features have been either moved, either removed.
Group
andGroup in charge
fields for assets may now contain multiple groups.- "If software are no longer used" transfer option is now taken into account rather than always preserving.
- Notifications can now specify exclusions for recipients.
- Survey URL tags
TICKETCATEGORY_ID
andTICKETCATEGORY_NAME
are deprecated and replaced byITILCATEGORY_ID
andITILCATEGORY_NAME
respectively. Search::joinDropdownTranslations()
- XML-RPC API.
Link tickets
massive action for Tickets (UseLink ITIL Object
instead).Link to a problem
massive action for Tickets (UseLink ITIL Object
instead).- Manage tab for Knowledgebase (Unpublished is now a toggle in the browse tab).
- The database "master" property in the status checker (/status.php and glpi:system:status), replaced by "main".
- The database "slaves" property in the status checker (/status.php and glpi:system:status), replaced by "replicas".
- API URL is no longer customizable within GLPI. Use alias/rewrite rules in your web server configuration instead if needed.
status.php
andbin/console system:status
no longer supports plain-text output.Glpi\System\Status\StatusChecker::getServiceStatus()
as_array
parameter.Sylk
export of search results.full_width_adapt_column
option for fields macros has been removed.
phpCAS
library is now bundled in GLPI, to prevent version compatibility issues.Glpi\DBAL\QueryFunction
class with multiple static methods for building SQL query function strings in an abstract way.fetchSessionMessages()
global JS function to display new session messages as toast notifications without requiring a page reload.is_exclusion
column added toglpi_notificationtargets
table.
- Many methods have their signature changed to specify both their return type and the types of their parameters.
chartist
library has been replaced byecharts
.codemirror
library has been replaced bymonaco-editor
.htmLawed
library has been replaced bysymfony/html-sanitizer
.monolog/monolog
has been upgraded to version 3.3.photoswipe
library has been upgraded to version 5.x.phpmailer/phpmailer
library has been replaced bysymfony/mailer
.true/punycode
library has been removed.Symfony
libraries have been upgraded to version 6.0.users_id_validate
field inCommonITILValidation
will now have a0
value until someone approves or refuses the validation. Approval targets (who the approval is for) is now indicated byitemtype_target
anditems_id_target
fields.- Notifications are not deduplicated anymore.
- Notifications with
Approver
recipient have had this recipient replaced with the newApproval target
recipient to maintain previous behavior as much as possible. The previous recipient option still exists if needed. This replacement will only happen once during the upgrade. GLPIMailer
mailer class does not extends anymorePHPMailer\PHPMailer\PHPMailer
. We added a compatibility layer to handle main usages found in plugins, but we cannot ensure compatibility with all properties and methods that were inherited fromPHPMailer\PHPMailer\PHPMailer
.CommonGLPI::$othertabs
static property has been made private.CommonGLPI::createTabEntry()
signature changed.- All types of rules are now sortable and ordered by ranking.
- Plugins console commands must now use the normalized prefix
plugins:XXX
whereXXX
is the plugin key. - GLPI web root is now the
/public
directory and all web request to PHP scripts are proxified bypublic/index.php
script. - Usage of
DBmysql::query()
,DBmysql::queryOrDie()
method are prohibited to ensure that legacy unsafe DB are no more executed. Building and executing raw queries usingDBmysql::request()
,DBmysqlIterator::buildQuery()
andDBmysqlIterator::execute()
methods is also prohibited. To execute DB queries, eitherDBmysql::request()
can be used to craft query using the GLPI query builder, eitherDBmysql::doQuery()
/DBmysql::doQueryOrDie()
can be used for safe queries to execute DB query using a self-crafted a SQL string. js/fuzzysearch.js
replaced withFuzzySearch/Modal
Vue component.Html::fuzzySearch()
replaced withHtml::getMenuFuzzySearchList()
function.NotificationEvent::raiseEvent()
signature cahnged. A new$trigger
parameter has been added at 4th position, and$label
is now the 5th parameter.NotificationEventInterface::raise()
has a new$trigger
parameter.QueryExpression
class moved toGlpi\DBAL
namespace.QueryParam
class moved toGlpi\DBAL
namespace.QuerySubQuery
class moved toGlpi\DBAL
namespace.QueryUnion
class moved toGlpi\DBAL
namespace.PrinterLog::getMetrics()
method has been made final.SavedSearch::showSaveButton()
replaced withpages/tools/savedsearch/save_button.html.twig
template.showSystemInformations
method for$CFG_GLPI['systeminformations_types']
types renamed togetSystemInformation
and should return an array with a label and content.DisplayPreference
config form POST handling moved toajax/displaypreference.php
script. The front file is for displaying the tabs only.Document::send()
signature changed. The$context
parameter has been removed.title
property of Kanban items must be text only. HTML no longer supported.kanban:filter
JS event now includes the columns in the event data. Filtering must set the_filtered_out
property of cards to hide them instead of changing the elements in the DOM.CommonITILActor::getActors()
signature changed. The$items_id
parameter must strictly be an integer.- The
date_mod
property for historical entries returned byLog::getHistoryData
is no longer formatted based on the user's preferences. Rule::dropdownRulesMatch()
has been made protected.ITILTemplateField::showForITILTemplate()
method is no longer abstract.CommonITILTask::getItilObjectItemType
is now static.- The
Item_Ticket$1
tab should be used in replacement of theTicket$1
tab to display tickets associated with an item. - Specifying the
ranking
of a rule during add/update now triggersRuleCollection::moveRule
to manage the rankings of other rules to try to keep them valid and in order. Lock::getLocksQueryInfosByItemType()
has been made private.DBmysql::request()
,DBmysqlIterator::buildQuery()
andDBmysqlIterator::execute()
methods signatures changed.- Some values for the
$type
parameters of severalStat
methods have changed to match English spelling (technicien -> technician). showInstantiationForm()
method for Network Port classes are now expected to output HTML for a flex form instead of a table.NetworkName::showFormForNetworkPort()
now outputs HTML for a flex form instead of a table.NetworkPortInstantiation::showSocketField()
,NetworkPortInstantiation::showMacField()
,NetworkPortInstantiation::showNetworkCardField
now outputs HTML for a flex form instead of a table.CommonGLPI::can*()
andCommonDBTM::can*()
methods now have strict type hints for their parameters and return types.- Multiple methods in
CommonDevice
and sub-classes now have return types defined (classes that extends these must match the new method signatures). templates/password_form.html.twig
should no longer be used directly. Usetemplates/forgotpassword.html.twig
,templates/updatepassword.html.twig
or a custom template.- Usage of
ajax/dropdownMassiveActionAddValidator.php
andajax/dropdownValidator.php
now requires avalidation_class
parameter. - Usage of
ajax/dropdownValidator.php
with theusers_id_validate
parameter is no longer supported. Useitems_id_target
instead. Glpi\Dashboard\Filters\AbstractFilter::field()
method has been made protected.- Usage of
CommonITILValidation::dropdownValidator()
with thename
andusers_id_validate
options are no longer supported. Useprefix
anditemtype_target
/items_id_target
respectively instead. - The
helper
property of form fields will not support anymore the presence of HTML code. Glpi\Application\ErrorHandler
constructor visibility has been changed to private.GLPI::initErrorHandler()
does not return any value anymore.- The
inc/autoload.function.php
,inc/based_config.php
,inc/config.php
,inc/db.function.php
andinc/define.php
files have been removed and theinc/includes.php
file has been almost emptied. The corresponding global functions, constants and variables are now loaded and initialized automatically and the corresponding GLPI boostraping logic is now executed automatically. Plugin::init()
andPlugin::checkStates()
methods signature changed. It is not anymore possible to exclude specific plugins.- In a HTTP request context,
$_SERVER['PATH_INFO']
,$_SERVER['SCRIPT_FILENAME'] and
$_SERVER['SCRIPT_NAME']will no longer contain the path to the requested script, but will contain the path to the
public/index.php` script. - Any class added to
$CFG_GLPI['directconnect_types']
must now use theGlpi\Features\AssignableItem
trait as multi-group support is required. - For assets,
groups_id
andgroups_id_tech
fields were changed from integers to arrays and are loaded into thefields
array aftergetFromDB
/getEmpty
. If reading directly from the DB, you need to query the new linking tableglpi_groups_items
. Group::getDataItems()
signature changed. The two first parameters$types
and$field
were replaced by a unique boolean$tech
parameter that is used to compute the$types
and$field
values automatically.CartridgeItem::addCompatibleType()
method is now static.Transfer
class is now final.Transfer::addNotToBeTransfer()
method is now private.Transfer::addToAlreadyTransfer()
method is now private.Transfer::addToBeTransfer()
method is now private.Transfer::cleanSoftwareVersions()
method is now private.Transfer::copySingleSoftware()
method is now private.Transfer::copySingleVersion()
method is now private.Transfer::simulateTransfer()
method is now private.Transfer::transferAffectedLicense()
method is now private.Transfer::transferCertificates()
method is now private.Transfer::transferCompatiblePrinters()
method is now private.Transfer::transferContracts()
method is now private.Transfer::transferDevices()
method is now private.Transfer::transferDirectConnection()
method is now private.Transfer::transferDocuments()
method is now private.Transfer::transferDropdownLocation()
method is now private.Transfer::transferDropdownSocket()
method is now private.Transfer::transferHelpdeskAdditionalInformations()
method is now private.Transfer::transferHistory()
method is now private.Transfer::transferInfocoms()
method is now private.Transfer::transferItem()
method is now private.Transfer::transferItem_Disks()
method is now private.Transfer::transferItemSoftwares()
method is now private.Transfer::transferLinkedSuppliers()
method is now private.Transfer::transferNetworkLink()
method is now private.Transfer::transferPrinterCartridges()
method is now private.Transfer::transferReservations()
method is now private.Transfer::transferSingleSupplier()
method is now private.Transfer::transferSoftwareLicensesAndVersions()
method is now private.Transfer::transferSupplierContacts()
method is now private.Transfer::transferTaskCategory()
method is now private.Transfer::transferTickets()
method is now private.linkoption
option has been removed fromCommonDBTM::getLink()
.comments
andicon
options have been removed fromCommonDBTM::getName()
.comments
andicon
options have been removed fromCommonDBTM::getNameID()
.- The
$keepDb
parameter has been removed fromHtml::footer()
. DBConnection::createMainConfig()
signature changed. The$allow_myisam
parameter has been removed.DBConnection::createSlaveConnectionFile()
signature changed. The$allow_myisam
parameter has been removed.DBmysql::$allow_myisam
property has been removed.
- Usage of the
/marketplace
path for plugins URLs. All plugins URLs should now start with/plugins
. - Usage of
GLPI_PLUGINS_PATH
javascript variable. - Usage of
MAIL_SMTPSSL
andMAIL_SMTPTLS
constants. $AJAX_INCLUDE
global variable usage. Use$this->setAjax()
in legacy/ajax/
and/front
scripts orHtml::setAjax()
andSession::setAjax()
.- Usage of
name
andusers_id_validate
parameter inajax/dropdownValidator.php
. - Usage of
users_id_validate
parameter infront/commonitilvalidation.form.php
. ajax/itemTicket.php
script usage.ajax/knowbase.php
script usage.front/ticket_ticket.form.php
script usage.- Usage of
users_id_validate
input inCommonITILObject
. - Defining "users_id_validate" field without defining "itemtype_target"/"items_id_target" in "CommonITILValidation".
- Usage of
name
andusers_id_validate
options inCommonITILValidation::dropdownValidator()
. - Usage of
get_plugin_web_dir
Twig function. - Usage of
verbatim_value
Twig filter. js/Forms/FaIconSelector.js
and thereforewindow.GLPI.Forms.FaIconSelector
has been deprecated and replaced byjs/modules/Form/WebIconSelector.js
linkuser_types
,linkgroup_types
,linkuser_tech_types
,linkgroup_tech_types
configuration entries have been merged in a uniqueassignable_types
configuration entry.- Usage of the
front/dropdown.common.php
and thedropdown.common.form.php
files. There is now a generic controller that will serve the search and form pages of anyDropdown
class. - Usage of the
$link
parameter informatUserName()
andDbUtils::formatUserName()
. UseformatUserLink()
orDbUtils::formatUserLink()
instead. - Usage of the
$link
parameter ingetUserName()
andDbUtils::getUserName()
. UsegetUserLink()
,DbUtils::getUserLink()
, orUser::getInfoCard()
instead. Auth::getErr()
AuthLDAP::dropdownUserDeletedActions()
AuthLDAP::getOptions()
CommonITILObject::isValidator()
ComputerAntivirus
has been deprecated and replaced byItemAntivirus
ComputerVirtualMachine
has been deprecated and replaced byItemVirtualMachine
Config::validatePassword()
Contract::getExpiredCriteria()
renamed toContract::getNotExpiredCriteria()
to match the actual behavior.DBmysql::truncate()
DBmysql::truncateOrDie()
Document::getImage()
Glpi\Application\View\Extension\DataHelpersExtension::getVerbatimValue()
Glpi\Application\View\Extension\PluginExtension::getPluginWebDir()
Glpi\Dashboard\Filter::getAll()
Glpi\Event::showList()
Glpi\Features\DCBreadcrumb::getDcBreadcrumb()
Glpi\Features\DCBreadcrumb::getDcBreadcrumbSpecificValueToDisplay()
Glpi\Features\DCBreadcrumb::isEnclosurePart()
Glpi\Features\DCBreadcrumb::isRackPart()
Glpi\Http\Response::sendError()
. Throw aGlpi\Exception\Http\*HttpException
exception instead.Glpi\Toolbox\Sanitizer::dbEscape()
Glpi\Toolbox\Sanitizer::dbEscapeRecursive()
Glpi\Toolbox\Sanitizer::dbUnescape()
Glpi\Toolbox\Sanitizer::dbUnescapeRecursive()
Glpi\Toolbox\Sanitizer::decodeHtmlSpecialChars()
Glpi\Toolbox\Sanitizer::decodeHtmlSpecialCharsRecursive()
Glpi\Toolbox\Sanitizer::encodeHtmlSpecialChars()
Glpi\Toolbox\Sanitizer::encodeHtmlSpecialCharsRecursive()
Glpi\Toolbox\Sanitizer::getVerbatimValue()
Glpi\Toolbox\Sanitizer::isDbEscaped()
Glpi\Toolbox\Sanitizer::isHtmlEncoded()
Glpi\Toolbox\Sanitizer::isNsClassOrCallableIdentifier()
Glpi\Toolbox\Sanitizer::sanitize()
Glpi\Toolbox\Sanitizer::unsanitize()
Html::ajaxFooter()
Html::cleanInputText()
Html::cleanPostForTextArea()
Html::createProgressBar()
Html::displayErrorAndDie()
. Throw aGlpi\Exception\Http\BadRequestHttpException
exception instead.Html::displayNotFoundError()
. Throw aGlpi\Exception\Http\NotFoundHttpException
exception instead.Html::displayRightError()
. Throw aGlpi\Exception\Http\AccessDeniedHttpException
exception instead.Html::entities_deep()
Html::entity_decode_deep()
HookManager::enableCSRF()
ITILFollowup::ADDMYTICKET
constant. UseITILFollowup::ADDMY
.ITILFollowup::ADDGROUPTICKET
constant. UseITILFollowup::ADD_AS_GROUP
.ITILFollowup::ADDALLTICKET
constant. UseITILFollowup::ADDALLITEM
.Knowbase::getTreeCategoryList()
Knowbase::showBrowseView()
Knowbase::showManageView()
KnowbaseItem::showManageForm()
Migration::updateRight()
. UseMigration::replaceRight()
instead.Pdu_Plug
has been deprecated and replaced byItem_Plug
Plugin::getWebDir()
Search::getOptions()
no longer returns a referenceTicket
link_to_problem
massive action is deprecated. UseCommonITILObject_CommonITILObject
add
massive action instead.Ticket_Ticket
add
massive action is deprecated. UseCommonITILObject_CommonITILObject
add
massive action instead.Ticket_Ticket::getLinkedTicketsTo()
Timer
classToolbox::addslashes_deep()
Toolbox::seems_utf8()
Toolbox::stripslashes_deep()
GLPI_USE_CSRF_CHECK
,GLPI_USE_IDOR_CHECK
,GLPI_CSRF_EXPIRES
,GLPI_CSRF_MAX_TOKENS
andGLPI_IDOR_EXPIRES
constants.GLPI_DEMO_MODE
constant.$CFG_GLPI_PLUGINS
global variable.$DBCONNECTION_REQUIRED
and$USEDBREPLICATE
global variables. UseDBConnection::getReadConnection()
to get the most apporpriate connection for read only operations.$dont_check_maintenance_mode
and$skip_db_check
global variables.$GLPI
global variable.$LANG
global variable.$PLUGINS_EXCLUDED
and$PLUGINS_INCLUDED
global variables.$SECURITY_STRATEGY
global variable.- Usage of
$CFG_GLPI['itemdevices']
and$CFG_GLPI['item_device_types']
configuration entries. UseItem_Devices::getDeviceTypes()
to get theItem_Devices
concrete class list. - Usage of
csrf_compliant
plugins hook. - Usage of
migratetypes
plugin hooks. - Usage of
planning_scheduler_key
plugins hook. - Logging within the
mail-debug.log
log file. X-GLPI-Sanitized-Content
REST API header support.- Handling of encoded/escaped value in
autoName()
. closeDBConnections
regenerateTreeCompleteName()
Cartridge::getNotificationParameters()
CartridgeItem::showDebug()
Certificate::showDebug()
Change::showDebug()
Change_Item::showForChange()
CommonDBTM::$deduplicate_queued_notifications
property.CommonDBTM::getCacheKeyForFriendlyName()
CommonDBTM::getSNMPCredential()
CommonDBTM::showDebugInfo()
CommonDevice::title()
CommonDropdown::$first_level_menu
,CommonDropdown::$second_level_menu
andCommonDropdown::$third_level_menu
properties.CommonDropdown::displayHeader()
CommonGLPI::$type
property.CommonGLPI::getAvailableDisplayOptions()
CommonGLPI::getDisplayOptions()
CommonGLPI::getDisplayOptionsLink()
CommonGLPI::updateDisplayOptions()
CommonGLPI::showDislayOptions()
CommonITILActor::showUserNotificationForm()
CommonITILActor::showSupplierNotificationForm()
CommonITILObject::getAssignName()
CommonITILValidation::alreadyExists()
CommonITILValidation::getTicketStatusNumber()
CommonTreeDropdown::sanitizeSeparatorInCompletename()
CommonTreeDropdown::unsanitizeSeparatorInCompletename()
Computer_Item::countForAll()
Computer_Item::disconnectForItem()
Computer_Item::dropdownAllConnect()
Computer_Item::showForComputer()
Computer_Item::showForItem()
ComputerAntivirus::showForComputer()
ComputerVirtualMachine::showForComputer()
Config::getCurrentDBVersion()
Config::showDebug()
Consumable::showAddForm()
Consumable::showForConsumableItem()
ConsumableItem::showDebug()
Contract::commonListHeader()
Contract::getContractRenewalIDByName()
Contract::showDebug()
Contract::showShort()
DbUtils::closeDBConnections()
DbUtils::regenerateTreeCompleteName()
Document::uploadDocument()
Document::showUploadedFilesDropdown()
Document_Item::showSimpleAddForItem()
DropdownTranslation::canBeTranslated()
. Translations are now always active.DropdownTranslation::isDropdownTranslationActive()
. Translations are now always active.Entity::getDefaultContractValues()
Entity::title()
FieldUnicity::showDebug()
GLPI::getErrorHandler()
GLPI::getLogLevel()
Glpi\Api\API::showDebug()
Glpi\Api\API::returnSanitizedContent()
Glpi\Dashboard\Filter::dates()
Glpi\Dashboard\Filter::dates_mod()
Glpi\Dashboard\Filter::itilcategory()
Glpi\Dashboard\Filter::requesttype()
Glpi\Dashboard\Filter::location()
Glpi\Dashboard\Filter::manufacturer()
Glpi\Dashboard\Filter::group_tech()
Glpi\Dashboard\Filter::user_tech()
Glpi\Dashboard\Filter::state()
Glpi\Dashboard\Filter::tickettype()
Glpi\Dashboard\Filter::displayList()
Glpi\Dashboard\Filter::field()
Glpi\Dashboard\Widget::getCssGradientPalette()
Glpi\Inventory\Conf::importFile()
Glpi\Socket::executeAddMulti()
Glpi\Socket::showNetworkPortForm()
Glpi\System\Requirement\DataDirectoriesProtectedPath
class.Glpi\System\Requirement\ProtectedWebAccess
class.Glpi\System\Requirement\MysqliMysqlnd
class.Glpi\System\Requirement\SafeDocumentRoot
class.Glpi\System\Status\StatusChecker::getFullStatus()
Group::title()
Html::autocompletionTextField()
Html::clean()
Html::closeArrowMassives()
Html::displayAccessDeniedPage()
Html::displayAjaxMessageAfterRedirect()
. The JS function is already provided byjs/misc.js
.Html::displayItemNotFoundPage()
Html::jsConfirmCallback()
Html::jsHide()
Html::jsShow()
Html::openArrowMassives()
Html::showTimeField()
Impact::buildNetwork()
Infocom::showDebug()
IPNetwork::recreateTree()
IPNetwork::title()
Item_Problem::showForProblem()
Item_Ticket::showForTicket()
KnowbaseItem::addToFaq()
KnowbaseItem::addVisibilityJoins()
KnowbaseItem::addVisibilityRestrict()
KnowbaseItem::showBrowseForm()
KnowbaseItem_Comment::displayComments()
KnowbaseItem_KnowbaseItemCategory::displayTabContentForItem()
KnowbaseItem_KnowbaseItemCategory::getTabNameForItem()
KnowbaseItem_KnowbaseItemCategory::showForItem()
KnowbaseItemTranslation::canBeTranslated()
. Translations are now always active.KnowbaseItemTranslation::isKbTranslationActive()
. Translations are now always active.Link::showForItem()
Link_Itemtype::showForLink()
MailCollector::listEncodings()
MailCollector::title()
ManualLink::showForItem()
MigrationCleaner
classNetpoint
classNetworkAlias::getInternetNameFromID()
NetworkName::getInternetNameFromID()
NetworkPort::getAvailableDisplayOptions()
NetworkPort::getNetworkPortInstantiationsWithNames()
NetworkPort::resetConnections()
NetworkPortInstantiation::getGlobalInstantiationNetworkPortDisplayOptions()
NetworkPortInstantiation::getInstantiationHTMLTable()
and all sub classes overrides.NetworkPortInstantiation::getInstantiationHTMLTableHeaders()
and all sub classes overrides.NetworkPortInstantiation::getInstantiationHTMLTableWithPeer()
NetworkPortInstantiation::getInstantiationNetworkPortDisplayOptions()
NetworkPortInstantiation::getInstantiationNetworkPortHTMLTable()
NetworkPortInstantiation::getPeerInstantiationHTMLTable()
and all sub classes overrides.NetworkPortMigration
classNotificationEvent::debugEvent()
NotificationTemplateTranslation::showDebug()
OlaLevel::showForSLA()
. Replaced byLevelAgreementLevel::showForLA()
.PlanningExternalEvent::addVisibilityRestrict()
PlanningRecall::specificForm()
Plugin::migrateItemType()
ProfileRight::updateProfileRightAsOtherRight()
ProfileRight::updateProfileRightsAsOtherRights()
Project::showDebug()
ProjectTask::showDebug()
QuerySubQuery
class. Replaced byGlpi\DBAL\QuerySubQuery
.QueryUnion
class. Replaced byGlpi\DBAL\QueryUnion
.Reminder::addVisibilityJoins()
ReminderTranslation::canBeTranslated()
. Translations are now always active.ReminderTranslation::isReminderTranslationActive()
. Translations are now always active.Reservation::displayError()
ReservationItem::showDebugResa()
RSSFeed::addVisibilityJoins()
RSSFeed::addVisibilityRestrict()
RSSFeed::showDiscoveredFeeds()
Rule::$can_sort
property.Rule::$orderby
property.Rule::showDebug()
Rule::showMinimalActionForm()
Rule::showMinimalCriteriaForm()
Rule::showMinimalForm()
Rule::showNewRuleForm()
RuleCollection::showTestResults()
RuleRight::showNewRuleForm()
RuleRightCollection::displayActionByName()
RuleRightCollection::showTestResults()
RuleImportComputer
class.RuleImportComputerCollection
class.RuleMatchedLog::showFormAgent()
.RuleMatchedLog::showItemForm()
.Search::SYLK_OUTPUT
constant.Search::computeTitle()
Search::csv_clean()
Search::findCriteriaInSession()
Search::getDefaultCriteria()
Search::getLogicalOperators()
Search::getMetaReferenceItemtype()
Search::outputData()
Search::sylk_clean()
SlaLevel::showForSLA()
. Replaced byLevelAgreementLevel::showForLA()
.SLM::setTicketCalendar()
SoftwareLicense::getSonsOf()
SoftwareLicense::showDebug()
Transfer::$inittype
property.Ticket::showDebug()
Ticket_Ticket::checkParentSon()
Ticket_Ticket::countOpenChildren()
Ticket_Ticket::manageLinkedTicketsOnSolved()
. Replaced byCommonITILObject_CommonITILObject::manageLinksOnChange()
.Toolbox::canUseCas()
Toolbox::checkValidReferer()
Toolbox::clean_cross_side_scripting_deep()
Toolbox::endsWith()
Toolbox::filesizeDirectory()
Toolbox::getHtmLawedSafeConfig()
Toolbox::getHtmlToDisplay()
Toolbox::handleProfileChangeRedirect()
Toolbox::logError()
Toolbox::logNotice()
Toolbox::logWarning()
Toolbox::sodiumDecrypt()
Toolbox::sodiumEncrypt()
Toolbox::unclean_cross_side_scripting_deep()
Transfer::manageConnectionComputer()
User::showDebug()
User::title()
XML
class.- Usage of
Search::addOrderBy
signature with ($itemtype, $ID, $order) parameters - Javascript file upload functions
dataURItoBlob
,extractSrcFromImgTag
,insertImgFromFile()
,insertImageInTinyMCE
,isImageBlobFromPaste
,isImageFromPaste
. CommonDBTM::$fkfield
property.getHTML
action forajax/fuzzysearch.php
endpoint.Config::showLibrariesInformation()
DisplayPreference::showFormGlobal
target
parameter.DisplayPreference::showFormPerso
target_id
parameter.$DEBUG_SQL,
$SQL_TOTAL_REQUEST,
$TIMER_DEBUGand
$TIMER` global variables.$CFG_GLPI['debug_sql']
and$CFG_GLPI['debug_vars']
configuration options.DropdownTranslation::getTranslationByName()
addgroup
anddeletegroup
actions infront/user.form.php
.ajax/ticketassigninformation.php
script. Useajax/actorinformation.php
instead.ajax/planningcheck.php
script. UsePlanning::showPlanningCheck()
instead.test_ldap
andtest_ldap_replicate
actions infront/authldap.form.php
. Useajax/ldap.php
instead.ajax/ticketsatisfaction.php
andajax/changesatisfaction.php
scripts. Accessajax/commonitilsatisfaction.php
directly instead.- Usage of the
$cut
parameter informatUserName()
andDbUtils::formatUserName()
.
- Searching IDs in dropdowns now matches the beginning of the ID instead of anywhere in the ID.
condition
anddisplaywith
parameters must now be added in IDOR token creation data when they are not empty.
- Permissions for historical data and system logs (Administration > Logs) are now managed by "Historical (READ)" and "System Logs (READ)" respectively.
Entity::cleanEntitySelectorCache()
no longer has any effect as the entity selector is no longer cached as a unique entry
- Usage of the
DBmysql::query()
method is deprecated, for security reasons, as it is most of the time used in an insecure way. To execute DB queries, eitherDBmysql::request()
can be used to craft query using the GLPI query builder, eitherDBmysql::doQuery()
can be used for safe queries to execute DB query using a self-crafted SQL string. This deprecation will not trigger any error, unless theGLPI_STRICT_DEPRECATED
constant is set totrue
, to avoid cluttering error logs.
- Unified Debug bar feature has been added to display debug information in the browser as a replacement and expansion on the previous, individual debug panels.
- Debug panels and the toggle button to show/hide the primary debug panel that was next to the current user's name in the top right corner of the screen have been removed.
debug_tabs
plugin hook
CommonDBTM::getMessageReferenceEvent()
method that can be overridden to tweak notifications grouping in mail clients.
-
Html::displayDebugInfo()
method no longer has any effect. The functionality was replaced by the new Debug Bar feature. -
Hooks::DEBUG_TABS
-
$TIMER_DEBUG
global variable. -
$DEBUG_SQL
global variable. -
$SQL_TOTAL_REQUEST
global variable. -
$CFG_GLPI['debug_sql']
configuration option. -
$CFG_GLPI['debug_vars']
configuration option. -
Usage of parameter
$clean
inAuthLDAP::getObjectByDn()
andAuthLDAP::getUserByDn()
.
- Itemtype that can be linked to a disk are now declared in
$CFG_GLPI['disk_types']
.
Glpi\Inventory\Conf::importFile()
RSSFeed::showDiscoveredFeeds()
Toolbox::checkValidReferer()
glpi:
command prefix has been removed from console commands canonical name.
CommonDBTM::pre_addToDB()
added.
- PDF export library has been changed back from
mPDF
toTCPDF
.
- Gantt feature has been moved into the
gantt
plugin.
plugin_xxx_activate()
andplugin_xxx_deactivate
hooks support.
Glpi\Api\Api::initEndpoint()
visibility changed toprotected
.
GlpiGantt
javascript helper anddhtmlx-gantt
library.Glpi\Gantt
namespace and all corresponding classes.Project::getDataToDisplayOnGantt()
Project::showGantt()
ProjectTask::getDataToDisplayOnGantt()
ProjectTask::getDataToDisplayOnGanttForProject()
- Added UUID to all other itemtypes that are related to Operating Systems (Phones, Printers, etc)
- Added a button to the General > System configuration tab to copy the system information
- APCu and WinCache are not anymore use by GLPI, use
php bin/console cache:configure
command to configure cache system. - PDF export library has been changed from
TCPDF
tomPDF
. - The search engine and search results page now support sorting by multiple fields.
- The search result lists now refresh/update without triggering a full page reload.
- Replaced user-facing cases of master/slave usage replaced with main/replica.
- Usage of XML-RPC API is deprecated.
- The database "slaves" property in the status checker (/status.php and glpi:system:status) is deprecated. Use "replicas" instead,
- The database "master" property in the status checker (/status.php and glpi:system:status) is deprecated. Use "main" instead,
- Autocomplete feature on text fields.
- Usage of alternative DB connection encoding (
DB::$dbenc
property). - Deprecated
scripts/ldap_mass_sync.php
has been removed in favor ofglpi:ldap:synchronize_users
command available usingbin/console
- Deprecated
scripts/compute_dictionary.php
has been removed in favor ofglpi:rules:replay_dictionnary_rules
command available usingbin/console
- Deprecated
scripts/softcat_mass_compute.php
has been removed in favor ofglpi:rules:process_software_category_rules
command available usingbin/console
- Added
DBMysql::setSavepoint()
to create savepoints within a transaction. - Added
CommonDBTM::showForm()
to have a generic showForm for asset (based on a twig template).
- MySQL warnings are now logged in SQL errors log.
Guzzle
library has been upgraded to version 7.4.Symfony\Console
library has been upgraded to version 5.4.CommonGLPI
constructor signature has been declared in an interface (CommonGLPIInterface
).DBmysqlIterator
class compliancy withIterator
has been fixed (i.e.DBmysqlIterator::next()
does not return current row anymore).Domain
class inheritance changed fromCommonDropdown
toCommonDBTM
.showForm()
method of all classes inheritingCommonDBTM
have been changed to matchCommonDBTM::showForm()
signature.- Format of
Message-Id
header sent in Tickets notifications changed to match format used by other items. - Added
DB::truncate()
to replace raw SQL queries - Impact context
positions
field type changed fromTEXT
toMEDIUMTEXT
- Field
date
of KnowbaseItem has been renamed todate_creation
. - Field
date_creation
of KnowbaseItem_Revision has been renamed todate
. - Field
date_creation
of NetworkPortConnectionLog has been renamed todate
. - Field
date
of Notepad has been renamed todate_creation
. - Field
date_mod
of ObjectLock has been renamed todate
. - Field
date
of ProjectTask has been renamed todate_creation
. - Table
glpi_netpoints
has been renamed toglpi_sockets
. GLPI_FORCE_EMPTY_SQL_MODE
constant has been removed in favor ofGLPI_DISABLE_ONLY_FULL_GROUP_BY_SQL_MODE
usage.CommonDBTM::clone()
,CommonDBTM::prepareInputForClone()
andCommonDBTM::post_clone()
has been removed. Clonable objects must now useGlpi\Features\Clonable
trait.CommonDBTM::notificationqueueonaction
property has been removed in favor ofCommonDBTM::deduplicate_queued_notifications
property.CommonDropdown::displaySpecificTypeField()
has a new$options
parameter.DBMysql::rollBack
supports aname
parameter for rolling back to a savepoint.Knowbase::getJstreeCategoryList()
as been replaced byKnowbase::getTreeCategoryList()
.NetworkPortInstantiation::showNetpointField()
has been renamed toNetworkPortInstantiation::showSocketField()
.NotificationSettingConfig::showForm()
renamed toNotificationSettingConfig::showConfigForm()
.RuleMatchedLog::showForm()
renamed toRuleMatchedLog::showItemForm()
.Search::addOrderBy()
signature changed.TicketSatisfaction::showForm()
renamed toTicketSatisfaction::showSatisfactionForm()
.Transfer::transferDropdownNetpoint()
has been renamed toTransfer::transferDropdownSocket()
.Dashboard
global javascript object has been moved toGLPI.Dashboard
.
- Usage of
MyISAM
engine in database, in favor ofInnoDB
engine. - Usage of
utf8mb3
charset/collation in database in favor ofutf8mb4
charset/collation. - Usage of
datetime
field type in database, in favor oftimestamp
field type. - Handling of encoded/escaped value in
autoName()
Netpoint
has been deprecated and replaced bySocket
CommonDropdown::displayHeader()
, useCommonDropdown::displayCentralHeader()
instead and make sure to override properlyfirst_level_menu
,second_level_menu
andthird_level_menu
.GLPI::getLogLevel()
Glpi\System\Status\StatusChecker::getFullStatus()
Html::clean()
MailCollector::listEncodings()
RuleImportComputer
classRuleImportComputerCollection
classSLM::setTicketCalendar()
Toolbox::clean_cross_side_scripting_deep()
Toolbox::endsWith()
Toolbox::filesizeDirectory()
Toolbox::getHtmlToDisplay()
Toolbox::logError()
Toolbox::logNotice()
Toolbox::logWarning()
Toolbox::sodiumDecrypt()
Toolbox::sodiumEncrypt()
Toolbox::startsWith()
Toolbox::unclean_cross_side_scripting_deep()
jQueryUI
has been removed in favor oftwbs/bootstrap
. This implies removal of following widgets:$.accordion
,$.autocomplete
,$.button
,$.dialog
,$.draggable
,$.droppable
,$.progressbar
,$.resizable
,$.selectable
,$.sortable
,$.tabs
,$.tooltip
.- Usage of
$order
parameter ingetAllDataFromTable()
(DbUtils::getAllDataFromTable()
) - Usage of
table
parameter in requests made toajax/comments.php
- Usage of
GLPI_FORCE_EMPTY_SQL_MODE
constant - Usage of
GLPI_PREVER
constant - Support of
doc_types
,helpdesk_types
andnetport_types
keys inPlugin::registerClass()
$CFG_GLPI['layout_excluded_pages']
entry$CFG_GLPI['transfers_id_auto']
entry$CFG_GLPI['use_ajax_autocompletion']
entry$DEBUG_AUTOLOAD
global variable$LOADED_PLUGINS
global variable$PHP_LOG_HANDLER
global variable$SQL_LOG_HANDLER
global variableCommonDBTM::notificationqueueonaction
propertyNotificationTarget::html_tags
propertygetAllDatasFromTable()
getRealQueryForTreeItem()
Ajax::createFixedModalWindow()
Ajax::createSlidePanel()
Calendar_Holiday::cloneCalendar()
Calendar::duplicate()
CalendarSegment::cloneCalendar()
Change::getCommonLeftJoin()
Change::getCommonSelect()
Change::showAnalysisForm()
Change::showPlanForm()
CommonDBTM::clone()
CommonDBTM::getRawName()
CommonDBTM::prepareInputForClone()
CommonDBTM::post_clone()
CommonDBTM::showDates()
CommonGLPI::isLayoutExcludedPage()
CommonGLPI::isLayoutWithMain()
CommonGLPI::showPrimaryForm()
CommonITILObject::displayHiddenItemsIdInput()
CommonITILObject::filterTimeline()
CommonITILObject::getActorIcon()
CommonITILObject::getSplittedSubmitButtonHtml()
CommonITILObject::showActorsPartForm()
CommonITILObject::showFormHeader()
CommonITILObject::showGroupsAssociated()
CommonITILObject::showSupplierAddFormOnCreate()
CommonITILObject::showSuppliersAssociated()
CommonITILObject::showTimeline()
CommonITILObject::showTimelineForm()
CommonITILObject::showTimelineHeader()
CommonITILObject::showUsersAssociated()
Computer_Item::cloneComputer()
Computer_Item::cloneItem()
Computer_SoftwareLicense
classComputer_SoftwareVersion
classComputerAntivirus::cloneComputer()
Contract::cloneItem()
Contract_Item::cloneItem()
ContractCost::cloneContract()
Config::agreeDevMessage()
Config::checkWriteAccessToDirs()
Config::displayCheckExtensions()
Config::getCache()
DBMysql::affected_rows()
DBMysql::areTimezonesAvailable()
DBMysql::data_seek()
DBMysql::fetch_array()
DBMysql::fetch_assoc()
DBMysql::fetch_object()
DBMysql::fetch_row()
DBMysql::field_name()
DBMysql::free_result()
DBmysql::getTableSchema()
DBMysql::insert_id()
DBMysql::isMySQLStrictMode()
DBMysql::list_fields()
DBMysql::notTzMigrated()
DBMysql::num_fields()
DbUtils::getRealQueryForTreeItem()
Dropdown::getDropdownNetpoint()
DCBreadcrumb::showDcBreadcrumb()
Document_Item::cloneItem()
Entity::showSelector()
Glpi\Marketplace\Api\Plugins::getNewPlugins()
Glpi\Marketplace\Api\Plugins::getPopularPlugins()
Glpi\Marketplace\Api\Plugins::getTopPlugins()
Glpi\Marketplace\Api\Plugins::getTrendingPlugins()
Glpi\Marketplace\Api\Plugins::getUpdatedPlugins()
Html::autocompletionTextField()
Html::displayImpersonateBanner()
Html::displayMainMenu()
Html::displayMenuAll()
Html::displayTopMenu()
Html::fileForRichText()
Html::generateImageName()
Html::imageGallery()
Html::jsDisable()
Html::jsEnable()
Html::nl2br_deep()
Html::replaceImagesByGallery()
Html::resume_name()
Html::setSimpleTextContent()
Html::setRichTextContent()
Html::showProfileSelecter()
Html::weblink_extract()
Infocom::cloneItem()
Itil_Project::cloneItilProject()
ITILFollowup::showApprobationForm()
ITILTemplate::getBeginHiddenFieldText()
ITILTemplate::getBeginHiddenFieldValue()
ITILTemplate::getEndHiddenFieldText()
ITILTemplate::getEndHiddenFieldValue()
Item_Devices::cloneItem()
Item_Disk::cloneItem()
Item_OperatingSystem::cloneItem()
Item_SoftwareLicense::cloneComputer()
Item_SoftwareLicense::cloneItem()
Item_SoftwareVersion::cloneComputer()
Item_SoftwareVersion::cloneItem()
Item_SoftwareVersion::showForComputer()
Item_SoftwareVersion::updateDatasForComputer()
KnowbaseItem_Item::cloneItem()
LevelAgreement::showForTicket()
NetworkPort::cloneItem()
Notepad::cloneItem()
NotificationTargetTicket::isAuthorMailingActivatedForHelpdesk()
Plugin::getGlpiPrever()
Plugin::isGlpiPrever()
Plugin::setLoaded()
Plugin::setUnloaded()
Plugin::setUnloadedByName()
Problem::getCommonLeftJoin()
Problem::getCommonSelect()
Problem::showAnalysisForm()
ProjectCost::cloneProject()
ProjectTeam::cloneProjectTask()
ProjectTask::cloneProjectTeam()
Reservation::displayReservationDay()
Reservation::displayReservationsForAnItem()
Search::isDeletedSwitch()
Ticket::getCommonLeftJoin()
Ticket::getCommonSelect()
Ticket::getTicketTemplateToUse()
Ticket::showDocumentAddButton()
Ticket_Ticket::displayLinkedTicketsTo()
TicketTemplate::getFromDBWithDatas()
Toolbox::canUseImapPop()
Toolbox::checkSELinux()
Toolbox::commonCheckForUseGLPI()
Toolbox::convertImageToTag()
Toolbox::decrypt()
Toolbox::doubleEncodeEmails()
Toolbox::encrypt()
Toolbox::getGlpiSecKey()
Toolbox::removeHtmlSpecialChars()
Toolbox::sanitize()
Toolbox::throwError()
Toolbox::unclean_html_cross_side_scripting_deep()
Toolbox::useCache()
Toolbox::userErrorHandlerDebug()
Toolbox::userErrorHandlerNormal()
Transfer::transferComputerSoftwares()
Update::declareOldItems()
User::showPersonalInformation()
X-Forwarded-For
header value is no longer used during API access controls, API requests passing through proxies may be refused for security reasons.
- All POST request made to
/ajax/
scripts are now requiring a valid CSRF token in theirX-Glpi-Csrf-Token
header. Requests done using jQuery are automatically including this header, from the moment that the page header is built usingHtml::includeHeader()
method and thejs/common.js
script is loaded.
- Usage of "followups" option in
CommonITILObject::showShort()
CommonITILTask::showInObjectSumnary()
ITILFollowup::showShortForITILObject()
- Remove deprecation of
Search::getMetaReferenceItemtype()
iframe
elements are not anymore allowed in rich text unlessGLPI_ALLOW_IFRAME_IN_RICH_TEXT
constant is defined totrue
Search::getMetaReferenceItemtype()
- Usage of alternative DB connection encoding (
DB::$dbenc
property).
- Ability to use SQL expressions as string in criterion values in SQL iterator (replaced by usage of
QueryExpression
). - Ability to delete a plugin image using
/front/pluginimage.send.php
script.
- Encrypted file systems support.
- Mails collected from suppliers can be marked as private on an entity basis.
- Ability to add custom CSS in entity configuration.
- CLI commands to enable and disable maintenance mode.
- Operating system links on Monitors, Peripherals, Phones and Printers.
- Add datacenter items to global search
- Project task search options for Projects
- Automatic action to purge closed tickets
- Ability to automatically calculate project's percent done
- Software link on Phones.
- Add and answer approvals from timeline
- Add lightbox with PhotoSwipe to timeline images
- Ability to copy tasks while merging tickets
- the API gives the ID of the user who logs in with initSession
- Kanban view for projects
- Network ports on Monitors
- Add warning when there are unsaved changes in forms
- Add ability to get information from the status endpoint in JSON format using Accept header
- Add
glpi:system:status
CLI command for getting the GLPI status
- PHP error_reporting and display_errors configuration directives are no longer overrided by GLPI, unless in debug mode (which forces reporting and display of all errors).
scripts/migrations/racks_plugin.php
has been replaced byglpi:migration:racks_plugin_to_core
command available usingbin/console
- Encryption alogithm improved using libsodium
- Add translation functions
__()
,_n()
,_x()
and_nx()
in javascript in browser context. Migration::renameItemtype()
method to update of database schema/values when an itemtype class is renamed- Menu returned by
CommonGLPI::getMenuContent()
method override may now define an icon for each menu entry. CommonDBConnexity::getItemsAssociatedTo()
method to get the items associated to the given oneCommonDBConnexity::getItemsAssociationRequest()
method to get the DB request to use to get the items associated to the given oneCommonDBTM::clone()
method to clone the current itemCommonDBTM::prepareInputForClone()
method to modify the input data that will be used for the cloningCommonDBTM::post_clone()
method to perform other steps after an item has been cloned (like clone the elements it is associated to)
- jQuery library has been upgraded from 2.2.x to 3.4.x. jQuery Migrate is used to ensure backward compatibility in most cases.
DBmysqlIterator::handleOrderClause()
supports QueryExpressions- Use Laminas instead of deprecated ZendFramework
- Database datetime fields have been replaced by timestamp fields to handle timezones support.
- Database integer/float fields values are now returned as number instead of strings from DB read operations.
- Field
domains_id
of Computer, NetworkEquipment and Printer has been dropped and data has been transfered intoglpi_domains_items
table. - Plugin status hook can now be used to provide an array with more information about the plugin's status the status of any child services.
- Returned array should contain a 'status' value at least (See status values in Glpi\System\Status\StatusChecker)
- Old style returns are still supported
DBMysql::fetch_array()
DBMysql::fetch_row()
DBMysql::fetch_assoc()
DBMysql::fetch_object()
DBMysql::data_seek()
DBMysql::insert_id()
DBMysql::num_fields()
DBMysql::field_name()
DBMysql::list_fields()
DBMysql::affected_rows()
DBMysql::free_result()
DBMysql::isMySQLStrictMode()
getAllDatasFromTable
renamed togetAllDataFromTable()
- Usage of
$order
parameter ingetAllDataFromTable()
(DbUtils::getAllDataFromTable()
) Ticket::getTicketTemplateToUse()
renamed toTicket::getITILTemplateToUse()
TicketTemplate::getFromDBWithDatas()
renamed toTicketTemplate::getFromDBWithData()
(inherited fromITILTemplate
)Computer_SoftwareLicense
replaced byItem_SoftwareLicense
and tableglpi_computers_softwarelicenses
renamed toglpi_items_softwarelicenses
Computer_SoftwareVersion
replaced byItem_SoftwareVersion
and tableglpi_computers_softwareversions
renamed toglpi_items_softwareversions
Item_SoftwareVersion::updateDatasForComputer
renamed toItem_SoftwareVersion::updateDatasForItem
Item_SoftwareVersion::showForComputer
renamed toItem_SoftwareVersion::showForItem
Item_SoftwareVersion::softsByCategory
renamed toItem_SoftwareVersion::softwareByCategory
Item_SoftwareVersion::displaySoftsByLicense
renamed toItem_SoftwareVersion::displaySoftwareByLicense
Item_SoftwareVersion::cloneComputer
renamed toItem_SoftwareVersion::cloneItem
Transfer::transferComputerSoftwares
renamed toTransfer::transferItemSoftwares
- 'getRealQueryForTreeItem()'
getCommonSelect
andgetCommonLeftJoin()
fromTicket
,Change
andProblem
are replaced withgetCommonCriteria()
compliant with db iteratorConfig::checkWriteAccessToDirs()
Config::displayCheckExtensions()
Toolbox::checkSELinux()
Toolbox::userErrorHandlerDebug()
Toolbox::userErrorHandlerNormal()
Html::jsDisable()
Html::jsEnable()
Plugin::setLoaded()
Plugin::setUnloaded()
Plugin::setUnloadedByName()
- Usage of
$LOADED_PLUGINS
global variable CommonDBTM::getRawName()
replaced byCommonDBTM::getFriendlyName()
Calendar_Holiday::cloneCalendar()
CalendarSegment::cloneCalendar()
Computer_Item::cloneComputer()
Computer_Item::cloneItem()
ComputerAntivirus::cloneComputer()
Contract::cloneItem()
Contract_Item::cloneItem()
ContractCost::cloneContract()
Document_Item::cloneItem()
Infocom::cloneItem()
Item_Devices::cloneItem()
Item_Disk::cloneItem()
Item_OperatingSystem::cloneItem()
Item_SoftwareLicense::cloneComputer()
Item_SoftwareLicense::cloneItem()
Item_SoftwareVersion::cloneComputer()
Item_SoftwareVersion::cloneItem()
Itil_Project::cloneItilProject()
KnowbaseItem_Item::cloneItem()
NetworkPort::cloneItem()
Notepad::cloneItem()
ProjectCost::cloneProject()
ProjectTeam::cloneProjectTask()
ProjectTask::cloneProjectTeam()
- Usage of
GLPIKEY
constant Toolbox::encrypt()
andToolbox::decrypt()
because they use the old encryption algorithm
- Usage of string
$condition
parameter inCommonDBTM::find()
- Usage of string
$condition
parameter inDropdown::addNewCondition()
- Usage of string in
$option['condition']
parameter inDropdown::show()
KnowbaseItemCategory::showFirstLevel()
Ticket::getTicketActors()
NotificationTarget::getProfileJoinSql()
NotificationTarget::getDistinctUserSql()
NotificationTargetCommonITILObject::getProfileJoinSql()
RuleCollection::getRuleListQuery()
getNextItem()
getPreviousItem()
CommonDBChild::getSQLRequestToSearchForItem()
CommonDBConnexity::getSQLRequestToSearchForItem()
CommonDBRelation::getSQLRequestToSearchForItem()
Project::addVisibility()
Project::addVisibilityJoins()
Plugin::hasBeenInit()
- 'SELECT DISTINCT' and 'DISTINCT FIELDS' criteria in
DBmysqlIterator::buildQuery()
CommonDBTM::getTablesOf()
CommonDBTM::getForeignKeyFieldsOf()
TicketFollowup
getDateRequest
andDbUtils::getDateRequest()
Html::convertTagFromRichTextToImageTag()
Transfer::createSearchConditionUsingArray()
- Unused constants GLPI_FONT_FREESANS and GLPI_SCRIPT_DIR
- For security reasons, autocompletion feature requires now to be authorized by a
'autocomplete' => true
flag in corresponding field search option.
The following methods have been deprecated:
Html::convertTagFromRichTextToImageTag()
The following methods have been deprecated:
CommonDBTM::getTablesOf()
CommonDBTM::getForeignKeyFieldsOf()
- new display hook
timeline_actions
to add new buttons to timeline forms - Ability to copy document links while merging tickets
The following methods have been deprecated:
Plugin::hasBeenInit()
- Deprecate 'SELECT DISTINCT' and 'DISTINCT FIELDS' criteria in
DBmysqlIterator::buildQuery()
- Drop
CommonITILObject::showSolutions()
.
- Ability to link project with problems and tickets.
- Ability to specify creation and modification dates during CommonDBTM object add method
- Add followups to Changes and Problems.
- Add timeline to Changes and Problems.
- CLI console to centralize CLI commands.
- Search on devices from Printers and Network equipments.
- Ability to merge and split tickets.
- Search on devices from Printers and Network equipments.
- Ability to specify creation and modification dates during CommonDBTM object add method.
license_id
field inglpi_items_operatingsystems
table has been renamed tolicenseid
olas_tto_id
field inglpi_tickets
table has been renamed toolas_id_tto
olas_ttr_id
field inglpi_tickets
table has been renamed toolas_id_ttr
ttr_olalevels_id
field inglpi_tickets
table has been renamed toolalevels_id_ttr
slas_tto_id
field inglpi_tickets
table has been renamed toslas_id_tto
slas_ttr_id
field inglpi_tickets
table has been renamed toslas_id_ttr
ttr_slalevels_id
field inglpi_tickets
table has been renamed toslalevels_id_ttr
scripts/add_creation_date.php
has been replaced byglpi:migration:build_missing_timestamps
command available usingbin/console
scripts/checkdb.php
has been replaced byglpi:database:check
command available usingbin/console
scripts/cliinstall.php
has been replaced byglpi:database:install
command available usingbin/console
scripts/cliupdate.php
has been replaced byglpi:database:update
command available usingbin/console
scripts/ldap_mass_sync.php
has been replaced byglpi:ldap:synchronize_users
command available usingbin/console
scripts/innodb_migration.php
has been replaced byglpi:migration:myisam_to_innodb
command available usingbin/console
scripts/unlock_tasks.php
has been replaced byglpi:task:unlock
command available usingbin/console
- Plugins are now loaded in ajax files.
TicketFollowup
has been replaced byITILFollowup
$num
parameter has been removed from severalSearch
class methods:addSelect()
,addOrderBy()
,addHaving()
,giveItem()
NotificationTarget::getMode()
visibility is nowpublic
.- Added
add_recipient_to_target
hook, triggered when a recipient is added to a notification.
- Remove
$CFG_GLPI['use_rich_text']
parameter. Will now betrue
per default. - Remove
$CFG_GLPI['ticket_timeline']
parameter. Will now betrue
per default. - Remove
$CFG_GLPI['ticket_timeline_keep_replaced_tabs']
parameter. Will now befalse
per default. - Usage of
TicketFollowup
class has been deprecated. - Usage of string
$condition
parameter inCommonDBTM::find()
has been deprecated. - Usage of string
$condition
parameter inDropdown::addNewCondition()
has been deprecated. - Usage of string in
$option['condition']
parameter inDropdown::show()
has been deprecated.
The following methods have been deprecated:
KnowbaseItemCategory::showFirstLevel()
Ticket::getTicketActors()
Ticket::processMassiveActionsForOneItemtype()
Ticket::showFormMassiveAction()
Ticket::showMassiveActionsSubForm()
NotificationTarget::getProfileJoinSql()
NotificationTarget::getDistinctUserSql()
NotificationTargetCommonITILObject::getProfileJoinSql()
RuleCollection::getRuleListQuery()
getNextItem()
getPreviousItem()
CommonDBChild::getSQLRequestToSearchForItem()
CommonDBConnexity::getSQLRequestToSearchForItem()
CommonDBRelation::getSQLRequestToSearchForItem()
Project::addVisibility()
Project::addVisibilityJoins()
-
Drop ability to use
JOIN
inDBmysqlIterator::buildQuery()
-
Drop
NotificationTarget::datas
property -
Drop support of string
$filter
parameter inProfileuser::getUserProfiles()
-
Drop support of string
$condition
parameter inUser::getFromDBbyEmail()
-
Drop support of string
$condition
parameter inGroup_User::getUserGroups()
-
Drop support of string
$condition
parameter inGroup_User::getGroupUsers()
-
Drop support of string
$condition
parameter incountElementsInTable
(DbUtils::countElementsInTable()
) -
Drop support of string
$condition
parameter incountDistinctElementsInTable
(DbUtils::countDistinctElementsInTable()
) -
Drop support of string
$condition
parameter incountElementsInTableForMyEntities
(DbUtils::countElementsInTableForMyEntities()
) -
Drop support of string
$condition
parameter incountElementsInTableForEntity
(DbUtils::countElementsInTableForEntity()
) -
Drop support of string
$condition
parameter ingetAllDatasFromTable
(DbUtils::getAllDataFromTable()
) -
Drop ITIL Tasks, Followups and Solutions
showSummary()
and massive actions related methods that are replaced with timeline -
Drop class alias
Event
forGlpi\Event
-
Drop
Zend\Loader\SplAutoloader
interface -
Drop all methods that have been deprecated in GLPI 9.2
_e()
_ex()
FieldExists()
formatOutputWebLink()
TableExists()
CommonTreeDropodwn::recursiveCleanSonsAboveID()
DBMysql::optimize_tables()
NotificationTarget::addToAddressesList()
NotificationTarget::getAdditionalTargets()
NotificationTarget::getAddressesByGroup()
NotificationTarget::getAddressesByTarget()
NotificationTarget::getAdminAddress()
NotificationTarget::getEntityAdminAddress()
NotificationTarget::getItemAuthorAddress()
NotificationTarget::getItemGroupAddress()
NotificationTarget::getItemGroupSupervisorAddress()
NotificationTarget::getItemGroupTechInChargeAddress()
NotificationTarget::getItemGroupWithoutSupervisorAddress()
NotificationTarget::getItemOwnerAddress()
NotificationTarget::getItemTechnicianInChargeAddress()
NotificationTarget::getNotificationTargets()
NotificationTarget::getSpecificTargets()
NotificationTarget::getUserByField()
NotificationTarget::getUsersAddressesByProfile()
NotificationTargetCommonITILObject::getDatasForObject()
NotificationTargetCommonITILObject::getFollowupAuthor()
NotificationTargetCommonITILObject::getLinkedGroupByType()
NotificationTargetCommonITILObject::getLinkedGroupSupervisorByType()
NotificationTargetCommonITILObject::getLinkedGroupWithoutSupervisorByType()
NotificationTargetCommonITILObject::getLinkedUserByType()
NotificationTargetCommonITILObject::getOldAssignTechnicianAddress()
NotificationTargetCommonITILObject::getRecipientAddress()
NotificationTargetCommonITILObject::getSupplierAddress()
NotificationTargetCommonITILObject::getTaskAssignGroup()
NotificationTargetCommonITILObject::getTaskAssignUser()
NotificationTargetCommonITILObject::getTaskAuthor()
NotificationTargetCommonITILObject::getValidationApproverAddress()
NotificationTargetCommonITILObject::getValidationRequesterAddress()
NotificationTargetProjectTask::getTeamContacts()
NotificationTargetProjectTask::getTeamGroups()
NotificationTargetProjectTask::getTeamSuppliers()
NotificationTargetProjectTask::getTeamUsers()
QueuedNotification::sendMailById()
Ticket::convertContentForNotification()
User::getPersonalToken()
User::getUniquePersonalToken()
-
Drop all methods that have been deprecated in GLPI 9.3.0
CommonDBTM::getFromDBByQuery()
CommonDBTM::getSearchOptions()
CommonDBTM::getSearchOptionsNew()
CommonDBTM::getSearchOptionsToAddNew()
CommonITILObject::getStatusIconURL()
DBMysql::list_tables()
Dropdown::showPrivatePublicSwitch()
NotificationTargetProjectTask::getTeamContacts()
NotificationTargetProjectTask::getTeamGroups()
NotificationTargetProjectTask::getTeamSuppliers()
NotificationTargetProjectTask::getTeamUsers()
Search::constructDatas()
Search::displayDatas()
Transfer::transferComputerDisks()
-
Drop all methods that have been deprecated in GLPI 9.3.1
ComputerVirtualMachine::getUUIDRestrictRequest()
Config::getSQLMode()
DBMysql::checkForCrashedTables()
Html::checkAllAsCheckbox()
Html::scriptEnd()
Html::scriptStart()
Plugin::isAllPluginsCSRFCompliant()
Profile::getUnderActiveProfileRestrictRequest()
Toolbox::is_a()
-
Drop all constants that have been deprecated in GLPI 9.3.1
CommonDBTM::ERROR_FIELDSIZE_EXCEEDED
CommonDBTM::HAS_DUPLICATE
CommonDBTM::NOTHING_TO_DO
CommonDBTM::SUCCESS
CommonDBTM::TYPE_MISMATCH
-
Drop all methods that have been deprecated in GLPI 9.3.2
-
ITILSolution::removeForItem()
-
Session::isViewAllEntities()
- Fix some cache issues
- Fix reservation tab of an item
- Fix actors notifications massive action
- Improve racks plugins migration script
No API changes.
Rule::executePluginsActions()
signature has changed- Javascript function
formatResult()
has been renamed totemplateResult()
The following methods have been deprecated:
CommonITILTask::displayTabContentForItem()
CommonITILTask::showFormMassiveAction()
CommonITILTask::showSummary()
ITILSolution::displayTabContentForItem()
ITILSolution::removeForItem()
ITILSolution::showSummary()
Session::isViewAllEntities()
TicketFollowup::processMassiveActionsForOneItemtype()
TicketFollowup::showFormMassiveAction()
TicketFollowup::showMassiveActionsSubForm()
TicketFollowup::showSummary()
Plugin::removeFromSession()
- List receivers folders to choose imported/refused folders
- Usage of string
$condition
parameter inGroup_User::getUserGroups()
has been deprecated - Usage of string
$condition
parameter inGroup_User::getGroupUsers()
has been deprecated - Usage of string
$condition
parameter incountElementsInTable
(DbUtils::countElementsInTable()
) has been deprecated - Usage of string
$condition
parameter incountDistinctElementsInTable
(DbUtils::countDistinctElementsInTable()
) has been deprecated - Usage of string
$condition
parameter incountElementsInTableForMyEntities
(DbUtils::countElementsInTableForMyEntities()
) has been deprecated - Usage of string
$condition
parameter incountElementsInTableForEntity
(DbUtils::countElementsInTableForEntity()
) has been deprecated - Usage of string
$condition
parameter ingetAllDatasFromTable
(DbUtils::getAllDataFromTable()
) has been deprecated
The following methods have been deprecated:
Config::getSQLMode()
DBMysql::checkForCrashedTables()
Html::checkAllAsCheckbox()
Html::scriptEnd()
Html::scriptStart()
Toolbox::is_a()
ComputerVirtualMachine::getUUIDRestrictRequest()
Plugin::isAllPluginsCSRFCompliant()
Profile::getUnderActiveProfileRestrictRequest()
The following constants have been deprecated:
CommonDBTM::ERROR_FIELDSIZE_EXCEEDED
CommonDBTM::HAS_DUPLICATE
CommonDBTM::NOTHING_TO_DO
CommonDBTM::SUCCESS
CommonDBTM::TYPE_MISMATCH
- Add DCIM management
- Add OSM view to set locations and on Search
- Add login source selection
- Add logs purge
- Filter in items logs
- Switch MySQL engine from MyIsam to Innodb
- Rework solutions for Tickets, Problems and Changes to support history
- Disks can be attached to network equipments and printers
- Added
DB::insert()
,DB::update()
andDB::delete()
to replace raw SQL queries CommonITILObject::showMassiveSolutionForm()
now takes aCommonITILObject
as argumentProfileuser::getUserProfiles()
$filter
parameter is now an arrayUser::getFromDBbyEmail()
$condition
parameter is now an array- Select2 javascript component has been upgraded to 4.0 version, see Migrating from Select2 3.5
CommonDevice::getItem_DeviceType()
has a new optional$devicetype
parameter
- Usage of string
$filter
parameter inProfileuser::getUserProfiles()
has been deprecated - Usage of string
$condition
parameter inUser::getFromDBbyEmail()
has been deprecated
The following methods have been deprecated:
CommonDBTM::getFromDBByQuery()
CommonDBTM::getSearchOptions()
CommonDBTM::getSearchOptionsNew()
CommonDBTM::getSearchOptionsToAddNew()
CommonITILObject::getStatusIconURL()
DBMysql::list_tables()
Dropdown::showPrivatePublicSwitch()
NotificationTargetProject::getTeamContacts()
NotificationTargetProject::getTeamGroups()
NotificationTargetProject::getTeamSuppliers()
NotificationTargetProject::getTeamUsers()
Search::constructDatas()
Search::displayDatas()
Transfer::transferComputerDisks()
CommonITILValidation::isAllValidationsHaveSameStatusForTicket
CommonITILValidation::getNumberValidationForTicket
- PHPCas library is no longer provided (for licensing issues)
CommonITILValidation::isAllValidationsHaveSameStatusForTicket
CommonITILValidation::getNumberValidationForTicket
DBMysql::optimize_tables()
- Search engine, added
itemtype_item_revert
jointype
Ticket::convertContentForNotification()
- Link knowledge base entries with assets or tickets
- Revisions on knowledge base entries and their translations, with diff view
- Add recursive comments on knowledge base entries
- Direct links to KB article's title for a direct access
- Load minified CSS and JS files (core and plugins) that are generated on release
- Link beetween software licenses
- Alerts on saved searches
- Add ajax browsers notifications in addition to emails
- Plugins can now add new notifications types (xmpp, sms, telegram, ...) to be used along with standard notifications
- Simcard component
- Synchronization field for LDAP
- Improved performances on large entities databases
- Remember me on login
- Fuzzy search
- Paste images in rich text editor
- Add tasks in tickets templates
- Composite tickets (link on sons/parents)
- Telemetry
- Certificates component
- Firmwares components (BIOSes, firwmwares, ...)
- Add OLA management
- Many bugs have been fixed
- Display knowledge base category items in tickets using a popup instead of a new whole window
- Reviewed all richtext editor (tinymce) and their upload parts, now more simpler and intuitive
- Don't ask user to select a template if there is no configured template
- personal_token is not used anymore for api authentication, a new api_token field has been added (empty by default, you should regenerate it)
- Operating systems management has been improved
- Direct language change from any page
- Better icons harmonization
CommonDBTM::getTable()
signature has changedUser::getFromDBbyToken()
signature has changedBookmark
has been renamed toSavedSearch
- Update to latest jsTree plugin
RuleDictionnarySoftwareCollection::versionExists()
signature has changedNotificationTemplate::getDataToSend()
signature has changedQueuedMail
has been renamed toQueuedNotification
CommonDBTM::mailqueueonaction
has been renamed toCommonDBTM::notificationqueueonaction
NotificationTarget::getSender()
no longer takes any parameters (was not used)TableExists()
has been moved toDBMysql::tableExists()
FieldExists()
has been moved toDBMysql::fieldExists()
Profile_User::getUserEntitiesForRight()
signature has changedNotificationTarget
propertydatas
has been renamed todata
- Ability to use
JOIN
inDBmysqlIterator::buildQuery()
has been deprecated - Usage of
NotificationTarget::datas
property has been deprecated - Usage of
Zend\Loader\SplAutoloader
interface has been deprecated
The following methods have been deprecated:
_e()
_ex()
Bookmark::mark_default()
Bookmark::unmark_default()
CommonTreeDropodwn::recursiveCleanSonsAboveID()
NotificationTarget::addToAddressesList()
NotificationTarget::getAdditionalTargets()
NotificationTarget::getAddressesByGroup()
NotificationTarget::getAddressesByTarget()
NotificationTarget::getAdminAddress()
NotificationTarget::getEntityAdminAddress()
NotificationTarget::getItemAuthorAddress()
NotificationTarget::getItemGroupAddress()
NotificationTarget::getItemGroupSupervisorAddress()
NotificationTarget::getItemGroupTechInChargeAddress()
NotificationTarget::getItemGroupWithoutSupervisorAddress()
NotificationTarget::getItemOwnerAddress()
NotificationTarget::getItemTechnicianInChargeAddress()
NotificationTarget::getNotificationTargets()
NotificationTarget::getSpecificTargets()
NotificationTarget::getUserByField()
NotificationTarget::getUsersAddressesByProfile()
NotificationTargetCommonITILObject::getDatasForObject()
NotificationTargetCommonITILObject::getFollowupAuthor()
NotificationTargetCommonITILObject::getLinkedGroupByType()
NotificationTargetCommonITILObject::getLinkedGroupSupervisorByType()
NotificationTargetCommonITILObject::getLinkedGroupWithoutSupervisorByType()
NotificationTargetCommonITILObject::getLinkedUserByType()
NotificationTargetCommonITILObject::getOldAssignTechnicianAddress()
NotificationTargetCommonITILObject::getRecipientAddress()
NotificationTargetCommonITILObject::getSupplierAddress()
NotificationTargetCommonITILObject::getTaskAssignGroup()
NotificationTargetCommonITILObject::getTaskAssignUser()
NotificationTargetCommonITILObject::getTaskAuthor()
NotificationTargetCommonITILObject::getValidationApproverAddress()
NotificationTargetCommonITILObject::getValidationRequesterAddress()
NotificationTargetProjectTask::getTeamContacts()
NotificationTargetProjectTask::getTeamGroups()
NotificationTargetProjectTask::getTeamSuppliers()
NotificationTargetProjectTask::getTeamUsers()
QueuedNotification::sendMailById()
User::getPersonalToken()
User::getUniquePersonalToken()
formatOutputWebLink()
The following methods have been dropped:
Ajax::displaySearchTextForDropdown()
Ajax::getSearchTextForDropdown()
Bookmark::changeBookmarkOrder()
Bookmark::moveBookmark()
CommonGLPI::addDivForTabs()
CommonGLPI::showTabs()
CommonGLPI::showNavigationHeaderOld()
CommonGLPI::show()
Dropdown::showInteger()
DBMysql::field_flags()
Html::showDateFormItem()
Html::showDateTimeFormItem()
Profile::dropdownNoneReadWrite()
Toolbox::get_magic_quotes_runtime()
Toolbox::get_magic_quotes_gpc()
Dropdown::showAllItems()
For older entries, please check GLPI website.