Fix/multi tasklist usage#19
Closed
TDannhauer wants to merge 2 commits into
Closed
Conversation
Added legacy support for task.php by setting Horde globals.
Initialize registry if not set and make it global.
Contributor
Author
|
please review, I know we are fighting to get rid of globals |
Member
|
Don't set globals in controller - pass the variable as parameter. Globals is something we want to reduce, not embrace. |
Member
|
@TDannhauer |
TDannhauer
added a commit
that referenced
this pull request
May 22, 2026
refactor: Use controllers rather than globals. Addresses #19
ralflang
added a commit
that referenced
this pull request
May 28, 2026
Release version 5.0.0-RC3 Refactor tasklist cache and sync list handling Refactor task retrieval logic in Sql.php fix(security): restrict unserialize allowed_classes (ZDI-20-1051) refactor: Transition to unified screen.css Remove persistPrefs() calls from tasklist methods Refactor ActiveSync task list cache handling Update Nag.php Refactor tasklist creation to include sync options Enhance addTasklist with synchronization and persistence Enhance tasklist management with sync functionality Refactor ActiveSync error handling and notifications Sync tasklist after adding it Refactor synchronization of tasklist addition Refactor sync_lists handling in task management chore: Update workflow dependency Merge pull request #23 from horde/refactor/adopt-format-parse refactor(nag): delegate parseDate() to Format::parse() Update addTasklist method documentation Merge pull request #22 from horde/fix/array_offset_access Merge pull request #21 from horde/fix/date_format Enhance validation checks in NagMethod Refactor getInfo and isValid methods for NagAlarm Add ICU date formatting support in parseDate method Merge pull request #20 from horde/refactor/multi_tasklist_usage_2 refactor: Use controllers rather than globals. Addresses #19 refactor: Replace strftime with IntlDateFormatter refactor(injector): Widen type hints from Horde_Injector to Horde_Injector|Injector style: constrain tag list icon size to 16px
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Cause
When you have more than one task list, the Task List field uses a “reload” action (Horde_Form_Action_reload). Changing the list submits the form to /nag/t/save (SaveTaskController).
If validation fails (normal on reload), the controller falls back to legacy task.php to redraw the form. That script expects $registry in the global scope (line 156: $registry->get('jsfs', 'horde')).
On the Rampage/PSR route, the registry is available on the controller ($this->registry) but was not copied into $GLOBALS['registry'] before including task.php, so you got “Undefined variable $registry”.
There was also a bad global $form line that pointed at an unset global instead of the form object built in the controller.
Fix
SaveTaskController.php — Before require task.php, set $GLOBALS['registry'] = $this->registry and remove the incorrect global $form.
task.php — If $registry is still missing after global, resolve it from $GLOBALS['registry'] or the injector.
Try again: open New Task, change the task list in the combo box. The form should reload without crashing.
Note: These edits are under vendor/horde/nag/. A composer update may overwrite them; consider reporting upstream to Horde or keeping a local patch. I can help with a Composer patch or overlay if you want that next.