Subversion Repositories oidplus

Rev

Rev 1226 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1219 daniel-mar 1
<?php
2
 
3
/*
4
 * OIDplus 2.0
5
 * Copyright 2019 - 2023 Daniel Marschall, ViaThinkSoft
6
 *
7
 * Licensed under the Apache License, Version 2.0 (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
10
 *
11
 *     http://www.apache.org/licenses/LICENSE-2.0
12
 *
13
 * Unless required by applicable law or agreed to in writing, software
14
 * distributed under the License is distributed on an "AS IS" BASIS,
15
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
 * See the License for the specific language governing permissions and
17
 * limitations under the License.
18
 */
19
 
20
namespace ViaThinkSoft\OIDplus;
21
 
22
// phpcs:disable PSR1.Files.SideEffects
23
\defined('INSIDE_OIDPLUS') or die;
24
// phpcs:enable PSR1.Files.SideEffects
25
 
26
class OIDplusQueryResultADO extends OIDplusQueryResult {
27
        /**
28
         * @var bool
29
         */
30
        protected $no_resultset;
31
 
32
        /**
33
         * @var mixed
34
         */
35
        protected $res;
36
 
37
        /**
38
         * @param mixed $res
39
         */
40
        public function __construct($res) {
1226 daniel-mar 41
                $this->no_resultset = is_null($res);
1219 daniel-mar 42
 
43
                if (!$this->no_resultset) {
44
                        $this->res = $res;
45
                }
46
        }
47
 
48
        /**
49
         *
50
         */
51
        public function __destruct() {
1226 daniel-mar 52
                if (!is_null($this->res) && ($this->res->State != 0)) $this->res->Close();
1219 daniel-mar 53
        }
54
 
55
        /**
56
         * @return bool
57
         */
58
        public function containsResultSet(): bool {
59
                return !$this->no_resultset;
60
        }
61
 
62
        /**
63
         * @return int
64
         * @throws OIDplusException
65
         */
66
        protected function do_num_rows(): int {
67
                return $this->res->RecordCount;
68
        }
69
 
70
        /**
71
         * @return array|null
72
         */
73
        protected function do_fetch_array()/*: ?array*/ {
74
                if ($this->res->EOF) return null;
75
 
76
                $ary = array();
77
                for ($i=0; $i<$this->res->Fields->Count; $i++) {
1350 daniel-mar 78
                        $val = $this->res->Fields->Item($i)->Value;
79
                        if (is_object($val)) $val = "$val"; // DATETIME values become a "Resource" object for some reason. Transfer to string!
80
                        $ary[$this->res->Fields->Item($i)->Name] = $val;
1219 daniel-mar 81
                }
82
                $this->res->MoveNext();
83
                return $ary;
84
        }
85
 
86
}