11507cbcaSGreg Roach<?php 21507cbcaSGreg Roach/** 31507cbcaSGreg Roach * webtrees: online genealogy 41062a142SGreg Roach * Copyright (C) 2018 webtrees development team 51507cbcaSGreg Roach * This program is free software: you can redistribute it and/or modify 61507cbcaSGreg Roach * it under the terms of the GNU General Public License as published by 71507cbcaSGreg Roach * the Free Software Foundation, either version 3 of the License, or 81507cbcaSGreg Roach * (at your option) any later version. 91507cbcaSGreg Roach * This program is distributed in the hope that it will be useful, 101507cbcaSGreg Roach * but WITHOUT ANY WARRANTY; without even the implied warranty of 111507cbcaSGreg Roach * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 121507cbcaSGreg Roach * GNU General Public License for more details. 131507cbcaSGreg Roach * You should have received a copy of the GNU General Public License 141507cbcaSGreg Roach * along with this program. If not, see <http://www.gnu.org/licenses/>. 151507cbcaSGreg Roach */ 16e7f56f2aSGreg Roachdeclare(strict_types=1); 17e7f56f2aSGreg Roach 181507cbcaSGreg Roachnamespace Fisharebest\Webtrees\Schema; 191507cbcaSGreg Roach 201507cbcaSGreg Roachuse Fisharebest\Webtrees\Auth; 211507cbcaSGreg Roachuse Fisharebest\Webtrees\Database; 228d0ebef0SGreg Roachuse Fisharebest\Webtrees\Webtrees; 231507cbcaSGreg Roach 241507cbcaSGreg Roach/** 251507cbcaSGreg Roach * Upgrade the database schema from version 30 to version 31. 261507cbcaSGreg Roach */ 27c1010edaSGreg Roachclass Migration30 implements MigrationInterface 28c1010edaSGreg Roach{ 291507cbcaSGreg Roach /** 301507cbcaSGreg Roach * Upgrade to to the next version 3119d91378SGreg Roach * 3219d91378SGreg Roach * @return void 331507cbcaSGreg Roach */ 34*362be83aSGreg Roach public function upgrade(): void 35c1010edaSGreg Roach { 36a45f9889SGreg Roach $WEBTREES_EMAIL = 'webtrees-noreply@' . preg_replace('/^www\./i', '', $_SERVER['SERVER_NAME'] ?? ''); 371507cbcaSGreg Roach 381507cbcaSGreg Roach // Default settings for new trees. No defaults for: 391507cbcaSGreg Roach // imported, title, CONTACT_USER_ID, WEBMASTER_USER_ID 401507cbcaSGreg Roach // The following settings have defaults, but may need overwriting: 411507cbcaSGreg Roach // LANGUAGE, SURNAME_TRADITION 421507cbcaSGreg Roach Database::prepare( 431507cbcaSGreg Roach "INSERT IGNORE INTO `##gedcom_setting` (gedcom_id, setting_name, setting_value) VALUES" . 441507cbcaSGreg Roach "(-1, 'ADVANCED_NAME_FACTS', 'NICK,_AKA')," . 451507cbcaSGreg Roach "(-1, 'ADVANCED_PLAC_FACTS', '')," . 461507cbcaSGreg Roach "(-1, 'ALLOW_THEME_DROPDOWN', '1')," . 471507cbcaSGreg Roach "(-1, 'CALENDAR_FORMAT', 'gregorian')," . 481507cbcaSGreg Roach "(-1, 'CHART_BOX_TAGS', '')," . 491507cbcaSGreg Roach "(-1, 'COMMON_NAMES_ADD', '')," . 501507cbcaSGreg Roach "(-1, 'COMMON_NAMES_REMOVE', '')," . 511507cbcaSGreg Roach "(-1, 'COMMON_NAMES_THRESHOLD', '40')," . 521507cbcaSGreg Roach "(-1, 'DEFAULT_PEDIGREE_GENERATIONS', '4')," . 531507cbcaSGreg Roach "(-1, 'EXPAND_RELATIVES_EVENTS', '0')," . 541507cbcaSGreg Roach "(-1, 'EXPAND_SOURCES', '0')," . 551507cbcaSGreg Roach "(-1, 'FAM_FACTS_ADD', 'CENS,MARR,RESI,SLGS,MARR_CIVIL,MARR_RELIGIOUS,MARR_PARTNERS,RESN')," . 561507cbcaSGreg Roach "(-1, 'FAM_FACTS_QUICK', 'MARR,DIV,_NMR')," . 5733f87ac6SGreg Roach "(-1, 'FAM_FACTS_UNIQUE', 'NCHI,MARL,DIV,ANUL,DIVF,ENGA,MARB,MARC,MARS,_NMR')," . 581507cbcaSGreg Roach "(-1, 'FAM_ID_PREFIX', 'F')," . 591507cbcaSGreg Roach "(-1, 'FORMAT_TEXT', 'markdown')," . 601507cbcaSGreg Roach "(-1, 'FULL_SOURCES', '0')," . 611507cbcaSGreg Roach "(-1, 'GEDCOM_ID_PREFIX', 'I')," . 621507cbcaSGreg Roach "(-1, 'GEDCOM_MEDIA_PATH', '')," . 631507cbcaSGreg Roach "(-1, 'GENERATE_UIDS', '0')," . 641507cbcaSGreg Roach "(-1, 'HIDE_GEDCOM_ERRORS', '1')," . 651507cbcaSGreg Roach "(-1, 'HIDE_LIVE_PEOPLE', '1')," . 661507cbcaSGreg Roach "(-1, 'INDI_FACTS_ADD', 'AFN,BIRT,DEAT,BURI,CREM,ADOP,BAPM,BARM,BASM,BLES,CHRA,CONF,FCOM,ORDN,NATU,EMIG,IMMI,CENS,PROB,WILL,GRAD,RETI,DSCR,EDUC,IDNO,NATI,NCHI,NMR,OCCU,PROP,RELI,RESI,SSN,TITL,BAPL,CONL,ENDL,SLGC,_MILI,ASSO,RESN')," . 671507cbcaSGreg Roach "(-1, 'INDI_FACTS_QUICK', 'BIRT,BURI,BAPM,CENS,DEAT,OCCU,RESI')," . 681507cbcaSGreg Roach "(-1, 'INDI_FACTS_UNIQUE', '')," . 691507cbcaSGreg Roach "(-1, 'KEEP_ALIVE_YEARS_BIRTH', '')," . 701507cbcaSGreg Roach "(-1, 'KEEP_ALIVE_YEARS_DEATH', '')," . 711507cbcaSGreg Roach "(-1, 'LANGUAGE', 'en-US')," . 721507cbcaSGreg Roach "(-1, 'MAX_ALIVE_AGE', '120')," . 731507cbcaSGreg Roach "(-1, 'MAX_DESCENDANCY_GENERATIONS', '15')," . 741507cbcaSGreg Roach "(-1, 'MAX_PEDIGREE_GENERATIONS', '10')," . 751507cbcaSGreg Roach "(-1, 'MEDIA_DIRECTORY', 'media/')," . 761507cbcaSGreg Roach "(-1, 'MEDIA_ID_PREFIX', 'M')," . 771507cbcaSGreg Roach "(-1, 'MEDIA_UPLOAD', :MEDIA_UPLOAD)," . 781507cbcaSGreg Roach "(-1, 'META_DESCRIPTION', '')," . 791507cbcaSGreg Roach "(-1, 'META_TITLE', :META_TITLE)," . 801507cbcaSGreg Roach "(-1, 'NOTE_FACTS_ADD', 'SOUR,RESN')," . 811507cbcaSGreg Roach "(-1, 'NOTE_FACTS_QUICK', '')," . 821507cbcaSGreg Roach "(-1, 'NOTE_FACTS_UNIQUE', '')," . 831507cbcaSGreg Roach "(-1, 'NOTE_ID_PREFIX', 'N')," . 841507cbcaSGreg Roach "(-1, 'NO_UPDATE_CHAN', '0')," . 851507cbcaSGreg Roach "(-1, 'PEDIGREE_LAYOUT', '1')," . 861507cbcaSGreg Roach "(-1, 'PEDIGREE_ROOT_ID', '')," . 871507cbcaSGreg Roach "(-1, 'PEDIGREE_SHOW_GENDER', '0')," . 881507cbcaSGreg Roach "(-1, 'PREFER_LEVEL2_SOURCES', '1')," . 891507cbcaSGreg Roach "(-1, 'QUICK_REQUIRED_FACTS', 'BIRT,DEAT')," . 901507cbcaSGreg Roach "(-1, 'QUICK_REQUIRED_FAMFACTS', 'MARR')," . 911507cbcaSGreg Roach "(-1, 'REPO_FACTS_ADD', 'PHON,EMAIL,FAX,WWW,RESN')," . 921507cbcaSGreg Roach "(-1, 'REPO_FACTS_QUICK', '')," . 931507cbcaSGreg Roach "(-1, 'REPO_FACTS_UNIQUE', 'NAME,ADDR')," . 941507cbcaSGreg Roach "(-1, 'REPO_ID_PREFIX', 'R')," . 951507cbcaSGreg Roach "(-1, 'REQUIRE_AUTHENTICATION', '0')," . 961507cbcaSGreg Roach "(-1, 'SAVE_WATERMARK_IMAGE', '0')," . 971507cbcaSGreg Roach "(-1, 'SHOW_AGE_DIFF', '0')," . 981507cbcaSGreg Roach "(-1, 'SHOW_COUNTER', '1')," . 991507cbcaSGreg Roach "(-1, 'SHOW_DEAD_PEOPLE', :SHOW_DEAD_PEOPLE)," . 1001507cbcaSGreg Roach "(-1, 'SHOW_EST_LIST_DATES', '0')," . 1011507cbcaSGreg Roach "(-1, 'SHOW_FACT_ICONS', '1')," . 1021507cbcaSGreg Roach "(-1, 'SHOW_GEDCOM_RECORD', '0')," . 1031507cbcaSGreg Roach "(-1, 'SHOW_HIGHLIGHT_IMAGES', '1')," . 1041507cbcaSGreg Roach "(-1, 'SHOW_LEVEL2_NOTES', '1')," . 1051507cbcaSGreg Roach "(-1, 'SHOW_LIVING_NAMES', :SHOW_LIVING_NAMES)," . 1061507cbcaSGreg Roach "(-1, 'SHOW_MEDIA_DOWNLOAD', '0')," . 1071507cbcaSGreg Roach "(-1, 'SHOW_NO_WATERMARK', :SHOW_NO_WATERMARK)," . 1081507cbcaSGreg Roach "(-1, 'SHOW_PARENTS_AGE', '1')," . 1091507cbcaSGreg Roach "(-1, 'SHOW_PEDIGREE_PLACES', '9')," . 1101507cbcaSGreg Roach "(-1, 'SHOW_PEDIGREE_PLACES_SUFFIX', '0')," . 1111507cbcaSGreg Roach "(-1, 'SHOW_PRIVATE_RELATIONSHIPS', '1')," . 1121507cbcaSGreg Roach "(-1, 'SHOW_RELATIVES_EVENTS', '_BIRT_CHIL,_BIRT_SIBL,_MARR_CHIL,_MARR_PARE,_DEAT_CHIL,_DEAT_PARE,_DEAT_GPAR,_DEAT_SIBL,_DEAT_SPOU')," . 1131507cbcaSGreg Roach "(-1, 'SOURCE_ID_PREFIX', 'S')," . 1141507cbcaSGreg Roach "(-1, 'SOUR_FACTS_ADD', 'NOTE,REPO,SHARED_NOTE,RESN')," . 1151507cbcaSGreg Roach "(-1, 'SOUR_FACTS_QUICK', 'TEXT,NOTE,REPO')," . 1161507cbcaSGreg Roach "(-1, 'SOUR_FACTS_UNIQUE', 'AUTH,ABBR,TITL,PUBL,TEXT')," . 1171507cbcaSGreg Roach "(-1, 'SUBLIST_TRIGGER_I', '200')," . 1181507cbcaSGreg Roach "(-1, 'SURNAME_LIST_STYLE', 'style2')," . 1191507cbcaSGreg Roach "(-1, 'SURNAME_TRADITION', 'paternal')," . 1201507cbcaSGreg Roach "(-1, 'THUMBNAIL_WIDTH', '100')," . 1211507cbcaSGreg Roach "(-1, 'USE_RIN', '0')," . 1221507cbcaSGreg Roach "(-1, 'USE_SILHOUETTE', '1')," . 1231507cbcaSGreg Roach "(-1, 'WEBTREES_EMAIL', :WEBTREES_EMAIL)," . 1241507cbcaSGreg Roach "(-1, 'WORD_WRAPPED_NOTES', '0')" 12513abd6f3SGreg Roach )->execute([ 1261507cbcaSGreg Roach 'MEDIA_UPLOAD' => Auth::PRIV_USER, 1278d0ebef0SGreg Roach 'META_TITLE' => Webtrees::NAME, 1281507cbcaSGreg Roach 'SHOW_DEAD_PEOPLE' => Auth::PRIV_PRIVATE, 1291507cbcaSGreg Roach 'SHOW_LIVING_NAMES' => Auth::PRIV_USER, 1301507cbcaSGreg Roach 'SHOW_NO_WATERMARK' => Auth::PRIV_USER, 1311507cbcaSGreg Roach 'WEBTREES_EMAIL' => $WEBTREES_EMAIL, 13213abd6f3SGreg Roach ]); 1331507cbcaSGreg Roach 1341507cbcaSGreg Roach // Previous versions of webtrees allowed this setting to be empty. 1351507cbcaSGreg Roach Database::prepare( 1361507cbcaSGreg Roach "DELETE FROM `##gedcom_setting` WHERE setting_name ='WEBTREES_EMAIL' AND setting_value = ''" 1371507cbcaSGreg Roach )->execute(); 1381507cbcaSGreg Roach 1391507cbcaSGreg Roach Database::prepare( 1401507cbcaSGreg Roach "INSERT IGNORE INTO `##gedcom_setting` (gedcom_id, setting_name, setting_value)" . 1411507cbcaSGreg Roach " SELECT gedcom_id, 'WEBTREES_EMAIL', :WEBTREES_EMAIL" . 1421507cbcaSGreg Roach " FROM `##gedcom` WHERE gedcom_id > 0" 14313abd6f3SGreg Roach )->execute([ 1441507cbcaSGreg Roach 'WEBTREES_EMAIL' => $WEBTREES_EMAIL, 14513abd6f3SGreg Roach ]); 1461507cbcaSGreg Roach 1471507cbcaSGreg Roach // Default restrictions 1481507cbcaSGreg Roach Database::prepare( 1491507cbcaSGreg Roach "INSERT IGNORE INTO `##default_resn` (gedcom_id, tag_type, resn) VALUES " . 1501507cbcaSGreg Roach "(-1, 'SSN', 'confidential')," . 1511507cbcaSGreg Roach "(-1, 'SOUR', 'privacy')," . 1521507cbcaSGreg Roach "(-1, 'REPO', 'privacy')," . 1531507cbcaSGreg Roach "(-1, 'SUBM', 'confidential')," . 1541507cbcaSGreg Roach "(-1, 'SUBN', 'confidential')" 1551507cbcaSGreg Roach )->execute(); 1561507cbcaSGreg Roach } 1571507cbcaSGreg Roach} 158