[TikiWiki-commits] [Git][tikiwiki/tiki][24.x] [FIX] Backport handler validation fix from later versions of Tiki to prevent crashes
"MAGENE Sem Joel \(@Jomagene\) via TikiWiki-cvs" <[email protected]>
| Newsgroups | gmane.comp.cms.tiki.cvs |
|---|---|
| Message-ID | <69dce2582de0f_3b18e408-353@gitlab-sidekiq-low-urgency-cpu-bound-v2-69fbf554cf-ls5vc.mail> |
MAGENE Sem Joel pushed to branch 24.x at Tiki Wiki CMS Groupware / Tiki
Commits:
5def1f21 by Sandeep D at 2026-04-13T12:22:18+00:00
[FIX] Backport handler validation fix from later versions of Tiki to prevent crashes
---
* [FIX] tracker(get_isMain_value): close residual null-definition fatal and preserve main field formatting
* [FIX] Backport handler validation fix from later versions of Tiki to prevent crashes
Fixes "Call to a member function getFieldData() on bool" error when applying Voting_System profile in Tiki 24.x.
**Changes:**
- lib/trackers/trackerlib.php:
- Wrapped Tracker_Definition::get() in try-catch
- Added if ($mainFieldId) validation
- Added if ($handler) checks before getFieldData() and renderOutput()
- Added warning trigger on tracker not found
See merge request tikiwiki/tiki!8753
- - - - -
1 changed file:
- lib/trackers/trackerlib.php
Changes:
=====================================
lib/trackers/trackerlib.php
=====================================
@@ -3987,14 +3987,32 @@ class TrackerLib extends TikiLib
// for ItemLink, AutoIncrement, UserPref and Category fields use the proper output method
if (in_array($main_field_type, ['r','q', 'p', 'e'])) {
$definition = Tracker_Definition::get($trackerId);
- $field = $definition->getField($this->get_main_field($trackerId));
- $item = $this->get_tracker_item($itemId);
- $handler = $this->get_field_handler($field, $item);
- // when called from \ObjectLib::get_title Category fields need to have getFieldData run before the category name can be rendered
- $field = array_merge($field, $handler->getFieldData());
- $handler = $this->get_field_handler($field, $item);
-
- $result = $handler->renderOutput(['list_mode' => 'csv']);
+
+ if (! $definition) {
+ trigger_error(
+ tr('Requested main tracker item field value of item %0 but tracker %1 not found.', $itemId, $trackerId),
+ E_USER_WARNING
+ );
+ return '';
+ }
+
+ $mainFieldId = $this->get_main_field($trackerId);
+ if ($mainFieldId) {
+ $field = $definition->getField($mainFieldId);
+ $item = $this->get_tracker_item($itemId);
+ $handler = $this->get_field_handler($field, $item);
+
+ if ($handler) {
+ // when called from \ObjectLib::get_title Category fields need to have getFieldData run before the category name can be rendered
+ $mergedField = array_merge($field, $handler->getFieldData());
+ $mergedHandler = $this->get_field_handler($mergedField, $item);
+ // Prefer the merged handler (needed for Category), but fall back to the
+ // original handler so AutoIncrement etc. keep their formatting instead
+ // of silently returning the raw DB value.
+ $renderHandler = $mergedHandler ?: $handler;
+ $result = $renderHandler->renderOutput(['list_mode' => 'csv']);
+ }
+ }
}
if (is_string($result) && strlen($result) && $result[0] === '{') {
View it on GitLab: https://gitlab.com/tikiwiki/tiki/-/commit/5def1f211c8f822ba6511c467da6c527d1169b55
--
View it on GitLab: https://gitlab.com/tikiwiki/tiki/-/commit/5def1f211c8f822ba6511c467da6c527d1169b55
You're receiving this email because of your account on gitlab.com. Manage all notifications: https://gitlab.com/-/profile/notifications | Help: https://gitlab.com/help
_______________________________________________
TikiWiki-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/tikiwiki-cvs