1<?php 2 3namespace dokuwiki\plugin\struct\meta; 4 5use dokuwiki\plugin\struct\types\AbstractBaseType; 6 7/** 8 * Class PageColumn 9 * 10 * Just like a column, but does not reference one of the col* data columns but the pid column. 11 * 12 * @package dokuwiki\plugin\struct\meta 13 */ 14class PageColumn extends Column { 15 16 /** 17 * PageColumn constructor. 18 * 19 * @param int $sort 20 * @param AbstractBaseType $type This should be Page or Title 21 * @param string $table 22 */ 23 public function __construct($sort, AbstractBaseType $type, $table='') { 24 if($type->isMulti()) throw new StructException('PageColumns can not be multi value types!'); 25 parent::__construct($sort, $type, 0, true, $table); 26 } 27 28 public function getColref() { 29 throw new StructException('Accessing the colref of a PageColumn makes no sense'); 30 } 31 32 /** 33 * @param bool $forceSingleColumn ignored 34 * @return string 35 */ 36 public function getColName($forceSingleColumn = true) { 37 return 'pid'; 38 } 39 40 /** 41 * @param bool $forceSingleColumn ignored 42 * @return string 43 */ 44 public function getFullColName($forceSingleColumn = true) { 45 $col = $this->getColName($forceSingleColumn); 46 if($this->table) $col = 'data_'.$this->table.'.'.$col; 47 return $col; 48 } 49 50 /** 51 * @return string always '%pageid%' 52 */ 53 public function getLabel() { 54 $conf = $this->getType()->getConfig(); 55 if($conf['usetitles']) { 56 return '%title%'; 57 } else { 58 return '%pageid%'; 59 } 60 } 61 62 /** 63 * @return string always '%pageid%' 64 */ 65 public function getFullQualifiedLabel() { 66 // There is only one pageid for each row because we JOIN on it 67 // so we do not prefix it with the table 68 return $this->getLabel(); 69 } 70 71} 72