13231ebaeSAnna Dabrowska<?php 23231ebaeSAnna Dabrowska 33231ebaeSAnna Dabrowskanamespace dokuwiki\plugin\structpublish\meta; 43231ebaeSAnna Dabrowska 5*6a791fefSAnna Dabrowskause dokuwiki\plugin\struct\meta\AccessTable; 63231ebaeSAnna Dabrowskause dokuwiki\plugin\struct\meta\AccessTableSerial; 73231ebaeSAnna Dabrowska 83231ebaeSAnna Dabrowska/** 93231ebaeSAnna Dabrowska * Class AccessTableStructpublish 103231ebaeSAnna Dabrowska * 11*6a791fefSAnna Dabrowska * Load and save publish data 123231ebaeSAnna Dabrowska * 133231ebaeSAnna Dabrowska * @package dokuwiki\plugin\struct\meta 143231ebaeSAnna Dabrowska */ 153231ebaeSAnna Dabrowskaclass AccessTableStructpublish extends AccessTableSerial 163231ebaeSAnna Dabrowska{ 17*6a791fefSAnna Dabrowska protected $published = 0; 18*6a791fefSAnna Dabrowska 193231ebaeSAnna Dabrowska public function __construct($table, $pid, $ts = 0, $rid = 0) 203231ebaeSAnna Dabrowska { 213231ebaeSAnna Dabrowska parent::__construct($table, $pid, $ts, $rid); 223231ebaeSAnna Dabrowska } 233231ebaeSAnna Dabrowska 243231ebaeSAnna Dabrowska /** 25*6a791fefSAnna Dabrowska * @param int $published 26*6a791fefSAnna Dabrowska * @return void 27*6a791fefSAnna Dabrowska */ 28*6a791fefSAnna Dabrowska public function setPublished($published) 29*6a791fefSAnna Dabrowska { 30*6a791fefSAnna Dabrowska $this->published = $published; 31*6a791fefSAnna Dabrowska } 32*6a791fefSAnna Dabrowska 33*6a791fefSAnna Dabrowska /** 343231ebaeSAnna Dabrowska * @inheritDoc 353231ebaeSAnna Dabrowska */ 363231ebaeSAnna Dabrowska protected function getSingleSql() 373231ebaeSAnna Dabrowska { 383231ebaeSAnna Dabrowska $cols = array_merge($this->getSingleNoninputCols(), $this->singleCols); 393231ebaeSAnna Dabrowska $cols = join(',', $cols); 403231ebaeSAnna Dabrowska $vals = array_merge($this->getSingleNoninputValues(), $this->singleValues); 413231ebaeSAnna Dabrowska $rid = $this->getRid() ?: "(SELECT (COALESCE(MAX(rid), 0 ) + 1) FROM $this->stable)"; 423231ebaeSAnna Dabrowska 433231ebaeSAnna Dabrowska return "REPLACE INTO $this->stable (rid, $cols) 443231ebaeSAnna Dabrowska VALUES ($rid," . trim(str_repeat('?,', count($vals)), ',') . ');'; 453231ebaeSAnna Dabrowska } 463231ebaeSAnna Dabrowska 473231ebaeSAnna Dabrowska /** 483231ebaeSAnna Dabrowska * @inheritDoc 493231ebaeSAnna Dabrowska */ 503231ebaeSAnna Dabrowska protected function getMultiSql() 513231ebaeSAnna Dabrowska { 523231ebaeSAnna Dabrowska return ''; 533231ebaeSAnna Dabrowska } 543231ebaeSAnna Dabrowska 553231ebaeSAnna Dabrowska /** 56*6a791fefSAnna Dabrowska * @inheritDoc 57*6a791fefSAnna Dabrowska */ 58*6a791fefSAnna Dabrowska protected function getSingleNoninputCols() 59*6a791fefSAnna Dabrowska { 60*6a791fefSAnna Dabrowska return ['pid', 'rev', 'latest', 'published']; 61*6a791fefSAnna Dabrowska } 62*6a791fefSAnna Dabrowska 63*6a791fefSAnna Dabrowska /** 64*6a791fefSAnna Dabrowska * @inheritDoc 65*6a791fefSAnna Dabrowska */ 66*6a791fefSAnna Dabrowska protected function getSingleNoninputValues() 67*6a791fefSAnna Dabrowska { 68*6a791fefSAnna Dabrowska return [$this->pid, AccessTable::DEFAULT_REV, AccessTable::DEFAULT_LATEST, $this->published]; 69*6a791fefSAnna Dabrowska } 70*6a791fefSAnna Dabrowska 71*6a791fefSAnna Dabrowska /** 723231ebaeSAnna Dabrowska * @return int|bool 733231ebaeSAnna Dabrowska */ 743231ebaeSAnna Dabrowska protected function getLastRevisionTimestamp() 753231ebaeSAnna Dabrowska { 763231ebaeSAnna Dabrowska $table = 'data_structpublish'; 773231ebaeSAnna Dabrowska $where = "WHERE pid = ?"; 783231ebaeSAnna Dabrowska $opts = [$this->pid]; 793231ebaeSAnna Dabrowska if ($this->ts) { 803231ebaeSAnna Dabrowska $where .= " AND REV > 0 AND rev <= ?"; 813231ebaeSAnna Dabrowska $opts[] = $this->ts; 823231ebaeSAnna Dabrowska } 833231ebaeSAnna Dabrowska 843231ebaeSAnna Dabrowska /** @noinspection SqlResolve */ 853231ebaeSAnna Dabrowska $sql = "SELECT rev FROM $table $where ORDER BY rev DESC LIMIT 1"; 863231ebaeSAnna Dabrowska $res = $this->sqlite->query($sql, $opts); 873231ebaeSAnna Dabrowska $ret = $this->sqlite->res2single($res); 883231ebaeSAnna Dabrowska $this->sqlite->res_close($res); 893231ebaeSAnna Dabrowska // make sure we don't cast empty result to 0 (serial data has rev = 0) 903231ebaeSAnna Dabrowska if ($ret !== false) $ret = (int)$ret; 913231ebaeSAnna Dabrowska return $ret; 923231ebaeSAnna Dabrowska } 933231ebaeSAnna Dabrowska} 94