1c3437056SNickeau<?php 2c3437056SNickeau 3c3437056SNickeau 4c3437056SNickeaunamespace ComboStrap; 5c3437056SNickeau 6c3437056SNickeau 7*d899a2a6Sgerardnicouse PDO; 8*d899a2a6Sgerardnico 9c3437056SNickeauclass SqliteResult 10c3437056SNickeau{ 11c3437056SNickeau private $res; 12c3437056SNickeau /** 13c3437056SNickeau * @var SqliteRequest 14c3437056SNickeau */ 15c3437056SNickeau private $sqlite; 16c3437056SNickeau /** 17c3437056SNickeau * @var \helper_plugin_sqlite 18c3437056SNickeau */ 19c3437056SNickeau private $sqlitePlugin; 20c3437056SNickeau 21c3437056SNickeau /** 22c3437056SNickeau * SqliteResult constructor. 23c3437056SNickeau */ 24c3437056SNickeau public function __construct(SqliteRequest $sqlite, $res) 25c3437056SNickeau { 26c3437056SNickeau $this->sqlite = $sqlite; 27c3437056SNickeau $this->res = $res; 28c3437056SNickeau $this->sqlitePlugin = $this->sqlite->getSqliteConnection()->getSqlitePlugin(); 29c3437056SNickeau 30c3437056SNickeau } 31c3437056SNickeau 32c3437056SNickeau public function getRows(): array 33c3437056SNickeau { 34*d899a2a6Sgerardnico 35*d899a2a6Sgerardnico $adapter = $this->sqlitePlugin->getAdapter(); 36*d899a2a6Sgerardnico if (!Sqlite::isJuneVersion($adapter)) { 37c3437056SNickeau return $this->sqlitePlugin->res2arr($this->res); 38c3437056SNickeau } 39c3437056SNickeau 40*d899a2a6Sgerardnico /** 41*d899a2a6Sgerardnico * note: 42*d899a2a6Sgerardnico * * fetch mode may be also {@link PDO::FETCH_NUM} 43*d899a2a6Sgerardnico * * {@link helper_plugin_sqlite::res2arr()} but without the fucking cache ! 44*d899a2a6Sgerardnico */ 45*d899a2a6Sgerardnico return $this->res->fetchAll(PDO::FETCH_ASSOC); 46*d899a2a6Sgerardnico 47*d899a2a6Sgerardnico 48*d899a2a6Sgerardnico } 49*d899a2a6Sgerardnico 50c3437056SNickeau public function close(): SqliteResult 51c3437056SNickeau { 5204fd306cSNickeau /** 53*d899a2a6Sgerardnico * $this->res may be a boolean {@link } 54*d899a2a6Sgerardnico * is a number in CI 5504fd306cSNickeau * 5604fd306cSNickeau * We get: 5704fd306cSNickeau * Error: Call to a member function closeCursor() on int 5804fd306cSNickeau * /home/runner/work/combo/combo/lib/plugins/sqlite/classes/adapter_pdosqlite.php:125 5904fd306cSNickeau */ 6004fd306cSNickeau if ($this->res instanceof \PDOStatement) { 61c3437056SNickeau $this->sqlitePlugin->res_close($this->res); 6204fd306cSNickeau } 63c3437056SNickeau $this->res = null; 64c3437056SNickeau return $this; 65c3437056SNickeau } 66c3437056SNickeau 67c3437056SNickeau public function getInsertId(): string 68c3437056SNickeau { 69*d899a2a6Sgerardnico $adapter = $this->sqlitePlugin->getAdapter(); 70*d899a2a6Sgerardnico if (!Sqlite::isJuneVersion($adapter)) { 71*d899a2a6Sgerardnico /** @noinspection PhpUndefinedMethodInspection */ 72*d899a2a6Sgerardnico return $adapter->getDb()->lastInsertId(); 73*d899a2a6Sgerardnico } else { 74*d899a2a6Sgerardnico return $adapter->getPdo()->lastInsertId(); 75*d899a2a6Sgerardnico } 76*d899a2a6Sgerardnico 77c3437056SNickeau } 78c3437056SNickeau 79c3437056SNickeau public function getChangeCount() 80c3437056SNickeau { 81c3437056SNickeau return $this->sqlitePlugin->countChanges($this->res); 82c3437056SNickeau } 83c3437056SNickeau 84c3437056SNickeau public function getFirstCellValue() 85c3437056SNickeau { 86c3437056SNickeau return $this->sqlitePlugin->res2single($this->res); 87c3437056SNickeau } 88c3437056SNickeau 89c3437056SNickeau public function getFirstCellValueAsInt(): int 90c3437056SNickeau { 91c3437056SNickeau return intval($this->getFirstCellValue()); 92c3437056SNickeau } 93c3437056SNickeau 94c3437056SNickeau public function getFirstRow() 95c3437056SNickeau { 96c3437056SNickeau $rows = $this->getRows(); 97c3437056SNickeau if (sizeof($rows) >= 1) { 98c3437056SNickeau return $rows[0]; 99c3437056SNickeau } 100c3437056SNickeau return []; 101c3437056SNickeau } 102c3437056SNickeau 103c3437056SNickeau 104c3437056SNickeau} 105