xref: /plugin/struct/meta/UserColumn.php (revision eb230f4fd2cd3396fb3770e8836dfe0c16bb2949)
12e12ac22SMichael Grosse<?php
22e12ac22SMichael Grosse
32e12ac22SMichael Grossenamespace dokuwiki\plugin\struct\meta;
42e12ac22SMichael Grosse
52e12ac22SMichael Grosseuse dokuwiki\plugin\struct\types\User;
62e12ac22SMichael Grosse
72e12ac22SMichael Grosse/**
82e12ac22SMichael Grosse * Class UserColumn
92e12ac22SMichael Grosse *
102e12ac22SMichael Grosse * Just like a column, but does not reference one of the col* data columns but the lasteditor column in the titles table.
112e12ac22SMichael Grosse *
122e12ac22SMichael Grosse * @package dokuwiki\plugin\struct\meta
132e12ac22SMichael Grosse */
142e12ac22SMichael Grosseclass UserColumn extends Column {
152e12ac22SMichael Grosse
162e12ac22SMichael Grosse    /**
172e12ac22SMichael Grosse     * PageColumn constructor.
182e12ac22SMichael Grosse     *
192e12ac22SMichael Grosse     * @param int $sort
20*eb230f4fSMichael Grosse     * @param User $type
212e12ac22SMichael Grosse     * @param string $table
222e12ac22SMichael Grosse     */
232e12ac22SMichael Grosse    public function __construct($sort, User $type, $table='') {
242e12ac22SMichael Grosse        if($type->isMulti()) throw new StructException('UserColumns can not be multi value types!');
252e12ac22SMichael Grosse        parent::__construct($sort, $type, 0, true, $table);
262e12ac22SMichael Grosse        $this->getType()->setContext($this);
272e12ac22SMichael Grosse    }
282e12ac22SMichael Grosse
292e12ac22SMichael Grosse    public function getColref() {
302e12ac22SMichael Grosse        throw new StructException('Accessing the colref of a UserColumn makes no sense');
312e12ac22SMichael Grosse    }
322e12ac22SMichael Grosse
332e12ac22SMichael Grosse    /**
342e12ac22SMichael Grosse     * @param bool $enforceSingleColumn ignored
352e12ac22SMichael Grosse     * @return string
362e12ac22SMichael Grosse     */
372e12ac22SMichael Grosse    public function getColName($enforceSingleColumn = true) {
382e12ac22SMichael Grosse        return 'lasteditor';
392e12ac22SMichael Grosse    }
402e12ac22SMichael Grosse
412e12ac22SMichael Grosse    /**
422e12ac22SMichael Grosse     * @param bool $enforceSingleColumn ignored
432e12ac22SMichael Grosse     * @return string
442e12ac22SMichael Grosse     */
452e12ac22SMichael Grosse    public function getFullColName($enforceSingleColumn = true) {
462e12ac22SMichael Grosse        $col = 'titles.'.$this->getColName($enforceSingleColumn);
472e12ac22SMichael Grosse        return $col;
482e12ac22SMichael Grosse    }
492e12ac22SMichael Grosse
502e12ac22SMichael Grosse    /**
51*eb230f4fSMichael Grosse     * @return string always '%lasteditor%'
522e12ac22SMichael Grosse     */
532e12ac22SMichael Grosse    public function getLabel() {
542e12ac22SMichael Grosse        return '%lasteditor%';
552e12ac22SMichael Grosse    }
562e12ac22SMichael Grosse
572e12ac22SMichael Grosse    /**
58*eb230f4fSMichael Grosse     * @return string always '%lasteditor%'
592e12ac22SMichael Grosse     */
602e12ac22SMichael Grosse    public function getFullQualifiedLabel() {
612e12ac22SMichael Grosse        // There is only one pageid for each row because we JOIN on it
622e12ac22SMichael Grosse        // so we do not prefix it with the table
632e12ac22SMichael Grosse        return $this->getLabel();
642e12ac22SMichael Grosse    }
652e12ac22SMichael Grosse
662e12ac22SMichael Grosse    /**
672e12ac22SMichael Grosse     * @return string preconfigured label
682e12ac22SMichael Grosse     */
692e12ac22SMichael Grosse    public function getTranslatedLabel() {
702e12ac22SMichael Grosse        /** @var \helper_plugin_struct_config $helper */
712e12ac22SMichael Grosse        $helper = plugin_load('helper', 'struct_config');
722e12ac22SMichael Grosse        return $helper->getLang('userlabel');
732e12ac22SMichael Grosse    }
742e12ac22SMichael Grosse
752e12ac22SMichael Grosse}
76