xref: /plugin/struct/meta/AggregationValue.php (revision c2839eb299c2b690950316d87b096afd5cd44740)
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);
27*c2839eb2SAnna Dabrowska
28*c2839eb2SAnna Dabrowska        $this->tagName = 'span';
29812a20f7SIain Hallam    }
30812a20f7SIain Hallam
31812a20f7SIain Hallam    /**
32812a20f7SIain Hallam     * Create the output on the renderer
33812a20f7SIain Hallam     *
34812a20f7SIain Hallam     * @param int $show_not_found Whether to display the default text for no records
35812a20f7SIain Hallam     */
36812a20f7SIain Hallam    public function render($show_not_found = 0)
37812a20f7SIain Hallam    {
38812a20f7SIain Hallam        // Check that we actually got a result
39812a20f7SIain Hallam        if ($this->resultCount) {
407234bfb1Ssplitbrain            $this->renderValue($this->result[0]);
417234bfb1Ssplitbrain            // only one result
427234bfb1Ssplitbrain        } elseif ($show_not_found) {
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