xref: /plugin/combo/ComboStrap/SqliteResult.php (revision d899a2a62926ce6e7f78d85d882eb464caef0a95)
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