Subversion Repositories oidplus

Rev

Rev 1219 | Blame | Compare with Previous | Last modification | View Log | RSS feed

  1. <?php
  2.  
  3. /*
  4.  * OIDplus 2.0
  5.  * Copyright 2019 - 2021 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. use ViaThinkSoft\OIDplus\OIDplusDatabaseConnection;
  21.  
  22. /**
  23.  * This function will be called by OIDplusDatabaseConnection.class.php at method afterConnect().
  24.  * @param OIDplusDatabaseConnection $db is the OIDplusDatabaseConnection class
  25.  * @return int new version set
  26.  * @throws \ViaThinkSoft\OIDplus\OIDplusException
  27.  */
  28. function oidplus_dbupdate_204(OIDplusDatabaseConnection $db): int {
  29.         if ($db->transaction_supported()) $db->transaction_begin();
  30.         try {
  31.                 if ($db->getSlang()->id() == 'mssql') {
  32.                         $db->query("alter table ###ra alter column [ra_name] [varchar](100) NULL;");
  33.                         $db->query("alter table ###ra alter column [personal_name] [varchar](100) NULL;");
  34.                         $db->query("alter table ###ra alter column [organization] [varchar](100) NULL;");
  35.                         $db->query("alter table ###ra alter column [office] [varchar](100) NULL;");
  36.                         $db->query("alter table ###ra alter column [street] [varchar](100) NULL;");
  37.                         $db->query("alter table ###ra alter column [zip_town] [varchar](100) NULL;");
  38.                         $db->query("alter table ###ra alter column [country] [varchar](100) NULL;");
  39.                         $db->query("alter table ###ra alter column [phone] [varchar](100) NULL;");
  40.                         $db->query("alter table ###ra alter column [mobile] [varchar](100) NULL;");
  41.                         $db->query("alter table ###ra alter column [fax] [varchar](100) NULL;");
  42.                         $db->query("alter table ###ra alter column [salt] [varchar](100) NULL;");
  43.                         $db->query("alter table ###ra alter column [authkey] [varchar](100) NULL;");
  44.  
  45.                         $db->query("alter table ###objects alter column [title] [varchar](255) NULL;");
  46.                         $db->query("alter table ###objects alter column [description] [text] NULL;");
  47.                 }
  48.                 else if ($db->getSlang()->id() == 'mysql') {
  49.                         $db->query("alter table ###ra modify ra_name varchar(100) NULL;");
  50.                         $db->query("alter table ###ra modify personal_name varchar(100) NULL;");
  51.                         $db->query("alter table ###ra modify organization varchar(100) NULL;");
  52.                         $db->query("alter table ###ra modify office varchar(100) NULL;");
  53.                         $db->query("alter table ###ra modify street varchar(100) NULL;");
  54.                         $db->query("alter table ###ra modify zip_town varchar(100) NULL;");
  55.                         $db->query("alter table ###ra modify country varchar(100) NULL;");
  56.                         $db->query("alter table ###ra modify phone varchar(100) NULL;");
  57.                         $db->query("alter table ###ra modify mobile varchar(100) NULL;");
  58.                         $db->query("alter table ###ra modify fax varchar(100) NULL;");
  59.                         $db->query("alter table ###ra modify salt varchar(100) NULL;");
  60.                         $db->query("alter table ###ra modify authkey varchar(100) NULL;");
  61.  
  62.                         $db->query("alter table ###objects modify title varchar(255) NULL;");
  63.                         $db->query("alter table ###objects modify description text NULL;");
  64.                 }
  65.                 else if ($db->getSlang()->id() == 'pgsql') {
  66.                         $db->query("alter table ###ra alter column ra_name DROP NOT NULL");
  67.                         $db->query("alter table ###ra alter column personal_name DROP NOT NULL");
  68.                         $db->query("alter table ###ra alter column organization DROP NOT NULL");
  69.                         $db->query("alter table ###ra alter column office DROP NOT NULL");
  70.                         $db->query("alter table ###ra alter column street DROP NOT NULL");
  71.                         $db->query("alter table ###ra alter column zip_town DROP NOT NULL");
  72.                         $db->query("alter table ###ra alter column country DROP NOT NULL");
  73.                         $db->query("alter table ###ra alter column phone DROP NOT NULL");
  74.                         $db->query("alter table ###ra alter column mobile DROP NOT NULL");
  75.                         $db->query("alter table ###ra alter column fax DROP NOT NULL");
  76.                         $db->query("alter table ###ra alter column salt DROP NOT NULL");
  77.                         $db->query("alter table ###ra alter column authkey DROP NOT NULL");
  78.  
  79.                         $db->query("alter table ###objects alter column title DROP NOT NULL");
  80.                         $db->query("alter table ###objects alter column description DROP NOT NULL");
  81.                 }
  82.                 else if ($db->getSlang()->id() == 'sqlite') {
  83.                         $db->query("CREATE TABLE `###ra2` (".
  84.                                    "  `ra_id` INTEGER PRIMARY KEY AUTOINCREMENT,".
  85.                                    "  `email` TEXT NOT NULL UNIQUE,".
  86.                                    "  `ra_name` TEXT NULL,".
  87.                                    "  `personal_name` TEXT NULL,".
  88.                                    "  `organization` TEXT NULL,".
  89.                                    "  `office` TEXT NULL,".
  90.                                    "  `street` TEXT NULL,".
  91.                                    "  `zip_town` TEXT NULL,".
  92.                                    "  `country` TEXT NULL,".
  93.                                    "  `phone` TEXT NULL,".
  94.                                    "  `mobile` TEXT NULL,".
  95.                                    "  `fax` TEXT NULL,".
  96.                                    "  `privacy` INTEGER NOT NULL DEFAULT 0,".
  97.                                    "  `salt` TEXT NULL,".
  98.                                    "  `authkey` TEXT NULL,".
  99.                                    "  `registered` TEXT,".
  100.                                    "  `updated` TEXT,".
  101.                                    "  `last_login` datetime".
  102.                                    ");");
  103.                         $db->query("INSERT INTO ###ra2 SELECT * FROM ###ra;");
  104.                         $db->query("DROP TABLE ###ra;");
  105.                         $db->query("ALTER TABLE ###ra2 RENAME TO ###ra;");
  106.  
  107.                         $db->query("CREATE TABLE `###objects2` (".
  108.                                    "  `id` TEXT NOT NULL,".
  109.                                    "  `parent` TEXT DEFAULT NULL REFERENCES `objects`(`id`),".
  110.                                    "  `title` TEXT NULL,".
  111.                                    "  `description` TEXT NULL,".
  112.                                    "  `ra_email` TEXT NULL REFERENCES `###ra`(`email`),".
  113.                                    "  `confidential` boolean NOT NULL,".
  114.                                    "  `created` TEXT,".
  115.                                    "  `updated` TEXT,".
  116.                                    "  `comment` TEXT NULL,".
  117.                                    "  PRIMARY KEY (`id`)".
  118.                                    ");");
  119.                         $db->query("INSERT INTO ###objects2 SELECT * FROM ###objects;");
  120.                         $db->query("DROP TABLE ###objects;");
  121.                         $db->query("ALTER TABLE ###objects2 RENAME TO ###objects;");
  122.                 }
  123.  
  124.                 $version = 205;
  125.                 $db->query("UPDATE ###config SET value = ? WHERE name = 'database_version'", array("$version"));
  126.  
  127.                 if ($db->transaction_supported()) $db->transaction_commit();
  128.         } catch (\Exception $e) {
  129.                 if ($db->transaction_supported()) $db->transaction_rollback();
  130.                 throw new $e;
  131.         }
  132.  
  133.         return $version;
  134. }
  135.