Subversion Repositories oidplus

Rev

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