xref: /plugin/struct/meta/UserColumn.php (revision 2e12ac22cf806595364023b831794693655a9912)
1*2e12ac22SMichael Grosse<?php
2*2e12ac22SMichael Grosse
3*2e12ac22SMichael Grossenamespace dokuwiki\plugin\struct\meta;
4*2e12ac22SMichael Grosse
5*2e12ac22SMichael Grosseuse dokuwiki\plugin\struct\types\User;
6*2e12ac22SMichael Grosse
7*2e12ac22SMichael Grosse/**
8*2e12ac22SMichael Grosse * Class UserColumn
9*2e12ac22SMichael Grosse *
10*2e12ac22SMichael Grosse * Just like a column, but does not reference one of the col* data columns but the lasteditor column in the titles table.
11*2e12ac22SMichael Grosse *
12*2e12ac22SMichael Grosse * @package dokuwiki\plugin\struct\meta
13*2e12ac22SMichael Grosse */
14*2e12ac22SMichael Grosseclass UserColumn extends Column {
15*2e12ac22SMichael Grosse
16*2e12ac22SMichael Grosse    /**
17*2e12ac22SMichael Grosse     * PageColumn constructor.
18*2e12ac22SMichael Grosse     *
19*2e12ac22SMichael Grosse     * @param int $sort
20*2e12ac22SMichael Grosse     * @param Date $type
21*2e12ac22SMichael Grosse     * @param string $table
22*2e12ac22SMichael Grosse     */
23*2e12ac22SMichael Grosse    public function __construct($sort, User $type, $table='') {
24*2e12ac22SMichael Grosse        if($type->isMulti()) throw new StructException('UserColumns can not be multi value types!');
25*2e12ac22SMichael Grosse        parent::__construct($sort, $type, 0, true, $table);
26*2e12ac22SMichael Grosse        $this->getType()->setContext($this);
27*2e12ac22SMichael Grosse    }
28*2e12ac22SMichael Grosse
29*2e12ac22SMichael Grosse    public function getColref() {
30*2e12ac22SMichael Grosse        throw new StructException('Accessing the colref of a UserColumn makes no sense');
31*2e12ac22SMichael Grosse    }
32*2e12ac22SMichael Grosse
33*2e12ac22SMichael Grosse    /**
34*2e12ac22SMichael Grosse     * @param bool $enforceSingleColumn ignored
35*2e12ac22SMichael Grosse     * @return string
36*2e12ac22SMichael Grosse     */
37*2e12ac22SMichael Grosse    public function getColName($enforceSingleColumn = true) {
38*2e12ac22SMichael Grosse        return 'lasteditor';
39*2e12ac22SMichael Grosse    }
40*2e12ac22SMichael Grosse
41*2e12ac22SMichael Grosse    /**
42*2e12ac22SMichael Grosse     * @param bool $enforceSingleColumn ignored
43*2e12ac22SMichael Grosse     * @return string
44*2e12ac22SMichael Grosse     */
45*2e12ac22SMichael Grosse    public function getFullColName($enforceSingleColumn = true) {
46*2e12ac22SMichael Grosse        $col = 'titles.'.$this->getColName($enforceSingleColumn);
47*2e12ac22SMichael Grosse        return $col;
48*2e12ac22SMichael Grosse    }
49*2e12ac22SMichael Grosse
50*2e12ac22SMichael Grosse    /**
51*2e12ac22SMichael Grosse     * @return string always '%lastupdate%'
52*2e12ac22SMichael Grosse     */
53*2e12ac22SMichael Grosse    public function getLabel() {
54*2e12ac22SMichael Grosse        return '%lasteditor%';
55*2e12ac22SMichael Grosse    }
56*2e12ac22SMichael Grosse
57*2e12ac22SMichael Grosse    /**
58*2e12ac22SMichael Grosse     * @return string always '%lastupdate%'
59*2e12ac22SMichael Grosse     */
60*2e12ac22SMichael Grosse    public function getFullQualifiedLabel() {
61*2e12ac22SMichael Grosse        // There is only one pageid for each row because we JOIN on it
62*2e12ac22SMichael Grosse        // so we do not prefix it with the table
63*2e12ac22SMichael Grosse        return $this->getLabel();
64*2e12ac22SMichael Grosse    }
65*2e12ac22SMichael Grosse
66*2e12ac22SMichael Grosse    /**
67*2e12ac22SMichael Grosse     * @return string preconfigured label
68*2e12ac22SMichael Grosse     */
69*2e12ac22SMichael Grosse    public function getTranslatedLabel() {
70*2e12ac22SMichael Grosse        /** @var \helper_plugin_struct_config $helper */
71*2e12ac22SMichael Grosse        $helper = plugin_load('helper', 'struct_config');
72*2e12ac22SMichael Grosse        return $helper->getLang('userlabel');
73*2e12ac22SMichael Grosse    }
74*2e12ac22SMichael Grosse
75*2e12ac22SMichael Grosse}
76