diff --git a/4dev/tests/Logging/CoreLibsLoggingErrorMessagesTest.php b/4dev/tests/Logging/CoreLibsLoggingErrorMessagesTest.php index 8f543cb9..7e1729cc 100644 --- a/4dev/tests/Logging/CoreLibsLoggingErrorMessagesTest.php +++ b/4dev/tests/Logging/CoreLibsLoggingErrorMessagesTest.php @@ -444,7 +444,7 @@ final class CoreLibsLoggingErrorMessagesTest extends TestCase ); $this->assertEquals( [ - 'target-f' => 'Target text' + ['target' => 'target-f', 'info' => 'Target text', 'level' => 'error'] ], $em->getJumpTarget() ); @@ -455,7 +455,7 @@ final class CoreLibsLoggingErrorMessagesTest extends TestCase ); $this->assertEquals( [ - 'target-f' => 'Target text' + ['target' => 'target-f', 'info' => 'Target text', 'level' => 'error'] ], $em->getJumpTarget() ); @@ -466,8 +466,8 @@ final class CoreLibsLoggingErrorMessagesTest extends TestCase ); $this->assertEquals( [ - 'target-f' => 'Target text', - 'target-s' => 'More text' + ['target' => 'target-f', 'info' => 'Target text', 'level' => 'error'], + ['target' => 'target-s', 'info' => 'More text', 'level' => 'error'], ], $em->getJumpTarget() ); @@ -478,9 +478,23 @@ final class CoreLibsLoggingErrorMessagesTest extends TestCase ); $this->assertEquals( [ - 'target-f' => 'Target text', - 'target-s' => 'More text', - 'target-e' => 'Jump to: target-e' + ['target' => 'target-f', 'info' => 'Target text', 'level' => 'error'], + ['target' => 'target-s', 'info' => 'More text', 'level' => 'error'], + ['target' => 'target-e', 'info' => 'Jump to: target-e', 'level' => 'error'], + ], + $em->getJumpTarget() + ); + // add through message + $em->setErrorMsg('E-101', 'abort', 'Abort message', jump_target:[ + 'target' => 'abort-target', + 'info' => 'Abort error' + ]); + $this->assertEquals( + [ + ['target' => 'target-f', 'info' => 'Target text', 'level' => 'error'], + ['target' => 'target-s', 'info' => 'More text', 'level' => 'error'], + ['target' => 'target-e', 'info' => 'Jump to: target-e', 'level' => 'error'], + ['target' => 'abort-target', 'info' => 'Abort error', 'level' => 'abort'], ], $em->getJumpTarget() ); diff --git a/www/lib/CoreLibs/Logging/ErrorMessage.php b/www/lib/CoreLibs/Logging/ErrorMessage.php index 332cd01b..e0b4d001 100644 --- a/www/lib/CoreLibs/Logging/ErrorMessage.php +++ b/www/lib/CoreLibs/Logging/ErrorMessage.php @@ -17,8 +17,8 @@ class ErrorMessage { /** @var array */ private array $error_str = []; - /** @var array */ - private array $jump_targets; + /** @var array */ + private array $jump_targets = []; /** @var \CoreLibs\Logging\Logging $log */ public \CoreLibs\Logging\Logging $log; @@ -112,7 +112,7 @@ class ErrorMessage 'highlight' => $highlight, ]; // set a jump target - $this->setJumpTarget($jump_target['target'] ?? null, $jump_target['info'] ?? null); + $this->setJumpTarget($jump_target['target'] ?? null, $jump_target['info'] ?? null, $level); // write to log for abort/crash switch ($level) { case 'notice': @@ -202,15 +202,18 @@ class ErrorMessage * * @param string|null $target * @param string|null $info + * @param string $level [='error'] * @return void */ public function setJumpTarget( ?string $target, ?string $info, + string $level = 'error', ): void { if ( empty($target) || - !empty($this->jump_targets[$target]) + array_key_exists($target, $this->jump_targets) + // !empty($this->jump_targets[$target]) // also check if this is an alphanumeric string? css id compatible? ) { return; @@ -218,7 +221,11 @@ class ErrorMessage if (empty($info)) { $info = 'Jump to: ' . $target; } - $this->jump_targets[$target] = $info; + $level = MessageLevel::fromName($level)->name; + $this->jump_targets[$target] = [ + 'info' => $info, + 'level' => $level, + ]; } // ********************************************************************* @@ -266,11 +273,21 @@ class ErrorMessage /** * Return the jump target list * - * @return array{}|array{string,string} List of jump targets with info text, or empty array if not set + * @return array{}|array List of jump targets with info text, + * or empty array if not set */ public function getJumpTarget(): array { - return $this->jump_targets ?? []; + $_jump_target = []; + foreach ($this->jump_targets as $target => $jump) { + $_jump_target[] = array_merge( + $jump, + [ + 'target' => $target, + ] + ); + } + return $_jump_target; } // *********************************************************************