Rev 1317 | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1317 | Rev 1471 | ||
---|---|---|---|
1 | <?php |
1 | <?php |
2 | 2 | ||
3 | /* |
3 | /* |
4 | * OIDplus 2.0 |
4 | * OIDplus 2.0 |
5 | * Copyright 2019 - 2023 Daniel Marschall, ViaThinkSoft |
5 | * Copyright 2019 - 2023 Daniel Marschall, ViaThinkSoft |
6 | * |
6 | * |
7 | * Licensed under the Apache License, Version 2.0 (the "License"); |
7 | * Licensed under the Apache License, Version 2.0 (the "License"); |
8 | * you may not use this file except in compliance with the License. |
8 | * you may not use this file except in compliance with the License. |
9 | * You may obtain a copy of the License at |
9 | * You may obtain a copy of the License at |
10 | * |
10 | * |
11 | * http://www.apache.org/licenses/LICENSE-2.0 |
11 | * http://www.apache.org/licenses/LICENSE-2.0 |
12 | * |
12 | * |
13 | * Unless required by applicable law or agreed to in writing, software |
13 | * Unless required by applicable law or agreed to in writing, software |
14 | * distributed under the License is distributed on an "AS IS" BASIS, |
14 | * distributed under the License is distributed on an "AS IS" BASIS, |
15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
16 | * See the License for the specific language governing permissions and |
16 | * See the License for the specific language governing permissions and |
17 | * limitations under the License. |
17 | * limitations under the License. |
18 | */ |
18 | */ |
19 | 19 | ||
20 | namespace ViaThinkSoft\OIDplus; |
20 | namespace ViaThinkSoft\OIDplus; |
21 | 21 | ||
22 | // phpcs:disable PSR1.Files.SideEffects |
22 | // phpcs:disable PSR1.Files.SideEffects |
23 | \defined('INSIDE_OIDPLUS') or die; |
23 | \defined('INSIDE_OIDPLUS') or die; |
24 | // phpcs:enable PSR1.Files.SideEffects |
24 | // phpcs:enable PSR1.Files.SideEffects |
25 | 25 | ||
26 | class OIDplusQueryResultOci extends OIDplusQueryResult { |
26 | class OIDplusQueryResultOci extends OIDplusQueryResult { |
27 | 27 | ||
28 | /** |
28 | /** |
29 | * @var bool |
29 | * @var bool |
30 | */ |
30 | */ |
31 | protected $no_resultset; |
31 | protected $no_resultset; |
32 | 32 | ||
33 | /** |
33 | /** |
34 | * @var mixed |
34 | * @var mixed |
35 | */ |
35 | */ |
36 | protected $res; |
36 | protected $res; |
37 | 37 | ||
38 | /** |
38 | /** |
39 | * @param mixed $res |
39 | * @param mixed $res |
40 | */ |
40 | */ |
41 | public function __construct($res) { |
41 | public function __construct($res) { |
42 | $this->no_resultset = is_bool($res); |
42 | $this->no_resultset = is_bool($res); |
43 | 43 | ||
44 | if (!$this->no_resultset) { |
44 | if (!$this->no_resultset) { |
45 | $this->res = $res; |
45 | $this->res = $res; |
46 | } |
46 | } |
47 | } |
47 | } |
48 | 48 | ||
49 | /** |
49 | /** |
50 | * |
50 | * |
51 | */ |
51 | */ |
52 | public function __destruct() { |
52 | public function __destruct() { |
53 | if ($this->res) { |
53 | if ($this->res) { |
54 | oci_free_statement($this->res); |
54 | oci_free_statement($this->res); |
55 | $this->res = null; |
55 | $this->res = null; |
56 | } |
56 | } |
57 | } |
57 | } |
58 | 58 | ||
59 | /** |
59 | /** |
60 | * @return bool |
60 | * @return bool |
61 | */ |
61 | */ |
62 | public function containsResultSet(): bool { |
62 | public function containsResultSet(): bool { |
63 | return !$this->no_resultset; |
63 | return !$this->no_resultset; |
64 | } |
64 | } |
65 | 65 | ||
66 | /** |
66 | /** |
67 | * @return void |
67 | * @return void |
68 | */ |
68 | */ |
69 | public function prefetchAll() { |
69 | public function prefetchAll() { |
70 | if (!is_null($this->prefetchedArray)) return; |
70 | if (!is_null($this->prefetchedArray)) return; |
71 | $this->prefetchedArray = array(); |
71 | $this->prefetchedArray = array(); |
72 | oci_fetch_all($this->res, $this->prefetchedArray, 0, -1, OCI_FETCHSTATEMENT_BY_ROW); |
72 | oci_fetch_all($this->res, $this->prefetchedArray, 0, -1, OCI_FETCHSTATEMENT_BY_ROW); |
73 | foreach ($this->prefetchedArray as &$row) { /** @phpstan-ignore-line */ |
73 | foreach ($this->prefetchedArray as &$row) { /** @phpstan-ignore-line */ |
74 | $this->fixFields($row); |
74 | $this->fixFields($row); |
75 | } |
75 | } |
76 | unset($row); /** @phpstan-ignore-line */ |
76 | unset($row); /** @phpstan-ignore-line */ |
77 | } |
77 | } |
78 | 78 | ||
79 | /** |
79 | /** |
80 | * @return int |
80 | * @return int |
81 | */ |
81 | */ |
82 | protected function do_num_rows(): int { |
82 | protected function do_num_rows(): int { |
83 | // This function does not return number of rows selected! For SELECT statements this function will return the number of rows, that were fetched to the buffer with oci_fetch*() functions. |
83 | // This function does not return number of rows selected! For SELECT statements this function will return the number of rows, that were fetched to the buffer with oci_fetch*() functions. |
84 | //return oci_num_rows($this->res); |
84 | //return oci_num_rows($this->res); |
85 | 85 | ||
86 | if (is_null($this->prefetchedArray)) { |
86 | if (is_null($this->prefetchedArray)) { |
87 | $this->prefetchAll(); |
87 | $this->prefetchAll(); |
88 | } |
88 | } |
89 | 89 | ||
90 | return count($this->prefetchedArray) + $this->countAlreadyFetched; |
90 | return count($this->prefetchedArray); |
91 | } |
91 | } |
92 | 92 | ||
93 | /** |
93 | /** |
94 | * @return array|null |
94 | * @return array|null |
95 | */ |
95 | */ |
96 | protected function do_fetch_array()/*: ?array*/ { |
96 | protected function do_fetch_array()/*: ?array*/ { |
97 | $ret = oci_fetch_array($this->res); |
97 | $ret = oci_fetch_array($this->res); |
98 | if ($ret === false) $ret = null; |
98 | if ($ret === false) $ret = null; |
99 | return $ret; |
99 | return $ret; |
100 | } |
100 | } |
101 | 101 | ||
102 | /** |
102 | /** |
103 | * @return object|null |
103 | * @return object|null |
104 | */ |
104 | */ |
105 | protected function do_fetch_object()/*: ?object*/ { |
105 | protected function do_fetch_object()/*: ?object*/ { |
106 | $ret = oci_fetch_object($this->res); |
106 | $ret = oci_fetch_object($this->res); |
107 | if ($ret === false) $ret = null; |
107 | if ($ret === false) $ret = null; |
108 | return $ret; |
108 | return $ret; |
109 | } |
109 | } |
110 | } |
110 | } |
111 | 111 |