xref: /plugin/struct/meta/AggregationValue.php (revision 7234bfb14e712ff548d9266ef32fdcc8eaf2d04e) !
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);
27812a20f7SIain Hallam    }
28812a20f7SIain Hallam
29812a20f7SIain Hallam    /**
30812a20f7SIain Hallam     * Create the output on the renderer
31812a20f7SIain Hallam     *
32812a20f7SIain Hallam     * @param int $show_not_found Whether to display the default text for no records
33812a20f7SIain Hallam     */
34812a20f7SIain Hallam    public function render($show_not_found = 0)
35812a20f7SIain Hallam    {
36812a20f7SIain Hallam        // Check that we actually got a result
37812a20f7SIain Hallam        if ($this->resultCount) {
38*7234bfb1Ssplitbrain            $this->renderValue($this->result[0]);
39*7234bfb1Ssplitbrain            // only one result
40*7234bfb1Ssplitbrain        } elseif ($show_not_found) {
41812a20f7SIain Hallam            $this->renderer->cdata($this->helper->getLang('none'));
42812a20f7SIain Hallam        }
43812a20f7SIain Hallam    }
44812a20f7SIain Hallam
45812a20f7SIain Hallam    /**
46d90aa848SAndreas Gohr     * @param Value[] $resultrow
47812a20f7SIain Hallam     */
48812a20f7SIain Hallam    protected function renderValue($resultrow)
49812a20f7SIain Hallam    {
50*7234bfb1Ssplitbrain        foreach ($resultrow as $value) {
51812a20f7SIain Hallam            if ($value->isEmpty()) {
52812a20f7SIain Hallam                continue;
53812a20f7SIain Hallam            }
54812a20f7SIain Hallam            if ($this->mode == 'xhtml') {
55812a20f7SIain Hallam                $type = 'struct_' . strtolower($value->getColumn()->getType()->getClass());
56812a20f7SIain Hallam                $this->renderer->doc .= '<span class="' . $type . '">';
57812a20f7SIain Hallam            }
58812a20f7SIain Hallam            $value->render($this->renderer, $this->mode);
59812a20f7SIain Hallam            if ($this->mode == 'xhtml') {
60812a20f7SIain Hallam                $this->renderer->doc .= '</span>';
61812a20f7SIain Hallam            }
62812a20f7SIain Hallam        }
63812a20f7SIain Hallam    }
64812a20f7SIain Hallam}
65