[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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.