From f484a844d96d8ec97accb879909a6f042b21f205 Mon Sep 17 00:00:00 2001 From: astanley Date: Tue, 20 Oct 2026 14:37:17 -0300 Subject: [PATCH] Refactored render function --- .../BibCiteProcessor/CiteprocPhpInline.php | 24 ++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/src/Plugin/BibCiteProcessor/CiteprocPhpInline.php b/src/Plugin/BibCiteProcessor/CiteprocPhpInline.php index e9ebd3a..83cc8f4 100644 --- a/src/Plugin/BibCiteProcessor/CiteprocPhpInline.php +++ b/src/Plugin/BibCiteProcessor/CiteprocPhpInline.php @@ -62,14 +62,32 @@ class CiteprocPhpInline extends BibCiteProcessorBase implements BibCiteProcessor */ public function render($data, $csl, $lang) { $cite_proc = new CiteProc($csl, $lang); - $mode = !empty($data['mode']) ? $data['mode'] : NULL; - if (!$data instanceof \stdClass) { - $data = json_decode(json_encode($data)); + // Default to bibliography when no mode is specified. + $mode = !empty($data['mode']) ? $data['mode'] : 'bibliography'; + + // CiteProc expects an array of citation objects. + if ($data instanceof \stdClass) { + $data = [$data]; + } + elseif (is_array($data)) { + if (array_is_list($data)) { + $data = array_map( + static fn($item) => is_array($item) + ? json_decode(json_encode($item)) + : $item, + $data + ); + } + else { + $data = [json_decode(json_encode($data))]; + } } + if (!empty($data)) { return $cite_proc->render($data, $mode); } + return ''; }