From 09af6f86a121c51d3e0ab965966b836d14fe7c13 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Philipp=20Sch=C3=BCle?=
Date: Wed, 5 Feb 2025 09:25:36 +0100
Subject: [PATCH] fix(Tinebase/Notes): currentUser might not be available
... for example during setup
---
tine20/Tinebase/Notes.php | 37 ++++++++++++++++---------------------
1 file changed, 16 insertions(+), 21 deletions(-)
diff --git a/tine20/Tinebase/Notes.php b/tine20/Tinebase/Notes.php
index 4f36a90255..2969053446 100644
--- a/tine20/Tinebase/Notes.php
+++ b/tine20/Tinebase/Notes.php
@@ -710,16 +710,15 @@ public function deleteNotesOfRecord($_model, $_backend, $_id)
* @param string|array $_id
* @param string $_model
* @param string $_backend
- * @param boolean|optional $onlyNonSystemNotes
+ * @param boolean $_onlyNonSystemNotes
* @return Tinebase_Model_NoteFilter
*/
- protected function _getNotesFilter($_id, $_model, $_backend, $_onlyNonSystemNotes = TRUE)
+ protected function _getNotesFilter($_id, $_model, $_backend, $_onlyNonSystemNotes = true): Tinebase_Model_NoteFilter
{
$backend = ucfirst(strtolower($_backend));
$noteTypes = Tinebase_Config::getInstance()->get(Tinebase_Config::NOTE_TYPE)->records;
$currentUser = Tinebase_Core::getUser();
-
- if (!is_string($currentUser)) {
+ if ($currentUser && !is_string($currentUser)) {
$currentUser = $currentUser->getId();
}
@@ -727,45 +726,41 @@ protected function _getNotesFilter($_id, $_model, $_backend, $_onlyNonSystemNote
$noteTypes = $noteTypes->filter('is_user_type', 1);
}
- $filter = new Tinebase_Model_NoteFilter([
- array(
+ $filterData = [
+ [
'field' => 'record_model',
'operator' => 'equals',
'value' => $_model
- ),
- array(
+ ], [
'field' => 'record_backend',
'operator' => 'equals',
'value' => $backend
- ),
- array(
+ ], [
'field' => 'record_id',
'operator' => 'in',
'value' => (array) $_id
- ),
- array(
+ ], [
'field' => 'note_type_id',
'operator' => 'in',
'value' => $noteTypes->getId()
- ),
- ['condition' => 'OR',
+ ],
+ ];
+ if ($currentUser) {
+ $filterData[] = ['condition' => 'OR',
'filters' => [
[
'field' => 'created_by',
'operator' => 'equals',
'value' => $currentUser
- ],
- [
+ ], [
'field' => 'note_visibility',
'operator' => 'equals',
'value' => Tinebase_Model_Note::SYSTEM_NOTE_SHARED,
]
]
- ],
- ],
- );
-
- return $filter;
+ ];
+ }
+ return new Tinebase_Model_NoteFilter($filterData);
}
/************************** note types *******************/