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 */ 12*d90aa848SAndreas Gohrclass AggregationValue extends Aggregation 13812a20f7SIain Hallam{ 14812a20f7SIain Hallam 15812a20f7SIain Hallam /** 16812a20f7SIain Hallam * @var Column the column to be displayed 17812a20f7SIain Hallam */ 18812a20f7SIain Hallam protected $column; 19812a20f7SIain Hallam 20*d90aa848SAndreas Gohr /** @inheritdoc */ 21812a20f7SIain Hallam public function __construct($id, $mode, \Doku_Renderer $renderer, SearchConfig $searchConfig) 22812a20f7SIain Hallam { 23812a20f7SIain Hallam // limit to first result 24*d90aa848SAndreas Gohr $searchConfig->setLimit(1); 25*d90aa848SAndreas Gohr $searchConfig->setOffset(0); 26812a20f7SIain Hallam 27*d90aa848SAndreas Gohr parent::__construct($id, $mode, $renderer, $searchConfig); 28812a20f7SIain Hallam } 29812a20f7SIain Hallam 30812a20f7SIain Hallam /** 31812a20f7SIain Hallam * Create the output on the renderer 32812a20f7SIain Hallam * 33812a20f7SIain Hallam * @param int $show_not_found Whether to display the default text for no records 34812a20f7SIain Hallam */ 35812a20f7SIain Hallam public function render($show_not_found = 0) 36812a20f7SIain Hallam { 37812a20f7SIain Hallam $this->startScope(); 38812a20f7SIain Hallam 39812a20f7SIain Hallam // Check that we actually got a result 40812a20f7SIain Hallam if ($this->resultCount) { 41*d90aa848SAndreas Gohr $this->renderValue($this->result[0]); // only one result 42812a20f7SIain Hallam } else { 43812a20f7SIain Hallam if ($show_not_found) { 44812a20f7SIain Hallam $this->renderer->cdata($this->helper->getLang('none')); 45812a20f7SIain Hallam } 46812a20f7SIain Hallam } 47812a20f7SIain Hallam 48812a20f7SIain Hallam $this->finishScope(); 49812a20f7SIain Hallam } 50812a20f7SIain Hallam 51812a20f7SIain Hallam /** 52812a20f7SIain Hallam * Adds additional info to document and renderer in XHTML mode 53812a20f7SIain Hallam * 54812a20f7SIain Hallam * @see finishScope() 55812a20f7SIain Hallam */ 56812a20f7SIain Hallam protected function startScope() 57812a20f7SIain Hallam { 58812a20f7SIain Hallam // wrapping span 59812a20f7SIain Hallam if ($this->mode != 'xhtml') { 60812a20f7SIain Hallam return; 61812a20f7SIain Hallam } 62812a20f7SIain Hallam $this->renderer->doc .= "<span class=\"structaggregation valueaggregation\">"; 63812a20f7SIain Hallam } 64812a20f7SIain Hallam 65812a20f7SIain Hallam /** 66812a20f7SIain Hallam * Closes anything opened in startScope() 67812a20f7SIain Hallam * 68812a20f7SIain Hallam * @see startScope() 69812a20f7SIain Hallam */ 70812a20f7SIain Hallam protected function finishScope() 71812a20f7SIain Hallam { 72812a20f7SIain Hallam // wrapping span 73812a20f7SIain Hallam if ($this->mode != 'xhtml') { 74812a20f7SIain Hallam return; 75812a20f7SIain Hallam } 76812a20f7SIain Hallam $this->renderer->doc .= '</span>'; 77812a20f7SIain Hallam } 78812a20f7SIain Hallam 79812a20f7SIain Hallam /** 80*d90aa848SAndreas Gohr * @param Value[] $resultrow 81812a20f7SIain Hallam */ 82812a20f7SIain Hallam protected function renderValue($resultrow) 83812a20f7SIain Hallam { 84812a20f7SIain Hallam foreach ($resultrow as $column => $value) { 85812a20f7SIain Hallam if ($value->isEmpty()) { 86812a20f7SIain Hallam continue; 87812a20f7SIain Hallam } 88812a20f7SIain Hallam if ($this->mode == 'xhtml') { 89812a20f7SIain Hallam $type = 'struct_' . strtolower($value->getColumn()->getType()->getClass()); 90812a20f7SIain Hallam $this->renderer->doc .= '<span class="' . $type . '">'; 91812a20f7SIain Hallam } 92812a20f7SIain Hallam $value->render($this->renderer, $this->mode); 93812a20f7SIain Hallam if ($this->mode == 'xhtml') { 94812a20f7SIain Hallam $this->renderer->doc .= '</span>'; 95812a20f7SIain Hallam } 96812a20f7SIain Hallam } 97812a20f7SIain Hallam } 98812a20f7SIain Hallam} 99