xref: /plugin/struct/meta/SummaryColumn.php (revision d6d97f6064c3b0f90310be8341edc9585520ee54)
188b58a21SSzymon Olewniczak<?php
288b58a21SSzymon Olewniczak
388b58a21SSzymon Olewniczaknamespace dokuwiki\plugin\struct\meta;
488b58a21SSzymon Olewniczak
588b58a21SSzymon Olewniczakuse dokuwiki\plugin\struct\types\AbstractBaseType;
66781c68dSSzymon Olewniczakuse dokuwiki\plugin\struct\types\AutoSummary;
788b58a21SSzymon Olewniczak
888b58a21SSzymon Olewniczak/**
988b58a21SSzymon Olewniczak * Class SummaryColumn
1088b58a21SSzymon Olewniczak *
1188b58a21SSzymon Olewniczak * Just like a column, but does not reference one of the col* data columns but the pid column.
1288b58a21SSzymon Olewniczak *
1388b58a21SSzymon Olewniczak * @package dokuwiki\plugin\struct\meta
1488b58a21SSzymon Olewniczak */
15*d6d97f60SAnna Dabrowskaclass SummaryColumn extends Column
16*d6d97f60SAnna Dabrowska{
1788b58a21SSzymon Olewniczak
1888b58a21SSzymon Olewniczak    /**
1988b58a21SSzymon Olewniczak     * PageColumn constructor.
2088b58a21SSzymon Olewniczak     *
2188b58a21SSzymon Olewniczak     * @param int $sort
2288b58a21SSzymon Olewniczak     * @param PageMeta $type
2388b58a21SSzymon Olewniczak     * @param string $table
2488b58a21SSzymon Olewniczak     */
25*d6d97f60SAnna Dabrowska    public function __construct($sort, AutoSummary $type, $table = '')
26*d6d97f60SAnna Dabrowska    {
2788b58a21SSzymon Olewniczak        if ($type->isMulti()) throw new StructException('SummaryColumns can not be multi value types!');
2888b58a21SSzymon Olewniczak        parent::__construct($sort, $type, 0, true, $table);
2988b58a21SSzymon Olewniczak        $this->getType()->setContext($this);
3088b58a21SSzymon Olewniczak    }
3188b58a21SSzymon Olewniczak
32*d6d97f60SAnna Dabrowska    public function getColref()
33*d6d97f60SAnna Dabrowska    {
3488b58a21SSzymon Olewniczak        throw new StructException('Accessing the colref of a SummaryColumn makes no sense');
3588b58a21SSzymon Olewniczak    }
3688b58a21SSzymon Olewniczak
3788b58a21SSzymon Olewniczak    /**
3888b58a21SSzymon Olewniczak     * @param bool $enforceSingleColumn ignored
3988b58a21SSzymon Olewniczak     * @return string
4088b58a21SSzymon Olewniczak     */
41*d6d97f60SAnna Dabrowska    public function getColName($enforceSingleColumn = true)
42*d6d97f60SAnna Dabrowska    {
4388b58a21SSzymon Olewniczak        return 'lastsummary';
4488b58a21SSzymon Olewniczak    }
4588b58a21SSzymon Olewniczak
4688b58a21SSzymon Olewniczak    /**
4788b58a21SSzymon Olewniczak     * @param bool $enforceSingleColumn ignored
4888b58a21SSzymon Olewniczak     * @return string
4988b58a21SSzymon Olewniczak     */
50*d6d97f60SAnna Dabrowska    public function getFullColName($enforceSingleColumn = true)
51*d6d97f60SAnna Dabrowska    {
5288b58a21SSzymon Olewniczak        $col = 'titles.' . $this->getColName($enforceSingleColumn);
5388b58a21SSzymon Olewniczak        return $col;
5488b58a21SSzymon Olewniczak    }
5588b58a21SSzymon Olewniczak
5688b58a21SSzymon Olewniczak    /**
5788b58a21SSzymon Olewniczak     * @return string always '%lastsummary%'
5888b58a21SSzymon Olewniczak     */
59*d6d97f60SAnna Dabrowska    public function getLabel()
60*d6d97f60SAnna Dabrowska    {
6188b58a21SSzymon Olewniczak        return '%lastsummary%';
6288b58a21SSzymon Olewniczak    }
6388b58a21SSzymon Olewniczak
6488b58a21SSzymon Olewniczak    /**
6588b58a21SSzymon Olewniczak     * @return string always '%lastsummary%'
6688b58a21SSzymon Olewniczak     */
67*d6d97f60SAnna Dabrowska    public function getFullQualifiedLabel()
68*d6d97f60SAnna Dabrowska    {
6988b58a21SSzymon Olewniczak        // There is only one pageid for each row because we JOIN on it
7088b58a21SSzymon Olewniczak        // so we do not prefix it with the table
7188b58a21SSzymon Olewniczak        return $this->getLabel();
7288b58a21SSzymon Olewniczak    }
7388b58a21SSzymon Olewniczak
7488b58a21SSzymon Olewniczak    /**
7588b58a21SSzymon Olewniczak     * @return string preconfigured label
7688b58a21SSzymon Olewniczak     */
77*d6d97f60SAnna Dabrowska    public function getTranslatedLabel()
78*d6d97f60SAnna Dabrowska    {
7988b58a21SSzymon Olewniczak        /** @var \helper_plugin_struct_config $helper */
8088b58a21SSzymon Olewniczak        $helper = plugin_load('helper', 'struct_config');
8188b58a21SSzymon Olewniczak        return $helper->getLang('summarylabel');
8288b58a21SSzymon Olewniczak    }
8388b58a21SSzymon Olewniczak}
84