1812a20f7SIain Hallam<?php 2812a20f7SIain Hallam 3812a20f7SIain Hallamnamespace dokuwiki\plugin\struct\meta; 4812a20f7SIain Hallam 5812a20f7SIain Hallam/** 6812a20f7SIain Hallam * Class AggregationValue 7812a20f7SIain Hallam * 8812a20f7SIain Hallam * @package dokuwiki\plugin\struct\meta 9812a20f7SIain Hallam * @license GPL 2 http://www.gnu.org/licenses/gpl-2.0.html 10812a20f7SIain Hallam * @author Iain Hallam <iain@nineworlds.net> 11812a20f7SIain Hallam */ 12d90aa848SAndreas Gohrclass AggregationValue extends Aggregation 13812a20f7SIain Hallam{ 14812a20f7SIain Hallam /** 15812a20f7SIain Hallam * @var Column the column to be displayed 16812a20f7SIain Hallam */ 17812a20f7SIain Hallam protected $column; 18812a20f7SIain Hallam 19d90aa848SAndreas Gohr /** @inheritdoc */ 20812a20f7SIain Hallam public function __construct($id, $mode, \Doku_Renderer $renderer, SearchConfig $searchConfig) 21812a20f7SIain Hallam { 22812a20f7SIain Hallam // limit to first result 23d90aa848SAndreas Gohr $searchConfig->setLimit(1); 24d90aa848SAndreas Gohr $searchConfig->setOffset(0); 25812a20f7SIain Hallam 26d90aa848SAndreas Gohr parent::__construct($id, $mode, $renderer, $searchConfig); 27c2839eb2SAnna Dabrowska 28c2839eb2SAnna Dabrowska $this->tagName = 'span'; 29812a20f7SIain Hallam } 30812a20f7SIain Hallam 31812a20f7SIain Hallam /** 32812a20f7SIain Hallam * Create the output on the renderer 33812a20f7SIain Hallam * 34*abd4e19cSAnna Dabrowska * @param int $showNotFound Whether to display the default text for no records 35812a20f7SIain Hallam */ 36*abd4e19cSAnna Dabrowska public function render($showNotFound = 0) 37812a20f7SIain Hallam { 38812a20f7SIain Hallam // Check that we actually got a result 39*abd4e19cSAnna Dabrowska if ($this->searchConfig->getCount()) { 40*abd4e19cSAnna Dabrowska $this->renderValue($this->searchConfig->getRows()[0]); 417234bfb1Ssplitbrain // only one result 42*abd4e19cSAnna Dabrowska } elseif ($showNotFound) { 43812a20f7SIain Hallam $this->renderer->cdata($this->helper->getLang('none')); 44812a20f7SIain Hallam } 45812a20f7SIain Hallam } 46812a20f7SIain Hallam 47812a20f7SIain Hallam /** 48d90aa848SAndreas Gohr * @param Value[] $resultrow 49812a20f7SIain Hallam */ 50812a20f7SIain Hallam protected function renderValue($resultrow) 51812a20f7SIain Hallam { 527234bfb1Ssplitbrain foreach ($resultrow as $value) { 53812a20f7SIain Hallam if ($value->isEmpty()) { 54812a20f7SIain Hallam continue; 55812a20f7SIain Hallam } 56812a20f7SIain Hallam if ($this->mode == 'xhtml') { 57812a20f7SIain Hallam $type = 'struct_' . strtolower($value->getColumn()->getType()->getClass()); 58812a20f7SIain Hallam $this->renderer->doc .= '<span class="' . $type . '">'; 59812a20f7SIain Hallam } 60812a20f7SIain Hallam $value->render($this->renderer, $this->mode); 61812a20f7SIain Hallam if ($this->mode == 'xhtml') { 62812a20f7SIain Hallam $this->renderer->doc .= '</span>'; 63812a20f7SIain Hallam } 64812a20f7SIain Hallam } 65812a20f7SIain Hallam } 66812a20f7SIain Hallam} 67