15fe1add5SGreg Roach<?php 25fe1add5SGreg Roach/** 35fe1add5SGreg Roach * webtrees: online genealogy 45fe1add5SGreg Roach * Copyright (C) 2018 webtrees development team 55fe1add5SGreg Roach * This program is free software: you can redistribute it and/or modify 65fe1add5SGreg Roach * it under the terms of the GNU General Public License as published by 75fe1add5SGreg Roach * the Free Software Foundation, either version 3 of the License, or 85fe1add5SGreg Roach * (at your option) any later version. 95fe1add5SGreg Roach * This program is distributed in the hope that it will be useful, 105fe1add5SGreg Roach * but WITHOUT ANY WARRANTY; without even the implied warranty of 115fe1add5SGreg Roach * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 125fe1add5SGreg Roach * GNU General Public License for more details. 135fe1add5SGreg Roach * You should have received a copy of the GNU General Public License 145fe1add5SGreg Roach * along with this program. If not, see <http://www.gnu.org/licenses/>. 155fe1add5SGreg Roach */ 16e7f56f2aSGreg Roachdeclare(strict_types=1); 17e7f56f2aSGreg Roach 185fe1add5SGreg Roachnamespace Fisharebest\Webtrees\Schema; 195fe1add5SGreg Roach 205fe1add5SGreg Roachuse Fisharebest\Webtrees\Database; 215fe1add5SGreg Roachuse PDOException; 225fe1add5SGreg Roach 235fe1add5SGreg Roach/** 245fe1add5SGreg Roach * Upgrade the database schema from version 38 to version 39. 255fe1add5SGreg Roach */ 26c1010edaSGreg Roachclass Migration38 implements MigrationInterface 27c1010edaSGreg Roach{ 285fe1add5SGreg Roach /** 295fe1add5SGreg Roach * Upgrade to to the next version 3019d91378SGreg Roach * 3119d91378SGreg Roach * @return void 325fe1add5SGreg Roach */ 33*362be83aSGreg Roach public function upgrade(): void 34c1010edaSGreg Roach { 355fe1add5SGreg Roach // The geographic data is now handled by the core code. 365fe1add5SGreg Roach // The following migrations were once part of the old googlemap module. 375fe1add5SGreg Roach try { 385fe1add5SGreg Roach // Create the tables, as per PhpGedView 4.2.1 395fe1add5SGreg Roach Database::exec( 405fe1add5SGreg Roach "CREATE TABLE IF NOT EXISTS `##placelocation` (" . 415fe1add5SGreg Roach " pl_id INTEGER NOT NULL," . 425fe1add5SGreg Roach " pl_parent_id INTEGER NULL," . 435fe1add5SGreg Roach " pl_level INTEGER NULL," . 445fe1add5SGreg Roach " pl_place VARCHAR(255) NULL," . 455fe1add5SGreg Roach " pl_long VARCHAR(30) NULL," . 465fe1add5SGreg Roach " pl_lati VARCHAR(30) NULL," . 475fe1add5SGreg Roach " pl_zoom INTEGER NULL," . 485fe1add5SGreg Roach " pl_icon VARCHAR(255) NULL," . 495fe1add5SGreg Roach " PRIMARY KEY (pl_id)," . 505fe1add5SGreg Roach " KEY ix1 (pl_level)," . 515fe1add5SGreg Roach " KEY ix2 (pl_long)," . 525fe1add5SGreg Roach " KEY ix3 (pl_lati)," . 535fe1add5SGreg Roach " KEY ix4 (pl_place)," . 545fe1add5SGreg Roach " KEY ix5 (pl_parent_id)" . 555fe1add5SGreg Roach ") COLLATE utf8_unicode_ci ENGINE=InnoDB" 565fe1add5SGreg Roach ); 575fe1add5SGreg Roach } catch (PDOException $ex) { 585fe1add5SGreg Roach // Already done? 595fe1add5SGreg Roach } 605fe1add5SGreg Roach 615fe1add5SGreg Roach try { 625fe1add5SGreg Roach Database::exec( 635fe1add5SGreg Roach "ALTER TABLE `##placelocation` ADD (" . 645fe1add5SGreg Roach " pl_media VARCHAR(60) NULL," . 655fe1add5SGreg Roach " sv_long FLOAT NOT NULL DEFAULT 0," . 665fe1add5SGreg Roach " sv_lati FLOAT NOT NULL DEFAULT 0," . 675fe1add5SGreg Roach " sv_bearing FLOAT NOT NULL DEFAULT 0," . 685fe1add5SGreg Roach " sv_elevation FLOAT NOT NULL DEFAULT 0," . 695fe1add5SGreg Roach " sv_zoom FLOAT NOT NULL DEFAULT 1" . 705fe1add5SGreg Roach ")" 715fe1add5SGreg Roach ); 725fe1add5SGreg Roach } catch (PDOException $ex) { 735fe1add5SGreg Roach // Already done? 745fe1add5SGreg Roach } 755fe1add5SGreg Roach 765fe1add5SGreg Roach try { 77d9384943SGreg Roach Database::exec( 78d9384943SGreg Roach "ALTER TABLE `##placelocation`" . 795fe1add5SGreg Roach " DROP COLUMN pl_media," . 805fe1add5SGreg Roach " DROP COLUMN sv_long," . 815fe1add5SGreg Roach " DROP COLUMN sv_lati," . 825fe1add5SGreg Roach " DROP COLUMN sv_bearing," . 835fe1add5SGreg Roach " DROP COLUMN sv_elevation," . 845fe1add5SGreg Roach " DROP COLUMN sv_zoom," . 855fe1add5SGreg Roach " DROP INDEX ix1," . 865fe1add5SGreg Roach " DROP INDEX ix2," . 875fe1add5SGreg Roach " DROP INDEX ix3," . 885fe1add5SGreg Roach " DROP INDEX ix4," . 895fe1add5SGreg Roach " DROP INDEX ix5," . 905fe1add5SGreg Roach " ADD UNIQUE INDEX ix1 (pl_parent_id, pl_place)," . 915fe1add5SGreg Roach " ADD INDEX ix2 (pl_parent_id)," . 925fe1add5SGreg Roach " ADD INDEX ix3 (pl_place)" 935fe1add5SGreg Roach ); 945fe1add5SGreg Roach } catch (PDOException $ex) { 955fe1add5SGreg Roach // Already done? 965fe1add5SGreg Roach } 975fe1add5SGreg Roach 985fe1add5SGreg Roach // Convert flag icons from .gif to .png 995fe1add5SGreg Roach Database::exec("UPDATE `##placelocation` SET pl_icon=REPLACE(pl_icon, '.gif', '.png')"); 1005fe1add5SGreg Roach 1015fe1add5SGreg Roach // Delete old settings 1025fe1add5SGreg Roach Database::exec("DELETE FROM `##module_setting` WHERE module_name='googlemap'"); 1035fe1add5SGreg Roach Database::exec("DELETE FROM `##module_privacy` WHERE module_name='googlemap'"); 1045fe1add5SGreg Roach Database::exec("DELETE FROM `##module` WHERE module_name='googlemap'"); 1055fe1add5SGreg Roach } 1065fe1add5SGreg Roach} 107