Skip to content

ilCtrl: Fix removal of invalid elements when building structure#10428

Merged
thibsy merged 1 commit intoILIAS-eLearning:release_9from
mjansenDatabay:hotfix/9/il-ctrl-structure-wrong-array-removals
Nov 24, 2025
Merged

ilCtrl: Fix removal of invalid elements when building structure#10428
thibsy merged 1 commit intoILIAS-eLearning:release_9from
mjansenDatabay:hotfix/9/il-ctrl-structure-wrong-array-removals

Conversation

@mjansenDatabay
Copy link
Copy Markdown
Contributor

@mjansenDatabay mjansenDatabay commented Nov 11, 2025

This PR fixes the removal of invalid elements from the parsed ilCtrl structure.

When removeReference() is called, it modifies the array (using unset() and array_values()) we are currently iterating over.

So the current removal mechnism re-indexes the array during iteration, causing (amongst potential other issues) wrong elements to be removed.

This can lead to issues like: https://mantis.ilias.de/view.php?id=46165

For all interested developers: Have a look at https://discord.com/channels/819582183290437642/938352958876286988/1438464095127863449

@mjansenDatabay mjansenDatabay added bugfix php Pull requests that update Php code labels Nov 11, 2025
@mjansenDatabay mjansenDatabay force-pushed the hotfix/9/il-ctrl-structure-wrong-array-removals branch 2 times, most recently from df49966 to 63197d2 Compare November 11, 2025 14:33
@mjansenDatabay mjansenDatabay force-pushed the hotfix/9/il-ctrl-structure-wrong-array-removals branch from 63197d2 to 0b28859 Compare November 11, 2025 14:37
Copy link
Copy Markdown
Contributor

@thibsy thibsy left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thx @mjansenDatabay for the fix. What a rookie-mistake =). Changes LGTM, I'll merge right away.

@thibsy thibsy merged commit 29deb46 into ILIAS-eLearning:release_9 Nov 24, 2025
3 checks passed
fwolf-ilias pushed a commit that referenced this pull request Nov 25, 2025
Signed-off-by: Fabian Wolf <wolf@ilias.de>
katringross added a commit to kroepelin-projekte/ILIAS that referenced this pull request Dec 17, 2025
* Fix:
- Embedding mode
- Different domains
- Metadata
- Session cookie

* fix: learning progress percentage and status

Send the learning progress properly in 1.1 and 1.3

* fix: Allow Authorization header to be passed through Apache for LTI 1.1 support

Added SetEnvIf directive in .htaccess to expose the Authorization header to PHP.

By default, Apache may strip or block the Authorization header, which prevents
ILIAS from receiving OAuth credentials required for LTI 1.1 authentication and
learning progress transmission. This change ensures that the header is passed
through to the PHP environment as HTTP_AUTHORIZATION, enabling proper LTI
request handling.

The configuration aligns with ILIAS 10’s .htaccess setup and also maintains the
existing WebDAV-specific directive added in ILIAS-eLearning@a77578c.

* fix: track if the resources was attended or not

Previously, if a user finish one test with zero percentage the assigned status in LTI was "not attended", with this changes we are able to fix that bug and tack the LP in LTI object properly.

* fix: unnecessary logs deleted

* 46127: Background color not respected in paragraph format dropdown

* 46129: Cloze questions in page editor: select gaps already show values instead of empty selection

* [FIX] Handling Not Reachable

* [FIX] build filedelivery keys in update instead of build

* [FIX] push new keys to the beginning

* [FIX] #45812 UI: add `Input\Field\File` label for singular file selection. (ILIAS-eLearning#10137)

* Fixes https://mantis.ilias.de/view.php?id=45812
* Add language variable and translation for singular file selection.

* dc fix notifcation setting on clone (ILIAS-eLearning#10393)

* Test: Add Check If Page Contains Content

See: https://mantis.ilias.de/view.php?id=44710

* fix goto redirect and access handling of dc (ILIAS-eLearning#10408)

* 45216: generatePreviewPic always falls back to default (80px)

* LegalDocuments: Fix ilCtrl issue

See: https://mantis.ilias.de/view.php?id=46159

* TermsOfService: Activate tab on confirmation screen

* media objects: fixed null issue in strpos call

* Test: Fix Typo in Lang Files

* Redirect to platform URL if `ilCtrlException` bubbles to `ilias.php` script

* session: fixed array access

* UIComponent/Explorer: Get rid of unused "Max Tree Depth" determination

This PR suggests to remove the `ilTree::getMaximumDepth`
method call in `\ilExplorer::getMaximumTreeDepth`.
The calculated value is not used at all, but results
(depending on the size of the `tree` table) in
an expensive database call.

* Access: fix display options in advmd admin for active plugin (33207)

* fix dc file copy and deletion (ILIAS-eLearning#10433)

* Fixes withKioskMode type error

* Test: Add Login to Scoring by Question Table

See: https://mantis.ilias.de/view.php?id=45304

* 0046165: SCORM: Trying to access certificate template configuration crashes for SCORM repository objects (ILIAS-eLearning#10438)

* Possible type error fixed (https://mantis.ilias.de/view.php?id=45306)

* Revert "Scorm: Change sequence of parameters when transforming datetime (ILIAS-eLearning#9794)"

This reverts commit 1111a6e.

* Scorm: Change sequence of parameters when transforming datetime

* Type fixes (#40842)

* Fix 0046165: SCORM: Trying to access certificate template configuration crashes for SCORM repository objects

* Fixed Mantis #45826: Text ist sehr nichtssagend in EN and DE

* Tracking: fix export of matrix table (46182)

* Contact: Remove invalid `ilCtrl` route annotation

* 45933: Not possible to exclude usages in history from ilObjMediaObject::_getMobsOfObject

* dc fix presentation of deleted/unvisible il refs (ILIAS-eLearning#10446)

* Test: Remove ilCtrl-Annotation for Invalid Class

* Chatroom: Bumb socket.io-client

* copage: fixed type

* fix: LTI learning progress and redirections

With theses changes we fix 3 bugs:
- LP transmission with LTI 1.3 incorrect, before when the user has a result of 0 we weren't able to distinguish between failed or in progress.
- Determination of LP status according the previous change.
- Redirection after first creation of LTI 1.3 consumer

* Adds proper error message when submitting answer while already locked

* fix: LTI consume 1.3 version

These changes allow us to:
- Provide sub-resources using LTI in ILIAS, since in the past if we shared a object which is inside another element, we couldn't consume that object. To do it, the parent resources should have the same LTI provider enable with the same version, but you don't need to configure it.
- Correct object type mapping: in order to consume LTI 1.3 objects that follow the certification.
- Some types have been added.

In summary, these change improve the LTI status in ILIAS in order to follow the LTI certification.

* Forum/Import: Deriver parent id from "Nested Set" structured as fallback

See: https://mantis.ilias.de/view.php?id=46246

* Exercise: Handle criteria text more robust (ILIAS-eLearning#10474)

See: https://mantis.ilias.de/view.php?id=46235

* 45742: Accordions containing Content-Snippets crash ILIAS when clicked in the page editor

* Init: Silence ilCtrl error only for baseClass issues

* [FIX] UICore: wrong removals of `ilCtrlStructure` entries. (ILIAS-eLearning#10428)

* SimpleSaml: Bump symfony/http-foundation dependency

* Fixes custom user column data not being shown

* BT: Fix exmpty user specific data handling during export

* Fixed Mantis #41922: Message regarding missing date for course period or availability period is misleading

* 46130 fix update when custom language file is installed

Co-authored-by: Keven Clausen <keven.clausen@kroeplin-projekte.de>

* fix: redirection on LTI1.3 setting after save

* Init: Differentiate ilCtrl exceptions in `ilias.php`

* Init: Fix typo

* Revert "Init: Fix typo"

This reverts commit 5a62cbc.

* Revert "Init: Differentiate ilCtrl exceptions in `ilias.php`"

This reverts commit 80ab601.

* Init: Improve exception handling

* only load single record fields on require (ILIAS-eLearning#10533)

* Revert "Init: Improve exception handling"

This reverts commit 9bd08a9.

* Init: Improve exception handling

* fix: icons in object releases tables

Fabian Kruse found an error in the table which show the list of object releases using LTI inside the configuration. It was reported in [Mantis](https://mantis.ilias.de/view.php?id=40731). This change fix the icon in that table.

* Session: preload registration for access checks (45807)

* fix cp notice

* fix: add missing variable

In Mantis Colin Kiegel [reported](https://mantis.ilias.de/view.php?id=41266) that the lang variable `launch_custom_params` was missing. This PR add that variable.

* dc remove old execption artifacts (ILIAS-eLearning#10557)

* Fixes issue with divisible by error

* [FIX] #46364 UICore: type-error inside `ilCtrlExistingPath::ensureValidCidPath()`.

* Fixes https://mantis.ilias.de/view.php?id=46364
* Always pass an array to `in_array()`

* Object: Always Load LangModule For Repository

See: https://mantis.ilias.de/view.php?id=46299

* Forum: Fix behavior of first/root post in Thread

* OnScreenChat: Fix sync issue with receiveMessage & onHistory

* dc fix table name limitation (ILIAS-eLearning#10617)

* Maps: stop ServiceOpenLayers.js from overwriting Map (46368) (ILIAS-eLearning#10621)

* dc preserve table view on select (ILIAS-eLearning#10626)

* Test: Show Intermediate Solution in Error-Text

See: https://mantis.ilias.de/view.php?id=46218

* Fix Mantis #38803: Contradictory SCORM Learning Progress

* fix: Deprecated function "utf8_decode"

PHP 8.2+ deprecates utf8_decode(), which caused warnings during LTI operations.
This commit removes the deprecated function and replaces it with a safe and standards-compliant alternative (mb_convert_encoding / appropriate UTF-8 handling).

* fix: LTI avoid duplicates in User Management

With this change, we fix the ticket [0041165](https://mantis.ilias.de/view.php?id=41165)

The suggested solution could not be fully implemented because the duplicate names shown in the image are the names of LTI providers (those configured at the platform level), which were displayed once for each resource that used them to provide content. Therefore, instead of the suggested change, we will now display the name of the provider together with the name of the resource it provides in order to avoid confusion.

* fix: cs-fixer in ilAuthProviderLTI

* fix: copyright-checker in ilAuthProviderLTI

* Test: Fix Essay-Quetion too Small

See: https://mantis.ilias.de/view.php?id=46482

* Test: Disable QPL-Creation on Missing Rights

See: https://mantis.ilias.de/view.php?id=46481

* [FIX] Authorization Header Forwarding, see PR ILIAS-eLearning#10524

commit 1964748e363b83bf8da488dd92d5a973f0874c6a
Author: Sergio Santiago Sánchez <54277294+sergiosant02@users.noreply.github.com>
Date:   Fri Nov 28 09:16:02 2025 +0100

    fix: update comment in .httpaccess

commit 704909e6bb0e15e253c13e5a89487bd60f73d3ca
Author: Sergio Santiago <sergiosantiago0403@gmail.com>
Date:   Thu Nov 27 11:01:12 2025 +0100

    fix: change comment in order to specify the reason of each option in httpaccess

commit 10f23c86ec3e9e8d9e4deb80556785582d898263
Author: Sergio Santiago <sergiosantiago0403@gmail.com>
Date:   Mon Oct 20 08:17:28 2025 +0200

    fix: Allow Authorization header to be passed through Apache for LTI 1.1 support

    Added SetEnvIf directive in .htaccess to expose the Authorization header to PHP.

    By default, Apache may strip or block the Authorization header, which prevents
    ILIAS from receiving OAuth credentials required for LTI 1.1 authentication and
    learning progress transmission. This change ensures that the header is passed
    through to the PHP environment as HTTP_AUTHORIZATION, enabling proper LTI
    request handling.

    The configuration aligns with ILIAS 10’s .htaccess setup and also maintains the
    existing WebDAV-specific directive added in ILIAS-eLearning@a77578c.

* add returntype never to http close

* FileInfo: make sprintf robust against invalid translation placeholders (safeSprintf fallback)

* update roadmap

* 0045334: addObject ignores offline flag for forums (ILIAS-eLearning#9761)

* Apply offline flag when creating forum via addObject

* Test: Fix Print View

See: https://mantis.ilias.de/view.php?id=46552

* fix: save phpSessionId after authentication

In ILIAS 10, the community found an error related with LTI connections between platforms allocated in different domains. In these cases ILIAS wasn't able to connect to another ILIAS platform if they were hosted in different domains. The reason was the privacy policy of the browsers. For that reason we set the session's cookie during the authentication in ilStartUpGUI. The error was found in ILIAS 9, for that reason we propose the same change for ILIAS 9.

In ILIAS 10, the PR was ILIAS-eLearning#9179

* User: Fix Links in Role Lists

See: https://mantis.ilias.de/view.php?id=46252

* NW: Performance optimization (ILIAS-eLearning#10625)

* refactor(news): introduce data transfer objects and factory

* refactor(news): introduce UserContextResolver and cache stubs

* refactor(news): introduce NewsAggregator and aggregation strategies

* refactor: cleanup NewsContext object and improve aggregation

* refactor(news): separate recursive and iterative strategies for context aggregation

* refactor(news): restructure cache layer and introduce NewsCollectionService

* refactor(news): introduce methods to retain legacy compatibility

* refactor(news): introduce NewsRepository

* refactor(news): integrate service and data structures in NewsBlockGUI-classes

* refactor(news): implement NewsCache and introduce optimized subset cache lookup

* refactor(news): some bug fixes and remove usage of legacy methods

* refactor(news): fixes cache key overflow bug, fixes missing news criteria bug, fixes file aggregation bug

* refactor(news): introduce lazy loading collection to enhance caching end reduce memory consumption

* refactor(news): remove legacy cache references

* refactor(news): introduce news items database index

* refactor(news): refactor timeline and mark legacy implementations as deprecated

* refactor(news): fix missing user read status in lazy collection

* refactor(news): fix potential cache memory overflow

* fix: refactor code style and small improvements after review

* fix: refactor queries and remove slow join operations

* fix: remove index structure and improve cache overhead to reduce memory consumption

* fix: wrong cache payload

* fix: use iterative tree method to aggregate course and group items to avoid memory overflow

---------

Co-authored-by: Lukas Eichenauer <leichenauer@databay.de>

* Admin: fix lang vars (#46537)

https://mantis.ilias.de/view.php?id=46537

* Test: Fix Downloads of UploadFiles

See: https://mantis.ilias.de/view.php?id=46554

* Implements sync back to qpl for IPE Feedback questions

* Changes syncPageObject signature to copyPageObject

* Fixes issue with item groups in page editor due to missing keys

* fix: delete empty line

* fix: jquery and delos_css variables

With this change we introduce the proper location of Jquery and Delos

* Fixes use previous solution for file upload question

* [LTI] fix: show multiple LTI users in Authentication and Registration section (ILIAS-eLearning#10713)

This change fix the report https://mantis.ilias.de/view.php?id=38537 which happens in ILIAS 9 and ILIAS 10.

We should show every lti access in this section.

* Fixes creation of invalid item group items

* Fixes sizing issue with checkboxes and radio elements in print view of single and multiple choice questions

* Adds ilc_solution_image css class

* Introduces scss variable -test-icon-min-size

* Improves some messages in the booking pool settings regarding user booking limits

* Allows non owner with write permission to add new participants to booking pool inside of a course

* Fixes cloze question changing answers and wrongly interpreting best answer

* fix: add baseString to system.php

* fix: learning progress url

- Some commented deprecated code remove
- Set the correct url to share LP.

* dc remove xlsx export notification (ILIAS-eLearning#10721)

* dc add selected presentation to tableview (ILIAS-eLearning#10725)

* dc set text detailed link to same view target (ILIAS-eLearning#10729)

* Hides grade and passes status when test is yet unfinished

* Adds changes after review

* Redirects user after booking an item in bookingpool to week view

* Revert "Admin: fix lang vars (#46537)"

This reverts commit de3b9e4.

* fix: remove incorrect parameters

* fix: assign correct return type

Related with the report [0037486](https://mantis.ilias.de/view.php?id=37486)

* fix: redirection after terms of service

When the provider platform has terms of service the consumer is redirected to the page to accept or not this terms, but when the consumer accept them ILIAS is not able to arrive to the correct shared object. This is because LTI doesn't save the original target. For that reason we propose save that original direction when the user logs in. The same change was introduced in ILIAS 10 in the PR: ILIAS-eLearning#9250

Related with the report [0039629](https://mantis.ilias.de/view.php?id=39629)

* Improves redirect after booking of an item and adds missing language variables in booking pool

* [FIX] array access

* Chatroom: Fix message import on same installation

See: https://mantis.ilias.de/view.php?id=46593

* fix: delete unnecessary logs

* fix: cs-fixer

* fix: cs-fixer

* fix: cs-fixer

* fix: cs-fixer

* fix: cs-fixer

* fix: cs-fixer

* Introduces own booking module language variable for participant

* fix: cs-fixer

* fix: copyright check

* sync language files

* FileUpload: Prohibit Inclusion of Foreign Objects

Signed-off-by: Releasemanager <webmaster@ilias.de>

* 0045883, 0045884, 0045900 Several BGT Issues

Signed-off-by: Releasemanager <webmaster@ilias.de>

* ilServer tika dependencies

Signed-off-by: Releasemanager <webmaster@ilias.de>

* Fix(SOAP): Add authorization check to getLearningProgressChanges.

Signed-off-by: Releasemanager <webmaster@ilias.de>

* Fix(SOAP): Add missing permission check to prevent moving objects from foreign containers

Signed-off-by: Releasemanager <webmaster@ilias.de>

* Fix(Soap): Add RBAC 'read' permission check to getSCORMCompletionStatus and hasSCORMCertificate to prevent unauthorized data access.

Signed-off-by: Releasemanager <webmaster@ilias.de>

* Release 9.16

---------

Signed-off-by: Releasemanager <webmaster@ilias.de>
Co-authored-by: Sergio Santiago <sergiosantiago0403@gmail.com>
Co-authored-by: Alex Killing <killing@leifos.de>
Co-authored-by: Fabian Schmid <fabian@sr.solutions>
Co-authored-by: Michael Jansen <mjansen@databay.de>
Co-authored-by: iszmais <45942348+iszmais@users.noreply.github.com>
Co-authored-by: Stephan Kergomard <webmaster@kergomard.ch>
Co-authored-by: Lukas Scharmer <lscharmer@databay.de>
Co-authored-by: Tim Schmitz <schmitz@leifos.de>
Co-authored-by: Matheus Zych <mzych@databay.de>
Co-authored-by: qualitus-dahme <dahme@qualitus.de>
Co-authored-by: Matthias Kunkel <mkunkel@me.com>
Co-authored-by: Aaron Bidzan <abidzan@databay.de>
Co-authored-by: Fabian Helfer <fhelfer@databay.de>
Co-authored-by: Thomas Joußen <tjoussen@databay.de>
Co-authored-by: Keven Clausen <keven.clausen@kroeplin-projekte.de>
Co-authored-by: Daniel Cazalla <86362063+ZallaxDev@users.noreply.github.com>
Co-authored-by: Thibeau Fuhrer <thibeau@sr.solutions>
Co-authored-by: Alex Hartwig <hartwig@qualitus.de>
Co-authored-by: Sergio Santiago Sánchez <54277294+sergiosant02@users.noreply.github.com>
Co-authored-by: iszmais <iszmais@databay.de>
Co-authored-by: Wolfgang Hübsch <wolfganghuebsch@users.noreply.github.com>
Co-authored-by: Stefan Meyer <meyer@leifos.de>
Co-authored-by: Sagun Karki <51822939+sKarki999@users.noreply.github.com>
Co-authored-by: ingoj <120396930+ingoj@users.noreply.github.com>
Co-authored-by: Lukas Eichenauer <leichenauer@databay.de>
Co-authored-by: fneumann <fneumann@databay.de>
Co-authored-by: Releasemanager <webmaster@ilias.de>
Co-authored-by: sagun <sagun.karki@minervis.com>
katringross added a commit to kroepelin-projekte/ILIAS that referenced this pull request Dec 17, 2025
* Fix:
- Embedding mode
- Different domains
- Metadata
- Session cookie

* fix: learning progress percentage and status

Send the learning progress properly in 1.1 and 1.3

* fix: Allow Authorization header to be passed through Apache for LTI 1.1 support

Added SetEnvIf directive in .htaccess to expose the Authorization header to PHP.

By default, Apache may strip or block the Authorization header, which prevents
ILIAS from receiving OAuth credentials required for LTI 1.1 authentication and
learning progress transmission. This change ensures that the header is passed
through to the PHP environment as HTTP_AUTHORIZATION, enabling proper LTI
request handling.

The configuration aligns with ILIAS 10’s .htaccess setup and also maintains the
existing WebDAV-specific directive added in ILIAS-eLearning@a77578c.

* fix: track if the resources was attended or not

Previously, if a user finish one test with zero percentage the assigned status in LTI was "not attended", with this changes we are able to fix that bug and tack the LP in LTI object properly.

* fix: unnecessary logs deleted

* 46127: Background color not respected in paragraph format dropdown

* 46129: Cloze questions in page editor: select gaps already show values instead of empty selection

* [FIX] Handling Not Reachable

* [FIX] build filedelivery keys in update instead of build

* [FIX] push new keys to the beginning

* [FIX] #45812 UI: add `Input\Field\File` label for singular file selection. (ILIAS-eLearning#10137)

* Fixes https://mantis.ilias.de/view.php?id=45812
* Add language variable and translation for singular file selection.

* dc fix notifcation setting on clone (ILIAS-eLearning#10393)

* Test: Add Check If Page Contains Content

See: https://mantis.ilias.de/view.php?id=44710

* fix goto redirect and access handling of dc (ILIAS-eLearning#10408)

* 45216: generatePreviewPic always falls back to default (80px)

* LegalDocuments: Fix ilCtrl issue

See: https://mantis.ilias.de/view.php?id=46159

* TermsOfService: Activate tab on confirmation screen

* media objects: fixed null issue in strpos call

* Test: Fix Typo in Lang Files

* Redirect to platform URL if `ilCtrlException` bubbles to `ilias.php` script

* session: fixed array access

* UIComponent/Explorer: Get rid of unused "Max Tree Depth" determination

This PR suggests to remove the `ilTree::getMaximumDepth`
method call in `\ilExplorer::getMaximumTreeDepth`.
The calculated value is not used at all, but results
(depending on the size of the `tree` table) in
an expensive database call.

* Access: fix display options in advmd admin for active plugin (33207)

* fix dc file copy and deletion (ILIAS-eLearning#10433)

* Fixes withKioskMode type error

* Test: Add Login to Scoring by Question Table

See: https://mantis.ilias.de/view.php?id=45304

* 0046165: SCORM: Trying to access certificate template configuration crashes for SCORM repository objects (ILIAS-eLearning#10438)

* Possible type error fixed (https://mantis.ilias.de/view.php?id=45306)

* Revert "Scorm: Change sequence of parameters when transforming datetime (ILIAS-eLearning#9794)"

This reverts commit 1111a6e.

* Scorm: Change sequence of parameters when transforming datetime

* Type fixes (#40842)

* Fix 0046165: SCORM: Trying to access certificate template configuration crashes for SCORM repository objects

* Fixed Mantis #45826: Text ist sehr nichtssagend in EN and DE

* Tracking: fix export of matrix table (46182)

* Contact: Remove invalid `ilCtrl` route annotation

* 45933: Not possible to exclude usages in history from ilObjMediaObject::_getMobsOfObject

* dc fix presentation of deleted/unvisible il refs (ILIAS-eLearning#10446)

* Test: Remove ilCtrl-Annotation for Invalid Class

* Chatroom: Bumb socket.io-client

* copage: fixed type

* fix: LTI learning progress and redirections

With theses changes we fix 3 bugs:
- LP transmission with LTI 1.3 incorrect, before when the user has a result of 0 we weren't able to distinguish between failed or in progress.
- Determination of LP status according the previous change.
- Redirection after first creation of LTI 1.3 consumer

* Adds proper error message when submitting answer while already locked

* fix: LTI consume 1.3 version

These changes allow us to:
- Provide sub-resources using LTI in ILIAS, since in the past if we shared a object which is inside another element, we couldn't consume that object. To do it, the parent resources should have the same LTI provider enable with the same version, but you don't need to configure it.
- Correct object type mapping: in order to consume LTI 1.3 objects that follow the certification.
- Some types have been added.

In summary, these change improve the LTI status in ILIAS in order to follow the LTI certification.

* Forum/Import: Deriver parent id from "Nested Set" structured as fallback

See: https://mantis.ilias.de/view.php?id=46246

* Exercise: Handle criteria text more robust (ILIAS-eLearning#10474)

See: https://mantis.ilias.de/view.php?id=46235

* 45742: Accordions containing Content-Snippets crash ILIAS when clicked in the page editor

* Init: Silence ilCtrl error only for baseClass issues

* [FIX] UICore: wrong removals of `ilCtrlStructure` entries. (ILIAS-eLearning#10428)

* SimpleSaml: Bump symfony/http-foundation dependency

* Fixes custom user column data not being shown

* BT: Fix exmpty user specific data handling during export

* Fixed Mantis #41922: Message regarding missing date for course period or availability period is misleading

* 46130 fix update when custom language file is installed

Co-authored-by: Keven Clausen <keven.clausen@kroeplin-projekte.de>

* fix: redirection on LTI1.3 setting after save

* Init: Differentiate ilCtrl exceptions in `ilias.php`

* Init: Fix typo

* Revert "Init: Fix typo"

This reverts commit 5a62cbc.

* Revert "Init: Differentiate ilCtrl exceptions in `ilias.php`"

This reverts commit 80ab601.

* Init: Improve exception handling

* only load single record fields on require (ILIAS-eLearning#10533)

* Revert "Init: Improve exception handling"

This reverts commit 9bd08a9.

* Init: Improve exception handling

* fix: icons in object releases tables

Fabian Kruse found an error in the table which show the list of object releases using LTI inside the configuration. It was reported in [Mantis](https://mantis.ilias.de/view.php?id=40731). This change fix the icon in that table.

* Session: preload registration for access checks (45807)

* fix cp notice

* fix: add missing variable

In Mantis Colin Kiegel [reported](https://mantis.ilias.de/view.php?id=41266) that the lang variable `launch_custom_params` was missing. This PR add that variable.

* dc remove old execption artifacts (ILIAS-eLearning#10557)

* Fixes issue with divisible by error

* [FIX] #46364 UICore: type-error inside `ilCtrlExistingPath::ensureValidCidPath()`.

* Fixes https://mantis.ilias.de/view.php?id=46364
* Always pass an array to `in_array()`

* Object: Always Load LangModule For Repository

See: https://mantis.ilias.de/view.php?id=46299

* Forum: Fix behavior of first/root post in Thread

* OnScreenChat: Fix sync issue with receiveMessage & onHistory

* dc fix table name limitation (ILIAS-eLearning#10617)

* Maps: stop ServiceOpenLayers.js from overwriting Map (46368) (ILIAS-eLearning#10621)

* dc preserve table view on select (ILIAS-eLearning#10626)

* Test: Show Intermediate Solution in Error-Text

See: https://mantis.ilias.de/view.php?id=46218

* Fix Mantis #38803: Contradictory SCORM Learning Progress

* fix: Deprecated function "utf8_decode"

PHP 8.2+ deprecates utf8_decode(), which caused warnings during LTI operations.
This commit removes the deprecated function and replaces it with a safe and standards-compliant alternative (mb_convert_encoding / appropriate UTF-8 handling).

* fix: LTI avoid duplicates in User Management

With this change, we fix the ticket [0041165](https://mantis.ilias.de/view.php?id=41165)

The suggested solution could not be fully implemented because the duplicate names shown in the image are the names of LTI providers (those configured at the platform level), which were displayed once for each resource that used them to provide content. Therefore, instead of the suggested change, we will now display the name of the provider together with the name of the resource it provides in order to avoid confusion.

* fix: cs-fixer in ilAuthProviderLTI

* fix: copyright-checker in ilAuthProviderLTI

* Test: Fix Essay-Quetion too Small

See: https://mantis.ilias.de/view.php?id=46482

* Test: Disable QPL-Creation on Missing Rights

See: https://mantis.ilias.de/view.php?id=46481

* [FIX] Authorization Header Forwarding, see PR ILIAS-eLearning#10524

commit 1964748e363b83bf8da488dd92d5a973f0874c6a
Author: Sergio Santiago Sánchez <54277294+sergiosant02@users.noreply.github.com>
Date:   Fri Nov 28 09:16:02 2025 +0100

    fix: update comment in .httpaccess

commit 704909e6bb0e15e253c13e5a89487bd60f73d3ca
Author: Sergio Santiago <sergiosantiago0403@gmail.com>
Date:   Thu Nov 27 11:01:12 2025 +0100

    fix: change comment in order to specify the reason of each option in httpaccess

commit 10f23c86ec3e9e8d9e4deb80556785582d898263
Author: Sergio Santiago <sergiosantiago0403@gmail.com>
Date:   Mon Oct 20 08:17:28 2025 +0200

    fix: Allow Authorization header to be passed through Apache for LTI 1.1 support

    Added SetEnvIf directive in .htaccess to expose the Authorization header to PHP.

    By default, Apache may strip or block the Authorization header, which prevents
    ILIAS from receiving OAuth credentials required for LTI 1.1 authentication and
    learning progress transmission. This change ensures that the header is passed
    through to the PHP environment as HTTP_AUTHORIZATION, enabling proper LTI
    request handling.

    The configuration aligns with ILIAS 10’s .htaccess setup and also maintains the
    existing WebDAV-specific directive added in ILIAS-eLearning@a77578c.

* add returntype never to http close

* FileInfo: make sprintf robust against invalid translation placeholders (safeSprintf fallback)

* update roadmap

* 0045334: addObject ignores offline flag for forums (ILIAS-eLearning#9761)

* Apply offline flag when creating forum via addObject

* Test: Fix Print View

See: https://mantis.ilias.de/view.php?id=46552

* fix: save phpSessionId after authentication

In ILIAS 10, the community found an error related with LTI connections between platforms allocated in different domains. In these cases ILIAS wasn't able to connect to another ILIAS platform if they were hosted in different domains. The reason was the privacy policy of the browsers. For that reason we set the session's cookie during the authentication in ilStartUpGUI. The error was found in ILIAS 9, for that reason we propose the same change for ILIAS 9.

In ILIAS 10, the PR was ILIAS-eLearning#9179

* User: Fix Links in Role Lists

See: https://mantis.ilias.de/view.php?id=46252

* NW: Performance optimization (ILIAS-eLearning#10625)

* refactor(news): introduce data transfer objects and factory

* refactor(news): introduce UserContextResolver and cache stubs

* refactor(news): introduce NewsAggregator and aggregation strategies

* refactor: cleanup NewsContext object and improve aggregation

* refactor(news): separate recursive and iterative strategies for context aggregation

* refactor(news): restructure cache layer and introduce NewsCollectionService

* refactor(news): introduce methods to retain legacy compatibility

* refactor(news): introduce NewsRepository

* refactor(news): integrate service and data structures in NewsBlockGUI-classes

* refactor(news): implement NewsCache and introduce optimized subset cache lookup

* refactor(news): some bug fixes and remove usage of legacy methods

* refactor(news): fixes cache key overflow bug, fixes missing news criteria bug, fixes file aggregation bug

* refactor(news): introduce lazy loading collection to enhance caching end reduce memory consumption

* refactor(news): remove legacy cache references

* refactor(news): introduce news items database index

* refactor(news): refactor timeline and mark legacy implementations as deprecated

* refactor(news): fix missing user read status in lazy collection

* refactor(news): fix potential cache memory overflow

* fix: refactor code style and small improvements after review

* fix: refactor queries and remove slow join operations

* fix: remove index structure and improve cache overhead to reduce memory consumption

* fix: wrong cache payload

* fix: use iterative tree method to aggregate course and group items to avoid memory overflow

---------

Co-authored-by: Lukas Eichenauer <leichenauer@databay.de>

* Admin: fix lang vars (#46537)

https://mantis.ilias.de/view.php?id=46537

* Test: Fix Downloads of UploadFiles

See: https://mantis.ilias.de/view.php?id=46554

* Implements sync back to qpl for IPE Feedback questions

* Changes syncPageObject signature to copyPageObject

* Fixes issue with item groups in page editor due to missing keys

* fix: delete empty line

* fix: jquery and delos_css variables

With this change we introduce the proper location of Jquery and Delos

* Fixes use previous solution for file upload question

* [LTI] fix: show multiple LTI users in Authentication and Registration section (ILIAS-eLearning#10713)

This change fix the report https://mantis.ilias.de/view.php?id=38537 which happens in ILIAS 9 and ILIAS 10.

We should show every lti access in this section.

* Fixes creation of invalid item group items

* Fixes sizing issue with checkboxes and radio elements in print view of single and multiple choice questions

* Adds ilc_solution_image css class

* Introduces scss variable -test-icon-min-size

* Improves some messages in the booking pool settings regarding user booking limits

* Allows non owner with write permission to add new participants to booking pool inside of a course

* Fixes cloze question changing answers and wrongly interpreting best answer

* fix: add baseString to system.php

* fix: learning progress url

- Some commented deprecated code remove
- Set the correct url to share LP.

* dc remove xlsx export notification (ILIAS-eLearning#10721)

* dc add selected presentation to tableview (ILIAS-eLearning#10725)

* dc set text detailed link to same view target (ILIAS-eLearning#10729)

* Hides grade and passes status when test is yet unfinished

* Adds changes after review

* Redirects user after booking an item in bookingpool to week view

* Revert "Admin: fix lang vars (#46537)"

This reverts commit de3b9e4.

* fix: remove incorrect parameters

* fix: assign correct return type

Related with the report [0037486](https://mantis.ilias.de/view.php?id=37486)

* fix: redirection after terms of service

When the provider platform has terms of service the consumer is redirected to the page to accept or not this terms, but when the consumer accept them ILIAS is not able to arrive to the correct shared object. This is because LTI doesn't save the original target. For that reason we propose save that original direction when the user logs in. The same change was introduced in ILIAS 10 in the PR: ILIAS-eLearning#9250

Related with the report [0039629](https://mantis.ilias.de/view.php?id=39629)

* Improves redirect after booking of an item and adds missing language variables in booking pool

* [FIX] array access

* Chatroom: Fix message import on same installation

See: https://mantis.ilias.de/view.php?id=46593

* fix: delete unnecessary logs

* fix: cs-fixer

* fix: cs-fixer

* fix: cs-fixer

* fix: cs-fixer

* fix: cs-fixer

* fix: cs-fixer

* Introduces own booking module language variable for participant

* fix: cs-fixer

* fix: copyright check

* sync language files

* FileUpload: Prohibit Inclusion of Foreign Objects

Signed-off-by: Releasemanager <webmaster@ilias.de>

* 0045883, 0045884, 0045900 Several BGT Issues

Signed-off-by: Releasemanager <webmaster@ilias.de>

* ilServer tika dependencies

Signed-off-by: Releasemanager <webmaster@ilias.de>

* Fix(SOAP): Add authorization check to getLearningProgressChanges.

Signed-off-by: Releasemanager <webmaster@ilias.de>

* Fix(SOAP): Add missing permission check to prevent moving objects from foreign containers

Signed-off-by: Releasemanager <webmaster@ilias.de>

* Fix(Soap): Add RBAC 'read' permission check to getSCORMCompletionStatus and hasSCORMCertificate to prevent unauthorized data access.

Signed-off-by: Releasemanager <webmaster@ilias.de>

* Release 9.16

---------

Signed-off-by: Releasemanager <webmaster@ilias.de>
Co-authored-by: Sergio Santiago <sergiosantiago0403@gmail.com>
Co-authored-by: Alex Killing <killing@leifos.de>
Co-authored-by: Fabian Schmid <fabian@sr.solutions>
Co-authored-by: Michael Jansen <mjansen@databay.de>
Co-authored-by: iszmais <45942348+iszmais@users.noreply.github.com>
Co-authored-by: Stephan Kergomard <webmaster@kergomard.ch>
Co-authored-by: Lukas Scharmer <lscharmer@databay.de>
Co-authored-by: Tim Schmitz <schmitz@leifos.de>
Co-authored-by: Matheus Zych <mzych@databay.de>
Co-authored-by: qualitus-dahme <dahme@qualitus.de>
Co-authored-by: Matthias Kunkel <mkunkel@me.com>
Co-authored-by: Aaron Bidzan <abidzan@databay.de>
Co-authored-by: Fabian Helfer <fhelfer@databay.de>
Co-authored-by: Thomas Joußen <tjoussen@databay.de>
Co-authored-by: Keven Clausen <keven.clausen@kroeplin-projekte.de>
Co-authored-by: Daniel Cazalla <86362063+ZallaxDev@users.noreply.github.com>
Co-authored-by: Thibeau Fuhrer <thibeau@sr.solutions>
Co-authored-by: Alex Hartwig <hartwig@qualitus.de>
Co-authored-by: Sergio Santiago Sánchez <54277294+sergiosant02@users.noreply.github.com>
Co-authored-by: iszmais <iszmais@databay.de>
Co-authored-by: Wolfgang Hübsch <wolfganghuebsch@users.noreply.github.com>
Co-authored-by: Stefan Meyer <meyer@leifos.de>
Co-authored-by: Sagun Karki <51822939+sKarki999@users.noreply.github.com>
Co-authored-by: ingoj <120396930+ingoj@users.noreply.github.com>
Co-authored-by: Lukas Eichenauer <leichenauer@databay.de>
Co-authored-by: fneumann <fneumann@databay.de>
Co-authored-by: Releasemanager <webmaster@ilias.de>
Co-authored-by: sagun <sagun.karki@minervis.com>
katringross added a commit to kroepelin-projekte/ILIAS that referenced this pull request Dec 17, 2025
* UICore: wrong removals of `ilCtrlStructure` entries. (ILIAS-eLearning#10428)

Signed-off-by: Fabian Wolf <wolf@ilias.de>

* 0045883, 0045884, 0045900 Several BGT Issues

Signed-off-by: Releasemanager <webmaster@ilias.de>

* FileUpload: Prohibit Inclusion of Foreign Objects

Signed-off-by: Releasemanager <webmaster@ilias.de>

* [BackgroundTasks] 7.4 compatibility

* Update Dependencies for Release 8.26

* Release 8.26

---------

Signed-off-by: Fabian Wolf <wolf@ilias.de>
Signed-off-by: Releasemanager <webmaster@ilias.de>
Co-authored-by: Michael Jansen <mjansen@databay.de>
Co-authored-by: Fabian Schmid <fabian@sr.solutions>
Co-authored-by: Stephan Kergomard <webmaster@kergomard.ch>
Co-authored-by: Releasemanager <webmaster@ilias.de>
katringross added a commit to kroepelin-projekte/ILIAS that referenced this pull request Dec 17, 2025
* #45899 ilCtrl: throw `RuntimeException` if invalid cmdNode is requested.

Signed-off-by: Releasemanager <webmaster@ilias.de>

* Certificate: Move import handling to temporary directory

Signed-off-by: Releasemanager <webmaster@ilias.de>

* 45897: MediaPool: Open/Unvalidated Redirect in ilEditClipboardGUI

Signed-off-by: Releasemanager <webmaster@ilias.de>

* 45898: Wiki: Unauthorized Access to LTI Settings

Signed-off-by: Releasemanager <webmaster@ilias.de>

* Update Dependencies for Release 8.25

* Release 8.25

* UICore: wrong removals of `ilCtrlStructure` entries. (ILIAS-eLearning#10428)

Signed-off-by: Fabian Wolf <wolf@ilias.de>

* 0045883, 0045884, 0045900 Several BGT Issues

Signed-off-by: Releasemanager <webmaster@ilias.de>

* FileUpload: Prohibit Inclusion of Foreign Objects

Signed-off-by: Releasemanager <webmaster@ilias.de>

* [BackgroundTasks] 7.4 compatibility

* Update Dependencies for Release 8.26

* Release 8.26

---------

Signed-off-by: Releasemanager <webmaster@ilias.de>
Signed-off-by: Fabian Wolf <wolf@ilias.de>
Co-authored-by: Thibeau Fuhrer <thibeau@sr.solutions>
Co-authored-by: mjansen <mjansen@databay.de>
Co-authored-by: Alexander Killing <killing@leifos.de>
Co-authored-by: Releasemanager <webmaster@ilias.de>
Co-authored-by: Fabian Schmid <fabian@sr.solutions>
Co-authored-by: Stephan Kergomard <webmaster@kergomard.ch>
katringross added a commit to kroepelin-projekte/ILIAS that referenced this pull request Dec 17, 2025
* Remove usage of domxml_open_mem method

* [LTI] update: add updated LTI roadmap with short-, mid-, and long-term goals

* LegalDocuments: Fix ilCtrl issue

See: https://mantis.ilias.de/view.php?id=46159

* TermsOfService: Activate tab on confirmation screen

* Test: Fix Class-Namespace

See: https://mantis.ilias.de/view.php?id=44710#c119693

* media objects: fixed null issue in strpos call

* Test: Fix Typo in Lang Files

* Init/Error: Improve error handling in `error.php`

This commit improves the global error handling in `error.php`:

1. Remove building a global template from `tpl.main.html` since it only
contains one  placeholder (see 2b8eafc)
and provides no added value
2. Ensure a proper HTTP 500 status code is sent for normal error handling
3. Ensure a proper HTTP 500 status code is sent if an unexpected error
occurs while rendering the error page
4. Log errors to `error_log` with minimal user-facing output, including
an incident ID, timestamp, and message

* Init: Redirect to platform URL if `ilCtrlException` bubbles up

Mantis Issue: https://mantis.ilias.de/view.php?id=44170 / https://mantis.ilias.de/view.php?id=45707

* session: fixed array access

* UIComponent/Explorer: Get rid of unused "Max Tree Depth" determination

This PR suggests to remove the `ilTree::getMaximumDepth`
method call in `\ilExplorer::getMaximumTreeDepth`.
The calculated value is not used at all, but results
(depending on the size of the `tree` table) in
an expensive database call.

* Access: fix display options in advmd admin for active plugin (33207)

* fix dc file copy and deletion (ILIAS-eLearning#10434)

* Object: Fix Export of Tile Images

See: https://mantis.ilias.de/view.php?id=45574

* Test: Generate Table Filter Ids Based on Context

* Test: Fix Applying withKioskMode From Defaults

See: https://mantis.ilias.de/view.php?id=45956

* Calendar: Fix Missing Parameters On Redirect

See: https://mantis.ilias.de/view.php?id=46106

* Test: Preserve Keys When Transforming Arrays

See: https://mantis.ilias.de/view.php?id=46128

* Test: Add Login to Scoring by Question Table

See: https://mantis.ilias.de/view.php?id=45304

* Test: Show Warning on Import Invalid Question File

See: https://mantis.ilias.de/view.php?id=46037

* Adds null check for points in corrections

* Fixed Mantis #45826: Text ist sehr nichtssagend in EN and DE

* 0046165: SCORM: Trying to access certificate template configuration crashes for SCORM repository objects (ILIAS-eLearning#10439)

* SCORM Debug Tool without YUI2

* check if array key exists

* Scorm: Change sequence of parameters when transforming datetime (cherry-picked from release_9: 1111a6e)

* Possible type error fixed (https://mantis.ilias.de/view.php?id=45306)

* Type error fixed (https://mantis.ilias.de/view.php?id=45429)

* Revert "Scorm: Change sequence of parameters when transforming datetime (ILIAS-eLearning#9825)"

This reverts commit 2be2ba5.

* Mantis #45149 - Fix Scorm1.2 favicons again for Ilias9

* Scorm: Change sequence of parameters when transforming datetime

* Type fixes (#40842)

* Fix 0046165: SCORM: Trying to access certificate template configuration crashes for SCORM repository objects

* Tracking: fix export of matrix table (46182)

* Contact: Remove invalid `ilCtrl` route annotation

* dc fix presentation of deleted/unvisible il refs (ILIAS-eLearning#10447)

* 45933: Not possible to exclude usages in history from ilObjMediaObject::_getMobsOfObject

* Test: Remove ilCtrl-Annotation for Invalid Class

* Test: import throws "Undefined variable" (46030)

https://mantis.ilias.de/view.php?id=46030

* Test: Do Not Try to Migrate Invalid AddTime

See: https://mantis.ilias.de/view.php?id=46198

* Chatroom: Bumb socket.io-client

* copage: fixed type

* Saml: stringify ILIAS\Data\URI

* 45974: Error Call to a member function getTitle() on null when deleting user accounts

* 45896: Insert Interactive-Image, 'Attempt to read property nodeName on null'

* 46222: Failed test: Begriff hinzufügen

* 11/Badge/46220 (ILIAS-eLearning#10471)

* UI: 45648, add padding to asterisks and adjust property_form template. (ILIAS-eLearning#10144)

https://mantis.ilias.de/view.php?id=45648

* Forum/Import: Deriver parent id from "Nested Set" structured as fallback

See: https://mantis.ilias.de/view.php?id=46246

* fixed 46200: Screen ID mit \ im Namen lassen sich nicht nutzen; 46255: Manche Screen ID funktionieren nicht

* 45742: Accordions containing Content-Snippets crash ILIAS when clicked in the page editor

* Object/InfoScreen: fix presentation of precondition operator (46224)

* Init: Silence ilCtrl error only for baseClass issues

* Init/PasswordAssistance: Fix missing checks of second email address against `null`

* [FIX] UICore: wrong removals of `ilCtrlStructure` entries. (ILIAS-eLearning#10428)

* Bump symfony/http-foundation from 6.4.24 to 6.4.29

Bumps [symfony/http-foundation](https://github.com/symfony/http-foundation) from 6.4.24 to 6.4.29.
- [Release notes](https://github.com/symfony/http-foundation/releases)
- [Changelog](https://github.com/symfony/http-foundation/blob/7.3/CHANGELOG.md)
- [Commits](symfony/http-foundation@v6.4.24...v6.4.29)

---
updated-dependencies:
- dependency-name: symfony/http-foundation
  dependency-version: 6.4.29
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

* BT: Fix exmpty user specific data handling during export

* Fixes custom user column data not being shown

* Drop wrong files from previous commit 99abe2c

* Removed unnecessary code parts

* Fixed Mantis #41922: Message regarding missing date for course period or availability period is misleading

* Fixed Mantis #46214: Name des Repositoriums --> Name der Installation

* Improves news renderer factory for future use

* 46130 fix update when custom language file is installed

Co-authored-by: Keven Clausen <keven.clausen@kroeplin-projekte.de>

* Init: Improve exception handling/message

* only load single record fields on require (ILIAS-eLearning#10534)

* fix: icons in object releases tables

In ILIAS 9 Fabian Kruse found an error in this table inside the configuration about LTI. It was reported in Mantis https://mantis.ilias.de/view.php?id=40731. After some testing the same error was found in ILIAS 10. This change fix the icon in that table.

* Session: preload registration for access checks (45807)

* fix cp notice

* remove artifacts of tableview order (ILIAS-eLearning#10554)

* dc remove old execption artifacts (ILIAS-eLearning#10558)

* Restructure devguide. Unnecessary folder tutorial removed.

* Rename devguide to tutorial

* Bump js-yaml

Bumps  and [js-yaml](https://github.com/nodeca/js-yaml). These dependencies needed to be updated together.

Updates `js-yaml` from 4.1.0 to 4.1.1
- [Changelog](https://github.com/nodeca/js-yaml/blob/master/CHANGELOG.md)
- [Commits](nodeca/js-yaml@4.1.0...4.1.1)

Updates `js-yaml` from 3.14.1 to 3.14.2
- [Changelog](https://github.com/nodeca/js-yaml/blob/master/CHANGELOG.md)
- [Commits](nodeca/js-yaml@4.1.0...4.1.1)

---
updated-dependencies:
- dependency-name: js-yaml
  dependency-version: 4.1.1
  dependency-type: indirect
- dependency-name: js-yaml
  dependency-version: 3.14.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

* Repair Italian language file by copying and synchronizing from release_9.

* Fixed Mantis #44894 and #44908 - label improvements to support OER

* Test: Fix Missing Array Index in Settings

See: https://mantis.ilias.de/view.php?id=46384

* Fixes issue with  being undefinded when time runs out in test while working on it in multiple tabs

* Removes byline for maximum duration of test in minutes

* Fixes empty plugin name not being recognized as question type available

* Streamline plugin question type discovery based on type tag and plugin attribute

* Fixes issue with divisible by error

* add aria-describedby attribute to file wizard input (ILIAS-eLearning#10153)

* fix copyright doc (ILIAS-eLearning#10589)

* [FIX] #46364 UICore: type-error inside `ilCtrlExistingPath::ensureValidCidPath()`.

* Fixes https://mantis.ilias.de/view.php?id=46364
* Always pass an array to `in_array()`

* Improves participant data export and import and also fixes inconsistent participant naming in different tables

* Adds fix for issue found during review

* Object: Always Load LangModule For Repository

See: https://mantis.ilias.de/view.php?id=46299

* [FIX] YUI: remove component and all includes. (ILIAS-eLearning#9331)

* remove last remains of yui (ILIAS-eLearning#10596)

* Form: make autocomplete work for multi-text inputs (44429) (ILIAS-eLearning#9181)

* AccessControl: Fix Autocomplete for Owner

See: https://mantis.ilias.de/view.php?id=46423

* Forum: Fix behavior of first/root post in Thread

* User: Fix vCard Download

See: https://mantis.ilias.de/view.php?id=46357

* OnScreenChat: Fix sync issue with receiveMessage & onHistory

* AccessControl: Fix Log Table

See: https://mantis.ilias.de/view.php?id=46403

* Clear errors immediately after getting errors

* Test: Fix Export Results With time

See: https://mantis.ilias.de/view.php?id=46434

* dc fix table name limitation (ILIAS-eLearning#10618)

* Maps: stop ServiceOpenLayers.js from overwriting Map (46368) (ILIAS-eLearning#10594) (ILIAS-eLearning#10622)

Co-authored-by: Tim Schmitz <104776863+schmitz-ilias@users.noreply.github.com>

* dc preserve table view on select (ILIAS-eLearning#10627)

* Test: Fix Shuffle&Lock Constraint

See: https://mantis.ilias.de/view.php?id=46384#c120712

* Test: Fix Shuffle&Lock Constraint

See: https://mantis.ilias.de/view.php?id=46384#c120712

* Test: Show Intermediate Solution in Error-Text

See: https://mantis.ilias.de/view.php?id=46218

* User: Add a Space in E-Mail Change E-Mail

See: https://mantis.ilias.de/view.php?id=46149

* Sets show manual scoring to true for manual scoring by question

* Test: Fix Essay-Quetion too Small

See: https://mantis.ilias.de/view.php?id=46482

* Adds proper error message when submitting answer while already locked

* Test: Disable QPL-Creation on Missing Rights

See: https://mantis.ilias.de/view.php?id=46481

* fix: ilLTIAppEventListener changed

Due to the rename of the LTI module to LTIProvider the class dedicated to detect the events was obsolete. After the last updates of ILIAS 10, ILIAS is able to detect when one module is listening, but it doesn't have the proper listener class. For that reason, we include this new class in order to have again the listener ready. Without this change the LTI connection is impossible, due to the error that ILIAS raise.

This was detected in the report [0046456](https://mantis.ilias.de/bug_update_page.php)

* fix: ilLTIAppEventListener changed

Due to the rename of the LTI module to LTIProvider the class dedicated to detect the events was obsolete.

* [FIX] exception message on wrong parameters

* [FIX] Authorization Header Forwarding, see PR ILIAS-eLearning#10524

commit 1964748e363b83bf8da488dd92d5a973f0874c6a
Author: Sergio Santiago Sánchez <54277294+sergiosant02@users.noreply.github.com>
Date:   Fri Nov 28 09:16:02 2025 +0100

    fix: update comment in .httpaccess

commit 704909e6bb0e15e253c13e5a89487bd60f73d3ca
Author: Sergio Santiago <sergiosantiago0403@gmail.com>
Date:   Thu Nov 27 11:01:12 2025 +0100

    fix: change comment in order to specify the reason of each option in httpaccess

commit 10f23c86ec3e9e8d9e4deb80556785582d898263
Author: Sergio Santiago <sergiosantiago0403@gmail.com>
Date:   Mon Oct 20 08:17:28 2025 +0200

    fix: Allow Authorization header to be passed through Apache for LTI 1.1 support

    Added SetEnvIf directive in .htaccess to expose the Authorization header to PHP.

    By default, Apache may strip or block the Authorization header, which prevents
    ILIAS from receiving OAuth credentials required for LTI 1.1 authentication and
    learning progress transmission. This change ensures that the header is passed
    through to the PHP environment as HTTP_AUTHORIZATION, enabling proper LTI
    request handling.

    The configuration aligns with ILIAS 10’s .htaccess setup and also maintains the
    existing WebDAV-specific directive added in ILIAS-eLearning@a77578c.

# Conflicts:
#	components/ILIAS/Init/resources/.htaccess

* add returntype never to http close

* FileInfo: make sprintf robust against invalid translation placeholders (safeSprintf fallback)

* Merge pull request ILIAS-eLearning#10631 from QualitusHartwig/9/bug/38803

Fix Mantis #38803: Contradictory SCORM Learning Progress

* Cherry picked language improvements for Badges

* Test: Fix Print View

See: https://mantis.ilias.de/view.php?id=46552

* User: Fix Links in Role Lists

See: https://mantis.ilias.de/view.php?id=46252

* Apply offline flag when creating forum via addObject (ILIAS-eLearning#10701)

Apply offline flag when creating forum via addObject

* Admin: fix lang vars (#46537)

https://mantis.ilias.de/view.php?id=46537

* Revert "Admin: fix lang vars (#46537)"

This reverts commit 544ce2e.

* Test: Fix Downloads of UploadFiles

See: https://mantis.ilias.de/view.php?id=46554

* NW: Performance optimization (ILIAS-eLearning#10625)

* refactor(news): introduce data transfer objects and factory

* refactor(news): introduce UserContextResolver and cache stubs

* refactor(news): introduce NewsAggregator and aggregation strategies

* refactor: cleanup NewsContext object and improve aggregation

* refactor(news): separate recursive and iterative strategies for context aggregation

* refactor(news): restructure cache layer and introduce NewsCollectionService

* refactor(news): introduce methods to retain legacy compatibility

* refactor(news): introduce NewsRepository

* refactor(news): integrate service and data structures in NewsBlockGUI-classes

* refactor(news): implement NewsCache and introduce optimized subset cache lookup

* refactor(news): some bug fixes and remove usage of legacy methods

* refactor(news): fixes cache key overflow bug, fixes missing news criteria bug, fixes file aggregation bug

* refactor(news): introduce lazy loading collection to enhance caching end reduce memory consumption

* refactor(news): remove legacy cache references

* refactor(news): introduce news items database index

* refactor(news): refactor timeline and mark legacy implementations as deprecated

* refactor(news): fix missing user read status in lazy collection

* refactor(news): fix potential cache memory overflow

* fix: refactor code style and small improvements after review

* fix: refactor queries and remove slow join operations

* fix: remove index structure and improve cache overhead to reduce memory consumption

* fix: wrong cache payload

* fix: use iterative tree method to aggregate course and group items to avoid memory overflow

---------

Co-authored-by: Lukas Eichenauer <leichenauer@databay.de>

* NW: Fix cherry-pick from release_9

* Implements sync back to qpl for IPE Feedback questions

* Fixes issue with item groups in page editor due to missing keys

* [LTI] fix: show multiple LTI users in Authentication and Registration section (ILIAS-eLearning#10713)

This change fix the report https://mantis.ilias.de/view.php?id=38537 which happens in ILIAS 9 and ILIAS 10.

We should show every lti access in this section.

* Fixes sizing issue with checkboxes and radio elements in print view of single and multiple choice questions

* Improves some messages in the booking pool settings regarding user booking limits

* Allows non owner with write permission to add new participants to booking pool inside of a course

* Fixes cloze question changing answers and wrongly interpreting best answer

* dc remove xlsx export notification (ILIAS-eLearning#10722)

* dc add selected presentation to tableview (ILIAS-eLearning#10726)

* dc set text detailed link to same view target (ILIAS-eLearning#10730)

* Hides grade and passes status when test is yet unfinished

* Reverts changes to ParticipantTable

* Goes by default to last finished attempt not just newest attempt in test attempt overview

* Displays result points in attempt overview

* Redirects user after booking an item in bookingpool to week view

* Improves redirect after booking of an item and adds missing language variables in booking pool

* [FIX] array access

* Chatroom: Fix message import on same installation

See: https://mantis.ilias.de/view.php?id=46593

* Introduces own booking module language variable for participant

* sync language files

* FileUpload: Prohibit Inclusion of Foreign Objects

Signed-off-by: Releasemanager <webmaster@ilias.de>

* 0045883, 0045884, 0045900 Several BGT Issues

Signed-off-by: Releasemanager <webmaster@ilias.de>

* ilServer tika dependencies

Signed-off-by: Releasemanager <webmaster@ilias.de>

* Fix(SOAP): Add authorization check to getLearningProgressChanges.

Signed-off-by: Releasemanager <webmaster@ilias.de>

* Fix(SOAP): Add missing permission check to prevent moving objects from foreign containers

Signed-off-by: Releasemanager <webmaster@ilias.de>

* Fix(Soap): Add RBAC 'read' permission check to getSCORMCompletionStatus and hasSCORMCertificate to prevent unauthorized data access.

Signed-off-by: Releasemanager <webmaster@ilias.de>

* Release 10.4

---------

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Releasemanager <webmaster@ilias.de>
Co-authored-by: Marvin Beym <mBeym@databay.de>
Co-authored-by: Sergio Santiago Sánchez <54277294+sergiosant02@users.noreply.github.com>
Co-authored-by: mjansen <mjansen@databay.de>
Co-authored-by: Lukas Scharmer <lscharmer@databay.de>
Co-authored-by: Stephan Kergomard <webmaster@kergomard.ch>
Co-authored-by: Alex Killing <killing@leifos.de>
Co-authored-by: Tim Schmitz <schmitz@leifos.de>
Co-authored-by: iszmais <45942348+iszmais@users.noreply.github.com>
Co-authored-by: Christoph Ludolf <127395945+chlulei@users.noreply.github.com>
Co-authored-by: Thomas Joußen <tjoussen@databay.de>
Co-authored-by: Matheus Zych <mzych@databay.de>
Co-authored-by: Aaron Bidzan <abidzan@databay.de>
Co-authored-by: Matthias Kunkel <mkunkel@me.com>
Co-authored-by: qualitus-dahme <dahme@qualitus.de>
Co-authored-by: fneumann <fneumann@databay.de>
Co-authored-by: Daniel Cazalla <86362063+ZallaxDev@users.noreply.github.com>
Co-authored-by: Guido Vollbach <gvollbach@databay.de>
Co-authored-by: Luka Stocker <67695434+lukastocker@users.noreply.github.com>
Co-authored-by: Fabian Helfer <fhelfer@databay.de>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Keven Clausen <keven.clausen@kroeplin-projekte.de>
Co-authored-by: Sergio Santiago <sergiosantiago0403@gmail.com>
Co-authored-by: Fabian Wolf <wolf@ilias.de>
Co-authored-by: Ahmed Hamouda <ahm3dhamouda@gmail.com>
Co-authored-by: Thibeau Fuhrer <thibeau@sr.solutions>
Co-authored-by: Tim Schmitz <104776863+schmitz-ilias@users.noreply.github.com>
Co-authored-by: Fabian Schmid <fabian@sr.solutions>
Co-authored-by: iszmais <iszmais@databay.de>
Co-authored-by: Wolfgang Hübsch <wolfganghuebsch@users.noreply.github.com>
Co-authored-by: Stefan Meyer <meyer@leifos.de>
Co-authored-by: ingoj <120396930+ingoj@users.noreply.github.com>
Co-authored-by: Sagun Karki <51822939+sKarki999@users.noreply.github.com>
Co-authored-by: Lukas Eichenauer <leichenauer@databay.de>
Co-authored-by: Releasemanager <webmaster@ilias.de>
Co-authored-by: sagun <sagun.karki@minervis.com>
sKarki999 pushed a commit to sKarki999/ILIAS that referenced this pull request Feb 6, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bugfix php Pull requests that update Php code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants