Subversion Repositories oidplus

Rev

Rev 830 | Rev 1130 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 830 Rev 1050
1
<?php
1
<?php
2
 
2
 
3
/*
3
/*
4
 * OIDplus 2.0
4
 * OIDplus 2.0
5
 * Copyright 2019 - 2021 Daniel Marschall, ViaThinkSoft
5
 * Copyright 2019 - 2021 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
use ViaThinkSoft\OIDplus\OIDplusDatabaseConnection;
-
 
21
 
20
/**
22
/**
21
 * This function will be called by OIDplusDatabaseConnection.class.php at method afterConnect().
23
 * This function will be called by OIDplusDatabaseConnection.class.php at method afterConnect().
22
 * @param OIDplusDatabaseConnection $db is the OIDplusDatabaseConnection class
24
 * @param OIDplusDatabaseConnection $db is the OIDplusDatabaseConnection class
23
 * @return int new version set
25
 * @return int new version set
24
 * @throws OIDplusException
26
 * @throws \ViaThinkSoft\OIDplus\OIDplusException
25
 */
27
 */
26
function oidplus_dbupdate_202(OIDplusDatabaseConnection $db) {
28
function oidplus_dbupdate_202(OIDplusDatabaseConnection $db) {
27
        if ($db->transaction_supported()) $db->transaction_begin();
29
        if ($db->transaction_supported()) $db->transaction_begin();
28
 
30
 
29
        if ($db->getSlang()->id() == 'mssql') {
31
        if ($db->getSlang()->id() == 'mssql') {
30
                $db->query("CREATE FUNCTION [dbo].[getOidArc] (@strList varchar(512), @maxArcLen int, @occurence int)
32
                $db->query("CREATE FUNCTION [dbo].[getOidArc] (@strList varchar(512), @maxArcLen int, @occurence int)
31
                RETURNS varchar(512) AS
33
                RETURNS varchar(512) AS
32
                BEGIN
34
                BEGIN
33
                        DECLARE @intPos int
35
                        DECLARE @intPos int
34
 
36
 
35
                        DECLARE @cnt int
37
                        DECLARE @cnt int
36
                        SET @cnt = 0
38
                        SET @cnt = 0
37
 
39
 
38
                        if SUBSTRING(@strList, 1, 4) <> 'oid:'
40
                        if SUBSTRING(@strList, 1, 4) <> 'oid:'
39
                        begin
41
                        begin
40
                                RETURN ''
42
                                RETURN ''
41
                        end
43
                        end
42
 
44
 
43
                        SET @strList = RIGHT(@strList, LEN(@strList)-4)
45
                        SET @strList = RIGHT(@strList, LEN(@strList)-4)
44
 
46
 
45
                        WHILE CHARINDEX('.',@strList) > 0
47
                        WHILE CHARINDEX('.',@strList) > 0
46
                        BEGIN
48
                        BEGIN
47
                                SET @intPos=CHARINDEX('.',@strList)
49
                                SET @intPos=CHARINDEX('.',@strList)
48
                                SET @cnt = @cnt + 1
50
                                SET @cnt = @cnt + 1
49
                                IF @cnt = @occurence
51
                                IF @cnt = @occurence
50
                                BEGIN
52
                                BEGIN
51
                                        SET @strList = LEFT(@strList,@intPos-1)
53
                                        SET @strList = LEFT(@strList,@intPos-1)
52
                                        RETURN REPLICATE('0', @maxArcLen-len(@strList)) + @strList
54
                                        RETURN REPLICATE('0', @maxArcLen-len(@strList)) + @strList
53
                                END
55
                                END
54
                                SET @strList = RIGHT(@strList, LEN(@strList)-@intPos)
56
                                SET @strList = RIGHT(@strList, LEN(@strList)-@intPos)
55
                        END
57
                        END
56
                        IF LEN(@strList) > 0
58
                        IF LEN(@strList) > 0
57
                        BEGIN
59
                        BEGIN
58
                                SET @cnt = @cnt + 1
60
                                SET @cnt = @cnt + 1
59
                                IF @cnt = @occurence
61
                                IF @cnt = @occurence
60
                                BEGIN
62
                                BEGIN
61
                                        RETURN REPLICATE('0', @maxArcLen-len(@strList)) + @strList
63
                                        RETURN REPLICATE('0', @maxArcLen-len(@strList)) + @strList
62
                                END
64
                                END
63
                        END
65
                        END
64
 
66
 
65
                        RETURN REPLICATE('0', @maxArcLen)
67
                        RETURN REPLICATE('0', @maxArcLen)
66
                END");
68
                END");
67
        }
69
        }
68
 
70
 
69
        $version = 203;
71
        $version = 203;
70
        $db->query("UPDATE ###config SET value = ? WHERE name = 'database_version'", array($version));
72
        $db->query("UPDATE ###config SET value = ? WHERE name = 'database_version'", array($version));
71
 
73
 
72
        if ($db->transaction_supported()) $db->transaction_commit();
74
        if ($db->transaction_supported()) $db->transaction_commit();
73
 
75
 
74
        return $version;
76
        return $version;
75
}
77
}
76
 
78