1*3231ebaeSAnna Dabrowska<?php 2*3231ebaeSAnna Dabrowska 3*3231ebaeSAnna Dabrowskanamespace dokuwiki\plugin\structpublish\meta; 4*3231ebaeSAnna Dabrowska 5*3231ebaeSAnna Dabrowskause dokuwiki\plugin\struct\meta\AccessTableSerial; 6*3231ebaeSAnna Dabrowska 7*3231ebaeSAnna Dabrowska/** 8*3231ebaeSAnna Dabrowska * Class AccessTableStructpublish 9*3231ebaeSAnna Dabrowska * 10*3231ebaeSAnna Dabrowska * Load and save serial data 11*3231ebaeSAnna Dabrowska * 12*3231ebaeSAnna Dabrowska * @package dokuwiki\plugin\struct\meta 13*3231ebaeSAnna Dabrowska */ 14*3231ebaeSAnna Dabrowskaclass AccessTableStructpublish extends AccessTableSerial 15*3231ebaeSAnna Dabrowska{ 16*3231ebaeSAnna Dabrowska public function __construct($table, $pid, $ts = 0, $rid = 0) 17*3231ebaeSAnna Dabrowska { 18*3231ebaeSAnna Dabrowska parent::__construct($table, $pid, $ts, $rid); 19*3231ebaeSAnna Dabrowska } 20*3231ebaeSAnna Dabrowska 21*3231ebaeSAnna Dabrowska /** 22*3231ebaeSAnna Dabrowska * @inheritDoc 23*3231ebaeSAnna Dabrowska */ 24*3231ebaeSAnna Dabrowska protected function getSingleSql() 25*3231ebaeSAnna Dabrowska { 26*3231ebaeSAnna Dabrowska $cols = array_merge($this->getSingleNoninputCols(), $this->singleCols); 27*3231ebaeSAnna Dabrowska $cols = join(',', $cols); 28*3231ebaeSAnna Dabrowska $vals = array_merge($this->getSingleNoninputValues(), $this->singleValues); 29*3231ebaeSAnna Dabrowska $rid = $this->getRid() ?: "(SELECT (COALESCE(MAX(rid), 0 ) + 1) FROM $this->stable)"; 30*3231ebaeSAnna Dabrowska 31*3231ebaeSAnna Dabrowska return "REPLACE INTO $this->stable (rid, $cols) 32*3231ebaeSAnna Dabrowska VALUES ($rid," . trim(str_repeat('?,', count($vals)), ',') . ');'; 33*3231ebaeSAnna Dabrowska } 34*3231ebaeSAnna Dabrowska 35*3231ebaeSAnna Dabrowska /** 36*3231ebaeSAnna Dabrowska * @inheritDoc 37*3231ebaeSAnna Dabrowska */ 38*3231ebaeSAnna Dabrowska protected function getMultiSql() 39*3231ebaeSAnna Dabrowska { 40*3231ebaeSAnna Dabrowska return ''; 41*3231ebaeSAnna Dabrowska } 42*3231ebaeSAnna Dabrowska 43*3231ebaeSAnna Dabrowska /** 44*3231ebaeSAnna Dabrowska * @return int|bool 45*3231ebaeSAnna Dabrowska */ 46*3231ebaeSAnna Dabrowska protected function getLastRevisionTimestamp() 47*3231ebaeSAnna Dabrowska { 48*3231ebaeSAnna Dabrowska $table = 'data_structpublish'; 49*3231ebaeSAnna Dabrowska $where = "WHERE pid = ?"; 50*3231ebaeSAnna Dabrowska $opts = [$this->pid]; 51*3231ebaeSAnna Dabrowska if ($this->ts) { 52*3231ebaeSAnna Dabrowska $where .= " AND REV > 0 AND rev <= ?"; 53*3231ebaeSAnna Dabrowska $opts[] = $this->ts; 54*3231ebaeSAnna Dabrowska } 55*3231ebaeSAnna Dabrowska 56*3231ebaeSAnna Dabrowska /** @noinspection SqlResolve */ 57*3231ebaeSAnna Dabrowska $sql = "SELECT rev FROM $table $where ORDER BY rev DESC LIMIT 1"; 58*3231ebaeSAnna Dabrowska $res = $this->sqlite->query($sql, $opts); 59*3231ebaeSAnna Dabrowska $ret = $this->sqlite->res2single($res); 60*3231ebaeSAnna Dabrowska $this->sqlite->res_close($res); 61*3231ebaeSAnna Dabrowska // make sure we don't cast empty result to 0 (serial data has rev = 0) 62*3231ebaeSAnna Dabrowska if ($ret !== false) $ret = (int)$ret; 63*3231ebaeSAnna Dabrowska return $ret; 64*3231ebaeSAnna Dabrowska } 65*3231ebaeSAnna Dabrowska} 66