Esempio n. 1
0
 /**
  * Upgrade to to the next version
  */
 public function upgrade()
 {
     // Delete old configuration setting
     Database::exec("DELETE FROM `##gedcom_setting` WHERE setting_name IN ('SEARCH_FACTS_DEFAULT', 'DISPLAY_JEWISH_GERESHAYIM', 'DISPLAY_JEWISH_THOUSANDS')");
     // Increase the password column from 64 to 128 characters
     Database::exec("ALTER TABLE `##user` CHANGE password password VARCHAR(128) COLLATE utf8_unicode_ci NOT NULL");
 }
Esempio n. 2
0
 /**
  * Upgrade to to the next version
  */
 public function upgrade()
 {
     // New modules (charts) have been added.
     Module::getInstalledModules('enabled');
     // Delete old/unused settings
     Database::exec("DELETE FROM `##gedcom_setting` WHERE setting_name IN ('COMMON_NAMES_ADD', 'COMMON_NAMES_REMOVE', 'COMMON_NAMES_THRESHOLD')");
 }
Esempio n. 3
0
 /**
  * Upgrade to to the next version
  */
 public function upgrade()
 {
     // Tree settings become site settings
     Database::exec("INSERT IGNORE INTO `##site_setting` (setting_name, setting_value)" . " SELECT setting_name, setting_value" . " FROM `##gedcom_setting`" . " WHERE setting_name IN ('SHOW_REGISTER_CAUTION', 'WELCOME_TEXT_CUST_HEAD') OR setting_name LIKE 'WELCOME_TEXT_AUTH_MODE%'" . " GROUP BY setting_name");
     Database::exec("DELETE FROM `##gedcom_setting` WHERE setting_name IN ('ALLOW_EDIT_GEDCOM', 'SHOW_REGISTER_CAUTION', 'WELCOME_TEXT_CUST_HEAD') OR setting_name LIKE 'WELCOME_TEXT_AUTH_MODE%'");
     Database::exec("DELETE FROM `##site_setting` WHERE setting_name IN ('STORE_MESSAGES')");
 }
Esempio n. 4
0
 /**
  * Upgrade to to the next version
  */
 public function upgrade()
 {
     // - delete unused settings and update indexes
     Database::exec("DELETE FROM `##site_setting` WHERE setting_name IN ('WELCOME_TEXT_CUST_HEAD')");
     // Modern versions of Internet Explorer use a different user-agent string
     Database::exec("INSERT IGNORE INTO `##site_access_rule` (user_agent_pattern, rule, comment) VALUES" . " ('Mozilla/% (Windows%; Trident%; rv:%) like Gecko', 'allow', 'Modern Internet Explorer')");
 }
Esempio n. 5
0
 /** {@inheritDoc} */
 public function upgrade()
 {
     // Add the new columns
     try {
         Database::exec("ALTER TABLE `##favorites`" . " CHANGE fv_id    favorite_id   INTEGER AUTO_INCREMENT NOT NULL," . " CHANGE fv_gid   xref          VARCHAR(20) NULL," . " CHANGE fv_type  favorite_type ENUM('INDI', 'FAM', 'SOUR', 'REPO', 'OBJE', 'NOTE', 'URL') NOT NULL," . " CHANGE fv_url   url           VARCHAR(255) NULL," . " CHANGE fv_title title         VARCHAR(255) NULL," . " CHANGE fv_note  note          VARCHAR(1000) NULL," . " ADD user_id   INTEGER     NULL AFTER favorite_id," . " ADD gedcom_id INTEGER NOT NULL AFTER user_id," . " DROP KEY ix1," . " ADD KEY news_ix1 (gedcom_id, user_id)");
     } catch (PDOException $ex) {
         // Already updated?
     }
     // Migrate data from the old columns to the new ones
     try {
         Database::exec("UPDATE `##favorites` f" . " LEFT JOIN `##gedcom` g ON (f.fv_file    =g.gedcom_name)" . " LEFT JOIN `##user`   u ON (f.fv_username=u.user_name)" . " SET f.gedcom_id=g.gedcom_id, f.user_id=u.user_id");
     } catch (PDOException $ex) {
         // Already updated?
     }
     // Delete orphaned rows
     try {
         Database::exec("DELETE FROM `##favorites` WHERE user_id IS NULL AND gedcom_id IS NULL");
     } catch (PDOException $ex) {
         // Already updated?
     }
     // Delete the old column
     try {
         Database::exec("ALTER TABLE `##favorites` DROP fv_username, DROP fv_file");
     } catch (PDOException $ex) {
         // Already updated?
     }
     // Rename the table
     try {
         Database::exec("RENAME TABLE `##favorites` TO `##favorite`");
     } catch (PDOException $ex) {
         // Already updated?
     }
 }
Esempio n. 6
0
 /** {@inheritDoc} */
 public function upgrade()
 {
     // Add new columns
     try {
         Database::exec("ALTER TABLE `##news`" . " ADD user_id INTEGER NULL AFTER n_id," . " ADD gedcom_id INTEGER NULL AFTER user_id," . " ADD updated TIMESTAMP ON UPDATE CURRENT_TIMESTAMP DEFAULT CURRENT_TIMESTAMP," . " ADD KEY news_ix1 (user_id, updated)," . " ADD KEY news_ix2 (gedcom_id, updated)");
     } catch (PDOException $ex) {
         // Already updated?
     }
     // Migrate data from the old columns to the new ones
     try {
         Database::exec("UPDATE `##news` n" . " LEFT JOIN `##gedcom` g ON (n.n_username=g.gedcom_name)" . " LEFT JOIN `##user` u ON (n.n_username=u.user_name)" . " SET n.gedcom_id=g.gedcom_id, n.user_id=u.user_id, updated=FROM_UNIXTIME(n_date)");
     } catch (PDOException $ex) {
         // Already updated?
     }
     // Delete orphaned rows
     try {
         Database::exec("DELETE FROM `##news` WHERE user_id IS NULL AND gedcom_id IS NULL");
     } catch (PDOException $ex) {
         // Already updated?
     }
     // Delete/rename old columns
     try {
         Database::exec("ALTER TABLE `##news`" . " DROP n_username, DROP n_date," . " CHANGE n_id news_id INTEGER NOT NULL AUTO_INCREMENT," . " CHANGE n_title subject VARCHAR(255) COLLATE utf8_unicode_ci," . " CHANGE n_text body TEXT COLLATE utf8_unicode_ci");
     } catch (PDOException $ex) {
         // Already updated?
     }
 }
Esempio n. 7
0
 /**
  * Upgrade to to the next version
  */
 public function upgrade()
 {
     // Update config data defining theme selection
     Database::exec("UPDATE `##gedcom_setting` SET setting_value=TRIM(LEADING 'themes/' FROM TRIM(TRAILING '/' FROM setting_value)) WHERE setting_name='THEME_DIR'");
     Database::exec("UPDATE `##user_setting` SET setting_value=TRIM(LEADING 'themes/' FROM TRIM(TRAILING '/' FROM setting_value)) WHERE setting_name='THEME_DIR'");
     Database::exec("UPDATE `##user_gedcom_setting` SET setting_value=TRIM(LEADING 'themes/' FROM TRIM(TRAILING '/' FROM setting_value)) WHERE setting_name='THEME_DIR'");
 }
Esempio n. 8
0
 /**
  * Upgrade to to the next version
  */
 public function upgrade()
 {
     // Use LONGTEXT instead of TEXT and MEDIUMTEXT, and make NOT NULL.
     Database::exec("UPDATE `##news`   SET body          = '' WHERE body          IS NULL");
     Database::exec("UPDATE `##other`  SET o_gedcom      = '' WHERE o_gedcom      IS NULL");
     Database::exec("UPDATE `##places` SET p_std_soundex = '' WHERE p_std_soundex IS NULL");
     Database::exec("UPDATE `##places` SET p_dm_soundex  = '' WHERE p_dm_soundex  IS NULL");
     Database::exec("ALTER TABLE `##block_setting`  CHANGE setting_value setting_value LONGTEXT COLLATE utf8_unicode_ci NOT NULL");
     Database::exec("ALTER TABLE `##change`         CHANGE new_gedcom    new_gedcom    LONGTEXT COLLATE utf8_unicode_ci NOT NULL");
     Database::exec("ALTER TABLE `##change`         CHANGE old_gedcom    old_gedcom    LONGTEXT COLLATE utf8_unicode_ci NOT NULL");
     Database::exec("ALTER TABLE `##families`       CHANGE f_gedcom      f_gedcom      LONGTEXT COLLATE utf8_unicode_ci NOT NULL");
     Database::exec("ALTER TABLE `##individuals`    CHANGE i_gedcom      i_gedcom      LONGTEXT COLLATE utf8_unicode_ci NOT NULL");
     Database::exec("ALTER TABLE `##log`            CHANGE log_message   log_message   LONGTEXT COLLATE utf8_unicode_ci NOT NULL");
     Database::exec("ALTER TABLE `##media`          CHANGE m_gedcom      m_gedcom      LONGTEXT COLLATE utf8_unicode_ci NOT NULL");
     Database::exec("ALTER TABLE `##message`        CHANGE body          body          LONGTEXT COLLATE utf8_unicode_ci NOT NULL");
     Database::exec("ALTER TABLE `##module_setting` CHANGE setting_value setting_value LONGTEXT COLLATE utf8_unicode_ci NOT NULL");
     Database::exec("ALTER TABLE `##news`           CHANGE body          body          LONGTEXT COLLATE utf8_unicode_ci NOT NULL");
     Database::exec("ALTER TABLE `##other`          CHANGE o_gedcom      o_gedcom      LONGTEXT COLLATE utf8_unicode_ci NOT NULL");
     Database::exec("ALTER TABLE `##places`         CHANGE p_std_soundex p_std_soundex LONGTEXT COLLATE utf8_unicode_ci NOT NULL");
     Database::exec("ALTER TABLE `##places`         CHANGE p_dm_soundex  p_dm_soundex  LONGTEXT COLLATE utf8_unicode_ci NOT NULL");
     Database::exec("ALTER TABLE `##sources`        CHANGE s_gedcom      s_gedcom      LONGTEXT COLLATE utf8_unicode_ci NOT NULL");
     // Use LONGBLOB instead of MEDIUMBLOB.
     Database::exec("ALTER TABLE `##gedcom_chunk`   CHANGE chunk_data    chunk_data    LONGBLOB NOT NULL");
     Database::exec("ALTER TABLE `##session`        CHANGE session_data  session_data  LONGBLOB NOT NULL");
 }
Esempio n. 9
0
 /**
  * Upgrade to to the next version
  */
 public function upgrade()
 {
     // IPv6 addresses can be up to 45 characters.
     Database::exec("ALTER TABLE `##log`     CHANGE ip_address ip_address VARCHAR(45) NOT NULL");
     Database::exec("ALTER TABLE `##message` CHANGE ip_address ip_address VARCHAR(45) NOT NULL");
     Database::exec("ALTER TABLE `##session` CHANGE ip_address ip_address VARCHAR(45) NOT NULL");
 }
Esempio n. 10
0
 /**
  * Upgrade to to the next version
  */
 public function upgrade()
 {
     // Delete old config settings
     Database::exec("DELETE FROM `##gedcom_setting` WHERE setting_name IN('GEDCOM_DEFAULT_TAB', 'LINK_ICONS', 'ZOOM_BOXES')");
     Database::exec("DELETE FROM `##user_setting` WHERE setting_name='default'");
     // There is no way to add a RESN tag to NOTE objects
     Database::exec("UPDATE `##gedcom_setting` SET setting_value='SOUR,RESN' WHERE setting_name='NOTE_FACTS_ADD' AND setting_value='SOUR'");
 }
Esempio n. 11
0
 /**
  * Upgrade to to the next version
  */
 public function upgrade()
 {
     // Add support for the persian/jalali calendar
     try {
         Database::exec("ALTER TABLE `##dates` CHANGE d_type d_type ENUM('@#DGREGORIAN@', '@#DJULIAN@', '@#DHEBREW@', '@#DFRENCH R@', '@#DHIJRI@', '@#DROMAN@', '@#DJALALI@')");
     } catch (PDOException $ex) {
         // Already been run?
     }
 }
Esempio n. 12
0
 /**
  * Upgrade to to the next version
  */
 public function upgrade()
 {
     // Update some indexes, based on analysis of slow-query-logs
     try {
         Database::exec("ALTER TABLE `##places`" . " DROP       KEY ix1," . " DROP       KEY ix2," . " DROP       KEY ix3," . " DROP       KEY ix4," . " DROP       p_level," . " ADD        KEY ix1 (p_file, p_place)," . " ADD UNIQUE KEY ux1 (p_parent_id, p_file, p_place)");
     } catch (PDOException $ex) {
         // Already done?
     }
 }
Esempio n. 13
0
 /**
  * Upgrade to to the next version
  */
 public function upgrade()
 {
     // Remove the i_isdead column
     try {
         Database::exec("ALTER TABLE `##individuals` DROP i_isdead");
     } catch (PDOException $ex) {
         // Already done this?
     }
 }
Esempio n. 14
0
 /** {@inheritDoc} */
 public function upgrade()
 {
     // Update the tables to support streetview
     try {
         Database::exec("ALTER TABLE `##placelocation` ADD (" . " pl_media      VARCHAR(60)     NULL," . " sv_long       FLOAT           NOT NULL DEFAULT 0," . " sv_lati       FLOAT           NOT NULL DEFAULT 0," . " sv_bearing    FLOAT           NOT NULL DEFAULT 0," . " sv_elevation  FLOAT           NOT NULL DEFAULT 0," . " sv_zoom       FLOAT           NOT NULL DEFAULT 1" . ")");
     } catch (PDOException $ex) {
         // Already done this?
     }
 }
Esempio n. 15
0
 /** {@inheritDoc} */
 public function upgrade()
 {
     // An earlier update mistakenly made the fv_note column too short.
     // Add the new constraints
     try {
         Database::exec("ALTER TABLE `##favorite` CHANGE note note VARCHAR(1000) NULL");
     } catch (PDOException $ex) {
         // Already updated?
     }
 }
Esempio n. 16
0
 /**
  * Upgrade to to the next version
  */
 public function upgrade()
 {
     // - create the wt_gedcom_chunk table to import gedcoms in
     // blocks of data smaller than the max_allowed_packet restriction.
     Database::exec("CREATE TABLE IF NOT EXISTS `##gedcom_chunk` (" . " gedcom_chunk_id INTEGER AUTO_INCREMENT NOT NULL," . " gedcom_id       INTEGER                NOT NULL," . " chunk_data      MEDIUMBLOB             NOT NULL," . " imported        BOOLEAN                NOT NULL DEFAULT FALSE," . " PRIMARY KEY     (gedcom_chunk_id)," . "         KEY ix1 (gedcom_id, imported)," . " FOREIGN KEY `##gedcom_chunk_fk1` (gedcom_id) REFERENCES `##gedcom` (gedcom_id)" . ") COLLATE utf8_unicode_ci ENGINE=InnoDB");
     try {
         Database::exec("ALTER TABLE `##gedcom` DROP import_gedcom, DROP import_offset");
     } catch (PDOException $ex) {
         // Perhaps we have already deleted these columns?
     }
 }
Esempio n. 17
0
 /** {@inheritDoc} */
 public function upgrade()
 {
     // Delete any data that might violate the new constraints
     Database::exec("DELETE FROM `##news`" . " WHERE user_id   NOT IN (SELECT user_id   FROM `##user`  )" . " OR    gedcom_id NOT IN (SELECT gedcom_id FROM `##gedcom`)");
     // Add the new constraints
     try {
         Database::exec("ALTER TABLE `##news`" . " ADD FOREIGN KEY news_fk1 (user_id  ) REFERENCES `##user`   (user_id)   ON DELETE CASCADE," . " ADD FOREIGN KEY news_fk2 (gedcom_id) REFERENCES `##gedcom` (gedcom_id) ON DELETE CASCADE");
     } catch (PDOException $ex) {
         // Already updated?
     }
 }
Esempio n. 18
0
 /**
  * Upgrade to to the next version
  */
 public function upgrade()
 {
     // Delete old config settings
     // Convert MULTI_MEDIA (0=false, 1=true) to MEDIA_UPLOAD (1=members, 0=managers, -1=nobody)
     try {
         Database::exec("UPDATE `##gedcom_setting` SET setting_name='MEDIA_UPLOAD' WHERE setting_name='MULTI_MEDIA'");
     } catch (PDOException $ex) {
         // This could theoretically cause a duplicate key error, if a MULTI_MEDIA setting already exists
     }
     // Remove old settings
     Database::exec("DELETE FROM `##gedcom_setting` WHERE setting_name IN ('SHOW_MEDIA_FILENAME', 'USE_THUMBS_MAIN', 'MULTI_MEDIA')");
     Database::exec("DELETE FROM `##default_resn` WHERE tag_type IN ('_PRIM')");
 }
Esempio n. 19
0
 /**
  * Upgrade to to the next version
  */
 public function upgrade()
 {
     // Add a "default" user, to store default settings
     Database::exec("INSERT IGNORE INTO `##user` (user_id, user_name, real_name, email, password) VALUES (-1, 'DEFAULT_USER', 'DEFAULT_USER', 'DEFAULT_USER', 'DEFAULT_USER')");
     // Add the initial default block settings
     Database::exec("INSERT IGNORE INTO `##block` (user_id, location, block_order, module_name) VALUES (-1, 'main', 1, 'todays_events'), (-1, 'main', 2, 'user_messages'), (-1, 'main', 3, 'user_favorites'), (-1, 'side', 1, 'user_welcome'), (-1, 'side', 2, 'random_media'), (-1, 'side', 3, 'upcoming_events'), (-1, 'side', 4, 'logged_in')");
     // Add a "default" tree, to store default settings
     Database::exec("INSERT IGNORE INTO `##gedcom` (gedcom_id, gedcom_name) VALUES (-1, 'DEFAULT_TREE')");
     // Add the initial default block settings
     Database::exec("INSERT IGNORE INTO `##block` (gedcom_id, location, block_order, module_name) VALUES (-1, 'main', 1, 'gedcom_stats'), (-1, 'main', 2, 'gedcom_news'), (-1, 'main', 3, 'gedcom_favorites'), (-1, 'main', 4, 'review_changes'), (-1, 'side', 1, 'gedcom_block'), (-1, 'side', 2, 'random_media'), (-1, 'side', 3, 'todays_events'), (-1, 'side', 4, 'logged_in')");
     // Some modules (e.g. sitemap) require larger settings
     Database::exec("ALTER TABLE `##module_setting` CHANGE setting_value setting_value MEDIUMTEXT COLLATE utf8_unicode_ci NOT NULL");
 }
Esempio n. 20
0
 /**
  * Upgrade to to the next version
  */
 public function upgrade()
 {
     // Delete old config settings
     Database::exec("DELETE FROM `##gedcom_setting` WHERE setting_name IN('GEDCOM_DEFAULT_TAB', 'LINK_ICONS', 'ZOOM_BOXES', 'SHOW_LIST_PLACES', 'SHOW_CONTEXT_HELP')");
     Database::exec("DELETE FROM `##user_setting` WHERE setting_name='defaulttab'");
     // There is no way to add a RESN tag to NOTE objects
     Database::exec("UPDATE `##gedcom_setting` SET setting_value='SOUR,RESN' WHERE setting_name='NOTE_FACTS_ADD' AND setting_value='SOUR'");
     // This needs to be an absolute URL. If not set, it defaults to the full path to login.php
     Database::exec("DELETE FROM `##site_setting` WHERE setting_name='LOGIN_URL' AND setting_value='login.php'");
     // No need for an empty value
     Database::exec("DELETE FROM `##site_setting` WHERE setting_name='SERVER_URL' AND setting_value=''");
     // Later PHP versions use session IDs longer than 32 chars.
     Database::exec("ALTER TABLE `##session` CHANGE session_id session_id CHAR(128) COLLATE utf8_unicode_ci NOT NULL");
 }
Esempio n. 21
0
 /**
  * Upgrade to to the next version
  */
 public function upgrade()
 {
     // Earlier versions of webtrees put quote marks round soundex codes.
     // These are harmless, but clean them up for consistency.
     Database::exec("UPDATE `##name` SET" . " n_soundex_givn_std = TRIM('''' FROM n_soundex_givn_std)," . " n_soundex_surn_std = TRIM('''' FROM n_soundex_surn_std)," . " n_soundex_givn_dm  = TRIM('''' FROM n_soundex_givn_dm )," . " n_soundex_surn_dm  = TRIM('''' FROM n_soundex_surn_dm )");
     // Earlier versions of webtrees added zero codes for names without phonetic content.
     // These are harmless, but clean them up for consistency.
     Database::exec("UPDATE `##name` SET" . " n_soundex_givn_std = REPLACE(n_soundex_givn_std, '0000:',   '')," . " n_soundex_surn_std = REPLACE(n_soundex_surn_std, '0000:',   '')," . " n_soundex_givn_dm  = REPLACE(n_soundex_givn_dm,  '000000:', '')," . " n_soundex_surn_dm  = REPLACE(n_soundex_surn_dm,  '000000:', '')");
     Database::exec("UPDATE `##name` SET" . " n_soundex_givn_std = REPLACE(n_soundex_givn_std, ':0000',   '')," . " n_soundex_surn_std = REPLACE(n_soundex_surn_std, ':0000',   '')," . " n_soundex_givn_dm  = REPLACE(n_soundex_givn_dm,  ':000000', '')," . " n_soundex_surn_dm  = REPLACE(n_soundex_surn_dm,  ':000000', '')");
     Database::exec("UPDATE `##name` SET" . " n_soundex_givn_std = NULLIF(n_soundex_givn_std, '0000'  )," . " n_soundex_surn_std = NULLIF(n_soundex_surn_std, '0000'  )," . " n_soundex_givn_dm  = NULLIF(n_soundex_givn_dm,  '000000')," . " n_soundex_surn_dm  = NULLIF(n_soundex_surn_dm,  '000000')");
     Database::exec("UPDATE `##places` SET" . " p_std_soundex = REPLACE(p_std_soundex, '0000:',   '')," . " p_dm_soundex  = REPLACE(p_dm_soundex,  '000000:', '')");
     Database::exec("UPDATE `##places` SET" . " p_std_soundex = REPLACE(p_std_soundex, ':0000',   '')," . " p_dm_soundex  = REPLACE(p_dm_soundex,  ':000000', '')");
     Database::exec("UPDATE `##places` SET" . " p_std_soundex = NULLIF(p_std_soundex, '0000'  )," . " p_dm_soundex  = NULLIF(p_dm_soundex,  '000000')");
 }
Esempio n. 22
0
 /**
  * Upgrade to to the next version
  */
 public function upgrade()
 {
     // Update the max_relation_path_length from a separate
     // user setting and gedcom setting to a combined user-gedcom
     // setting.
     // Also clean out some old/unused values.
     Database::exec("INSERT IGNORE INTO `##user_gedcom_setting` (user_id, gedcom_id, setting_name, setting_value)" . " SELECT u.user_id, g.gedcom_id, 'RELATIONSHIP_PATH_LENGTH', LEAST(us1.setting_value, gs1.setting_value)" . " FROM   `##user` u" . " CROSS  JOIN `##gedcom` g" . " LEFT   JOIN `##user_setting`   us1 ON (u.user_id  =us1.user_id   AND us1.setting_name='max_relation_path')" . " LEFT   JOIN `##user_setting`   us2 ON (u.user_id  =us2.user_id   AND us2.setting_name='relationship_privacy')" . " LEFT   JOIN `##gedcom_setting` gs1 ON (g.gedcom_id=gs1.gedcom_id AND gs1.setting_name='MAX_RELATION_PATH_LENGTH')" . " LEFT   JOIN `##gedcom_setting` gs2 ON (g.gedcom_id=gs2.gedcom_id AND gs2.setting_name='USE_RELATIONSHIP_PRIVACY')" . " WHERE  us2.setting_value AND gs2.setting_value");
     // Delete old/unused settings
     Database::exec("DELETE FROM `##site_setting` WHERE setting_name IN ('SESSION_SAVE_PATH')");
     Database::exec("DELETE FROM `##gedcom_setting` WHERE setting_name IN ('HOME_SITE_TEXT', 'HOME_SITE_URL', 'CHECK_MARRIAGE_RELATIONS', 'MAX_RELATION_PATH_LENGTH', 'USE_RELATIONSHIP_PRIVACY')");
     Database::exec("DELETE FROM `##user_setting` WHERE setting_name IN ('loggedin', 'relationship_privacy', 'max_relation_path_length')");
     // Fix Mc/Mac problems - See SVN9701
     Database::exec("UPDATE `##name` SET n_surn=CONCAT('MC', SUBSTRING(n_surn, 4)) WHERE n_surn LIKE 'MC0%'");
 }
Esempio n. 23
0
 /**
  * Upgrade to to the next version
  */
 public function upgrade()
 {
     // - data update for 1.4.0 media changes
     $_cfgs = Database::prepare("SELECT gs1.gedcom_id AS gedcom_id, gs1.setting_value AS media_directory, gs2.setting_value AS use_media_firewall, gs3.setting_value AS media_firewall_thumbs, gs4.setting_value AS media_firewall_rootdir" . " FROM `##gedcom_setting` gs1" . " LEFT JOIN `##gedcom_setting` gs2 ON (gs1.gedcom_id = gs2.gedcom_id AND gs2.setting_name='USE_MEDIA_FIREWALL')" . " LEFT JOIN `##gedcom_setting` gs3 ON (gs1.gedcom_id = gs3.gedcom_id AND gs3.setting_name='MEDIA_FIREWALL_THUMBS')" . " LEFT JOIN `##gedcom_setting` gs4 ON (gs1.gedcom_id = gs4.gedcom_id AND gs4.setting_name='MEDIA_FIREWALL_ROOTDIR')" . " WHERE gs1.setting_name = 'MEDIA_DIRECTORY'")->fetchAll();
     // The constant WT_DATA_DIR is not defined yet (although it was when this script was originally written).
     $WT_DATA_DIR = realpath('data');
     // Check the config for each tree
     foreach ($_cfgs as $_cfg) {
         if ($_cfg->use_media_firewall) {
             // We’re using the media firewall.
             $_mf_dir = realpath($_cfg->media_firewall_rootdir) . DIRECTORY_SEPARATOR;
             if ($_mf_dir == $WT_DATA_DIR) {
                 // We’re already storing our media in the data folder - nothing to do.
             } else {
                 // We’ve chosen a custom location for our media folder - need to update our media-folder to point to it.
                 // We have, for example,
                 // $_mf_dir = /home/fisharebest/my_pictures/
                 // $WT_DATA_DIR = /home/fisharebest/public_html/webtrees/data/
                 // Therefore we need to calculate ../../../my_pictures/
                 $_media_dir = '';
                 $_tmp_dir = $WT_DATA_DIR;
                 while (strpos($_mf_dir, $_tmp_dir) !== 0) {
                     $_media_dir .= '../';
                     $_tmp_dir = preg_replace('~[^/\\\\]+[/\\\\]$~', '', $_tmp_dir);
                     if ($_tmp_dir == '') {
                         // Shouldn't get here - but this script is not allowed to fail...
                         continue 2;
                     }
                 }
                 $_media_dir .= $_cfg->media_directory;
                 Database::prepare("UPDATE `##gedcom_setting`" . " SET setting_value=?" . " WHERE gedcom_id=? AND setting_name='MEDIA_DIRECTORY'")->execute(array($_media_dir, $_cfg->gedcom_id));
             }
         } else {
             // Not using the media firewall - just move the public folder to the new location (if we can).
             if (file_exists(WT_ROOT . $_cfg->media_directory) && is_dir(WT_ROOT . $_cfg->media_directory) && !file_exists($WT_DATA_DIR . $_cfg->media_directory)) {
                 try {
                     rename(WT_ROOT . $_cfg->media_directory, $WT_DATA_DIR . $_cfg->media_directory);
                 } catch (\ErrorException $ex) {
                     // Cannot move the folder?
                 }
                 File::delete($WT_DATA_DIR . $_cfg->media_directory . '.htaccess');
                 File::delete($WT_DATA_DIR . $_cfg->media_directory . 'index.php');
                 File::delete($WT_DATA_DIR . $_cfg->media_directory . 'Mediainfo.txt');
                 File::delete($WT_DATA_DIR . $_cfg->media_directory . 'thumbs/Thumbsinfo.txt');
             }
         }
     }
     // Delete old settings
     Database::exec("DELETE FROM `##gedcom_setting` WHERE setting_name IN ('USE_MEDIA_FIREWALL', 'MEDIA_FIREWALL_THUMBS', 'MEDIA_FIREWALL_ROOTDIR')");
 }
Esempio n. 24
0
 /**
  * Upgrade to to the next version
  */
 public function upgrade()
 {
     // Delete some old/unused configuration settings
     Database::exec("DELETE FROM `##gedcom_setting` WHERE setting_name IN ('MEDIA_EXTERNAL')");
     // Delete old table
     Database::exec("DROP TABLE IF EXISTS `##media_mapping`");
     // Make this table look like all the others
     try {
         Database::exec("ALTER TABLE `##media`" . " DROP   m_id," . " CHANGE m_media   m_id       VARCHAR(20)  COLLATE utf8_unicode_ci NOT NULL," . " CHANGE m_file    m_filename VARCHAR(512) COLLATE utf8_unicode_ci DEFAULT NULL," . " CHANGE m_gedfile m_file     INTEGER                              NOT NULL," . " CHANGE m_gedrec  m_gedcom   MEDIUMTEXT   COLLATE utf8_unicode_ci DEFAULT NULL," . " ADD    m_type               VARCHAR(20)  COLLATE utf8_unicode_ci NULL AFTER m_ext," . " ADD    PRIMARY KEY     (m_file, m_id)," . " ADD            KEY ix2 (m_ext, m_type)," . " ADD            KEY ix3 (m_titl)");
     } catch (PDOException $ex) {
         // Assume we've already done this
     }
     // Populate the new column
     Database::exec("UPDATE `##media` SET m_type = SUBSTRING_INDEX(SUBSTRING_INDEX(m_gedcom, '\n3 TYPE ', -1), '\n', 1) WHERE m_gedcom LIKE '%\n3 TYPE %'");
 }
Esempio n. 25
0
 /**
  * Upgrade to to the next version
  */
 public function upgrade()
 {
     // Change index on name table
     try {
         Database::exec("ALTER TABLE `##dates` CHANGE d_type d_type ENUM('@#DGREGORIAN@', '@#DJULIAN@', '@#DHEBREW@', '@#DFRENCH R@', '@#DHIJRI@', '@#DROMAN@', '@#DJALALI@')");
     } catch (PDOException $ex) {
         // Already been run?
     }
     try {
         // The INDILIST and FAMLIST scripts have been rewritten to use this index
         Database::exec("ALTER TABLE `##name` DROP INDEX ix2, ADD INDEX ix2 (n_surn, n_file, n_type, n_id), ADD INDEX ix3 (n_givn, n_file, n_type, n_id)");
     } catch (PDOException $ex) {
         // Already been run?
     }
 }
Esempio n. 26
0
 /**
  * Upgrade to to the next version
  */
 public function upgrade()
 {
     // - delete the wt_name.n_list column; it has never been used
     // - a bug in webtrees 1.1.2 caused the wt_name.n_full column
     // to include slashes around the surname.  These are unnecessary,
     // and cause problems when we try to match the name from the
     // gedcom with the name from the table.
     // Remove slashes from INDI names
     Database::exec("UPDATE `##name` SET n_full=REPLACE(n_full, '/', '') WHERE n_surn IS NOT NULL");
     try {
         Database::exec("ALTER TABLE `##name` DROP n_list");
     } catch (PDOException $x) {
         // Already done?
     }
 }
Esempio n. 27
0
 /**
  * Upgrade to to the next version
  */
 public function upgrade()
 {
     // Move repositories to their own table
     Database::exec("CREATE TABLE IF NOT EXISTS `##repository` (" . " repository_id INTEGER AUTO_INCREMENT                      NOT NULL," . " gedcom_id     INTEGER                                     NOT NULL," . " xref          VARCHAR(20)                                 NOT NULL," . " gedcom        LONGTEXT                                    NOT NULL," . " name          VARCHAR(90)                                 NOT NULL," . " address       VARCHAR(255)                                NOT NULL," . " restriction   ENUM('', 'confidential', 'privacy', 'none') NOT NULL," . " uid           VARCHAR(34)                                 NOT NULL," . " changed_at    DATETIME                                    NOT NULL," . " PRIMARY KEY (repository_id)," . " UNIQUE  KEY `##repository_ix1` (gedcom_id, xref)," . " UNIQUE  KEY `##repository_ix2` (xref, gedcom_id)," . "         KEY `##repository_ix3` (name)," . "         KEY `##repository_ix4` (address)," . "         KEY `##repository_ix5` (restriction)," . "         KEY `##repository_ix6` (uid)," . "         KEY `##repository_ix7` (changed_at)," . " CONSTRAINT `##repository_fk1` FOREIGN KEY (gedcom_id) REFERENCES `##gedcom` (gedcom_id)" . ") COLLATE utf8_unicode_ci ENGINE=InnoDB");
     Database::exec("START TRANSACTION");
     $repositories = Database::prepare("SELECT * FROM `##other` WHERE o_type = 'REPO'")->fetchAll();
     foreach ($repositories as $n => $repository) {
         Database::prepare("INSERT INTO `##repository` (" . " gedcom_id, xref, gedcom, name, address, restriction, uid, changed_at" . ") VALUES (" . " :gedcom_id, :xref, :gedcom, :name, :address, :restriction, :uid, :changed_at" . ")")->execute(array('gedcom_id' => $repository->o_file, 'xref' => $repository->o_id, 'gedcom' => $repository->o_gedcom, 'name' => '', 'address' => '', 'restriction' => '', 'uid' => '', 'changed_at' => ''));
         Database::prepare("DELETE FROM `##other` WHERE o_file = :gedcom_id AND o_id = :xref")->execute(array('gedcom_id' => $repository->o_file, 'xref' => $repository->o_id));
         if ($n % 500 === 499) {
             Database::exec("COMMIT");
             Database::exec("START TRANSACTION");
         }
     }
     Database::exec("COMMIT");
 }
Esempio n. 28
0
 /**
  * Upgrade to to the next version
  */
 public function upgrade()
 {
     Database::exec("CREATE TABLE IF NOT EXISTS `##gedcom` (" . " gedcom_id     INTEGER AUTO_INCREMENT NOT NULL," . " gedcom_name   VARCHAR(255)           NOT NULL," . " sort_order    INTEGER                NOT NULL DEFAULT 0," . " PRIMARY KEY                (gedcom_id)," . " UNIQUE  KEY `##gedcom_ix1` (gedcom_name)," . "         KEY `##gedcom_ix2` (sort_order)" . ") COLLATE utf8_unicode_ci ENGINE=InnoDB");
     Database::exec("CREATE TABLE IF NOT EXISTS `##site_setting` (" . " setting_name  VARCHAR(32)  NOT NULL," . " setting_value VARCHAR(255) NOT NULL," . " PRIMARY KEY (setting_name)" . ") COLLATE utf8_unicode_ci ENGINE=InnoDB");
     Database::exec("CREATE TABLE IF NOT EXISTS `##gedcom_setting` (" . " gedcom_id     INTEGER      NOT NULL," . " setting_name  VARCHAR(32)  NOT NULL," . " setting_value VARCHAR(255) NOT NULL," . " PRIMARY KEY                        (gedcom_id, setting_name)," . " FOREIGN KEY `##gedcom_setting_fk1` (gedcom_id) REFERENCES `##gedcom` (gedcom_id) /* ON DELETE CASCADE */" . ") COLLATE utf8_unicode_ci ENGINE=InnoDB");
     Database::exec("CREATE TABLE IF NOT EXISTS `##user` (" . " user_id   INTEGER AUTO_INCREMENT NOT NULL," . " user_name VARCHAR(32)            NOT NULL," . " real_name VARCHAR(64)            NOT NULL," . " email     VARCHAR(64)            NOT NULL," . " password  VARCHAR(128)           NOT NULL," . " PRIMARY KEY              (user_id)," . " UNIQUE  KEY `##user_ix1` (user_name)," . " UNIQUE  KEY `##user_ix2` (email)" . ") COLLATE utf8_unicode_ci ENGINE=InnoDB");
     Database::exec("CREATE TABLE IF NOT EXISTS `##user_setting` (" . " user_id       INTEGER      NOT NULL," . " setting_name  VARCHAR(32)  NOT NULL," . " setting_value VARCHAR(255) NOT NULL," . " PRIMARY KEY                      (user_id, setting_name)," . " FOREIGN KEY `##user_setting_fk1` (user_id) REFERENCES `##user` (user_id) /* ON DELETE CASCADE */" . ") COLLATE utf8_unicode_ci ENGINE=InnoDB");
     Database::exec("CREATE TABLE IF NOT EXISTS `##user_gedcom_setting` (" . " user_id       INTEGER      NOT NULL," . " gedcom_id     INTEGER      NOT NULL," . " setting_name  VARCHAR(32)  NOT NULL," . " setting_value VARCHAR(255) NOT NULL," . " PRIMARY KEY                             (user_id, gedcom_id, setting_name)," . " FOREIGN KEY `##user_gedcom_setting_fk1` (user_id)   REFERENCES `##user` (user_id) /* ON DELETE CASCADE */," . " FOREIGN KEY `##user_gedcom_setting_fk2` (gedcom_id) REFERENCES `##gedcom` (gedcom_id) /* ON DELETE CASCADE */" . ") COLLATE utf8_unicode_ci ENGINE=InnoDB");
     Database::exec("CREATE TABLE IF NOT EXISTS `##log` (" . " log_id      INTEGER AUTO_INCREMENT NOT NULL," . " log_time    TIMESTAMP    NOT NULL DEFAULT CURRENT_TIMESTAMP," . " log_type    ENUM('auth', 'config', 'debug', 'edit', 'error', 'media', 'search') NOT NULL," . " log_message TEXT         NOT NULL," . " ip_address  VARCHAR(40)  NOT NULL," . " user_id     INTEGER          NULL," . " gedcom_id   INTEGER          NULL," . " PRIMARY KEY             (log_id)," . "         KEY `##log_ix1` (log_time)," . "         KEY `##log_ix2` (log_type)," . "         KEY `##log_ix3` (ip_address)," . " FOREIGN KEY `##log_fk1` (user_id)   REFERENCES `##user`(user_id) /* ON DELETE SET NULL */," . " FOREIGN KEY `##log_fk2` (gedcom_id) REFERENCES `##gedcom` (gedcom_id) /* ON DELETE SET NULL */" . ") COLLATE utf8_unicode_ci ENGINE=InnoDB");
     Database::exec("CREATE TABLE IF NOT EXISTS `##change` (" . " change_id      INTEGER AUTO_INCREMENT                  NOT NULL," . " change_time    TIMESTAMP                               NOT NULL DEFAULT CURRENT_TIMESTAMP," . " status         ENUM('accepted', 'pending', 'rejected') NOT NULL DEFAULT 'pending'," . " gedcom_id      INTEGER                                 NOT NULL," . " xref           VARCHAR(20)                             NOT NULL," . " old_gedcom     MEDIUMTEXT                              NOT NULL," . " new_gedcom     MEDIUMTEXT                              NOT NULL," . " user_id        INTEGER                                 NOT NULL," . " PRIMARY KEY                (change_id)," . "         KEY `##change_ix1` (gedcom_id, status, xref)," . " FOREIGN KEY `##change_fk1` (user_id)   REFERENCES `##user` (user_id) /* ON DELETE RESTRICT */," . " FOREIGN KEY `##change_fk2` (gedcom_id) REFERENCES `##gedcom` (gedcom_id) /* ON DELETE CASCADE */" . ") COLLATE utf8_unicode_ci ENGINE=InnoDB");
     Database::exec("CREATE TABLE IF NOT EXISTS `##message` (" . " message_id INTEGER AUTO_INCREMENT NOT NULL," . " sender     VARCHAR(64)            NOT NULL," . " ip_address VARCHAR(40)            NOT NULL," . " user_id    INTEGER                NOT NULL," . " subject    VARCHAR(255)           NOT NULL," . " body       TEXT                   NOT NULL," . " created    TIMESTAMP              NOT NULL DEFAULT CURRENT_TIMESTAMP," . " PRIMARY KEY                 (message_id)," . " FOREIGN KEY `##message_fk1` (user_id)   REFERENCES `##user` (user_id) /* ON DELETE RESTRICT */" . ") COLLATE utf8_unicode_ci ENGINE=InnoDB");
     Database::exec("CREATE TABLE IF NOT EXISTS `##default_resn` (" . " default_resn_id INTEGER AUTO_INCREMENT                             NOT NULL," . " gedcom_id       INTEGER                                            NOT NULL," . " xref            VARCHAR(20)                                            NULL," . " tag_type        VARCHAR(15)                                            NULL," . " resn            ENUM ('none', 'privacy', 'confidential', 'hidden') NOT NULL," . " comment         VARCHAR(255)                                           NULL," . " updated         TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP," . " PRIMARY KEY                      (default_resn_id)," . " UNIQUE  KEY `##default_resn_ix1` (gedcom_id, xref, tag_type)," . " FOREIGN KEY `##default_resn_fk1` (gedcom_id)  REFERENCES `##gedcom` (gedcom_id)" . ") ENGINE=InnoDB COLLATE=utf8_unicode_ci");
     Database::exec("CREATE TABLE IF NOT EXISTS `##individuals` (" . " i_id     VARCHAR(20)         NOT NULL," . " i_file   INTEGER             NOT NULL," . " i_rin    VARCHAR(20)         NOT NULL," . " i_sex    ENUM('U', 'M', 'F') NOT NULL," . " i_gedcom MEDIUMTEXT          NOT NULL," . " PRIMARY KEY                     (i_id, i_file)," . " UNIQUE  KEY `##individuals_ix1` (i_file, i_id)" . ") COLLATE utf8_unicode_ci ENGINE=InnoDB");
     Database::exec("CREATE TABLE IF NOT EXISTS `##families` (" . " f_id      VARCHAR(20)  NOT NULL," . " f_file    INTEGER      NOT NULL," . " f_husb    VARCHAR(20)      NULL," . " f_wife    VARCHAR(20)      NULL," . " f_gedcom  MEDIUMTEXT   NOT NULL," . " f_numchil INTEGER      NOT NULL," . " PRIMARY KEY                  (f_id, f_file)," . " UNIQUE  KEY `##families_ix1` (f_file, f_id)," . "         KEY `##families_ix2` (f_husb)," . "         KEY `##families_ix3` (f_wife)" . ") COLLATE utf8_unicode_ci ENGINE=InnoDB");
     Database::exec("CREATE TABLE IF NOT EXISTS `##places` (" . " p_id          INTEGER AUTO_INCREMENT NOT NULL," . " p_place       VARCHAR(150)               NULL," . " p_parent_id   INTEGER                    NULL," . " p_file        INTEGER               NOT  NULL," . " p_std_soundex TEXT                       NULL," . " p_dm_soundex  TEXT                       NULL," . " PRIMARY KEY                (p_id)," . "         KEY `##places_ix1` (p_file, p_place)," . " UNIQUE  KEY `##places_ix2` (p_parent_id, p_file, p_place)" . ") COLLATE utf8_unicode_ci ENGINE=InnoDB");
     Database::exec("CREATE TABLE IF NOT EXISTS `##placelinks` (" . " pl_p_id INTEGER NOT NULL," . " pl_gid  VARCHAR(20)  NOT NULL," . " pl_file INTEGER  NOT NULL," . " PRIMARY KEY                    (pl_p_id, pl_gid, pl_file)," . "         KEY `##placelinks_ix1` (pl_p_id)," . "         KEY `##placelinks_ix2` (pl_gid)," . "         KEY `##placelinks_ix3` (pl_file)" . ") COLLATE utf8_unicode_ci ENGINE=InnoDB");
     Database::exec("CREATE TABLE IF NOT EXISTS `##dates` (" . " d_day        TINYINT     NOT NULL," . " d_month      CHAR(5)         NULL," . " d_mon        TINYINT     NOT NULL," . " d_year       SMALLINT    NOT NULL," . " d_julianday1 MEDIUMINT   NOT NULL," . " d_julianday2 MEDIUMINT   NOT NULL," . " d_fact       VARCHAR(15) NOT NULL," . " d_gid        VARCHAR(20) NOT NULL," . " d_file       INTEGER     NOT NULL," . " d_type       ENUM ('@#DGREGORIAN@', '@#DJULIAN@', '@#DHEBREW@', '@#DFRENCH R@', '@#DHIJRI@', '@#DROMAN@', '@#DJALALI@') NOT NULL," . " KEY `##dates_ix1` (d_day)," . " KEY `##dates_ix2` (d_month)," . " KEY `##dates_ix3` (d_mon)," . " KEY `##dates_ix4` (d_year)," . " KEY `##dates_ix5` (d_julianday1)," . " KEY `##dates_ix6` (d_julianday2)," . " KEY `##dates_ix7` (d_gid)," . " KEY `##dates_ix8` (d_file)," . " KEY `##dates_ix9` (d_type)," . " KEY `##dates_ix10` (d_fact, d_gid)" . ") COLLATE utf8_unicode_ci ENGINE=InnoDB");
     Database::exec("CREATE TABLE IF NOT EXISTS `##media` (" . " m_id       VARCHAR(20)            NOT NULL," . " m_ext      VARCHAR(6)                 NULL," . " m_type     VARCHAR(20)                NULL," . " m_titl     VARCHAR(255)               NULL," . " m_filename VARCHAR(512)               NULL," . " m_file     INTEGER                NOT NULL," . " m_gedcom   MEDIUMTEXT                 NULL," . " PRIMARY KEY               (m_file, m_id)," . " UNIQUE  KEY `##media_ix1` (m_id, m_file)," . "         KEY `##media_ix2` (m_ext, m_type)," . "         KEY `##media_ix3` (m_titl)" . ") COLLATE utf8_unicode_ci ENGINE=InnoDB");
     Database::exec("CREATE TABLE IF NOT EXISTS `##next_id` (" . " gedcom_id   INTEGER     NOT NULL," . " record_type VARCHAR(15) NOT NULL," . " next_id     DECIMAL(20) NOT NULL," . " PRIMARY KEY                 (gedcom_id, record_type)," . " FOREIGN KEY `##next_id_fk1` (gedcom_id) REFERENCES `##gedcom` (gedcom_id) /* ON DELETE CASCADE */" . ") COLLATE utf8_unicode_ci ENGINE=InnoDB");
     Database::exec("CREATE TABLE IF NOT EXISTS `##other` (" . " o_id     VARCHAR(20) NOT NULL," . " o_file   INTEGER     NOT NULL," . " o_type   VARCHAR(15) NOT NULL," . " o_gedcom MEDIUMTEXT      NULL," . " PRIMARY KEY               (o_id, o_file)," . " UNIQUE  KEY `##other_ix1` (o_file, o_id)" . ") COLLATE utf8_unicode_ci ENGINE=InnoDB");
     Database::exec("CREATE TABLE IF NOT EXISTS `##sources` (" . " s_id     VARCHAR(20)    NOT NULL," . " s_file   INTEGER        NOT NULL," . " s_name   VARCHAR(255)   NOT NULL," . " s_gedcom MEDIUMTEXT     NOT NULL," . " PRIMARY KEY                 (s_id, s_file)," . " UNIQUE  KEY `##sources_ix1` (s_file, s_id)," . "         KEY `##sources_ix2` (s_name)" . ") COLLATE utf8_unicode_ci ENGINE=InnoDB");
     Database::exec("CREATE TABLE IF NOT EXISTS `##link` (" . " l_file    INTEGER     NOT NULL," . " l_from    VARCHAR(20) NOT NULL," . " l_type    VARCHAR(15) NOT NULL," . " l_to      VARCHAR(20) NOT NULL," . " PRIMARY KEY              (l_from, l_file, l_type, l_to)," . " UNIQUE  KEY `##link_ix1` (l_to, l_file, l_type, l_from)" . ") COLLATE utf8_unicode_ci ENGINE=InnoDB");
     Database::exec("CREATE TABLE IF NOT EXISTS `##name` (" . " n_file             INTEGER      NOT NULL," . " n_id               VARCHAR(20)  NOT NULL," . " n_num              INTEGER      NOT NULL," . " n_type             VARCHAR(15)  NOT NULL," . " n_sort             VARCHAR(255) NOT NULL," . " n_full             VARCHAR(255) NOT NULL," . " n_surname          VARCHAR(255)     NULL," . " n_surn             VARCHAR(255)     NULL," . " n_givn             VARCHAR(255)     NULL," . " n_soundex_givn_std VARCHAR(255)     NULL," . " n_soundex_surn_std VARCHAR(255)     NULL," . " n_soundex_givn_dm  VARCHAR(255)     NULL," . " n_soundex_surn_dm  VARCHAR(255)     NULL," . " PRIMARY KEY              (n_id, n_file, n_num)," . "         KEY `##name_ix1` (n_full, n_id, n_file)," . "         KEY `##name_ix2` (n_surn, n_file, n_type, n_id)," . "         KEY `##name_ix3` (n_givn, n_file, n_type, n_id)" . ") COLLATE utf8_unicode_ci ENGINE=InnoDB");
     Database::exec("CREATE TABLE IF NOT EXISTS `##module` (" . " module_name   VARCHAR(32)                 NOT NULL," . " status        ENUM('enabled', 'disabled') NOT NULL DEFAULT 'enabled'," . " tab_order     INTEGER                         NULL, " . " menu_order    INTEGER                         NULL, " . " sidebar_order INTEGER                         NULL," . " PRIMARY KEY (module_name)" . ") COLLATE utf8_unicode_ci ENGINE=InnoDB");
     Database::exec("CREATE TABLE IF NOT EXISTS `##module_setting` (" . " module_name   VARCHAR(32) NOT NULL," . " setting_name  VARCHAR(32) NOT NULL," . " setting_value MEDIUMTEXT  NOT NULL," . " PRIMARY KEY                        (module_name, setting_name)," . " FOREIGN KEY `##module_setting_fk1` (module_name) REFERENCES `##module` (module_name) /* ON DELETE CASCADE */" . ") COLLATE utf8_unicode_ci ENGINE=InnoDB");
     Database::exec("CREATE TABLE IF NOT EXISTS `##module_privacy` (" . " module_name   VARCHAR(32) NOT NULL," . " gedcom_id     INTEGER     NOT NULL," . " component     ENUM('block', 'chart', 'menu', 'report', 'sidebar', 'tab', 'theme') NOT NULL," . " access_level  TINYINT     NOT NULL," . " PRIMARY KEY                        (module_name, gedcom_id, component)," . " FOREIGN KEY `##module_privacy_fk1` (module_name) REFERENCES `##module` (module_name) /* ON DELETE CASCADE */," . " FOREIGN KEY `##module_privacy_fk2` (gedcom_id)   REFERENCES `##gedcom` (gedcom_id)   /* ON DELETE CASCADE */" . ") COLLATE utf8_unicode_ci ENGINE=InnoDB");
     Database::exec("CREATE TABLE IF NOT EXISTS `##block` (" . " block_id    INTEGER AUTO_INCREMENT NOT NULL," . " gedcom_id   INTEGER                    NULL," . " user_id     INTEGER                    NULL," . " xref        VARCHAR(20)                NULL," . " location    ENUM('main', 'side')       NULL," . " block_order INTEGER                NOT NULL," . " module_name VARCHAR(32)            NOT NULL," . " PRIMARY KEY               (block_id)," . " FOREIGN KEY `##block_fk1` (gedcom_id)   REFERENCES `##gedcom` (gedcom_id),  /* ON DELETE CASCADE */" . " FOREIGN KEY `##block_fk2` (user_id)     REFERENCES `##user`   (user_id),    /* ON DELETE CASCADE */" . " FOREIGN KEY `##block_fk3` (module_name) REFERENCES `##module` (module_name) /* ON DELETE CASCADE */" . ") COLLATE utf8_unicode_ci ENGINE=InnoDB");
     Database::exec("CREATE TABLE IF NOT EXISTS `##block_setting` (" . " block_id      INTEGER     NOT NULL," . " setting_name  VARCHAR(32) NOT NULL," . " setting_value TEXT        NOT NULL," . " PRIMARY KEY                       (block_id, setting_name)," . " FOREIGN KEY `##block_setting_fk1` (block_id) REFERENCES `##block` (block_id) /* ON DELETE CASCADE */" . ") COLLATE utf8_unicode_ci ENGINE=InnoDB");
     Database::exec("CREATE TABLE IF NOT EXISTS `##hit_counter` (" . " gedcom_id      INTEGER     NOT NULL," . " page_name      VARCHAR(32) NOT NULL," . " page_parameter VARCHAR(32) NOT NULL," . " page_count     INTEGER     NOT NULL," . " PRIMARY KEY                     (gedcom_id, page_name, page_parameter)," . " FOREIGN KEY `##hit_counter_fk1` (gedcom_id) REFERENCES `##gedcom` (gedcom_id) /* ON DELETE CASCADE */" . ") COLLATE utf8_unicode_ci ENGINE=InnoDB");
     // Set the default site preferences
     Site::setPreference('INDEX_DIRECTORY', 'data/');
     Site::setPreference('USE_REGISTRATION_MODULE', '1');
     Site::setPreference('ALLOW_USER_THEMES', '1');
     Site::setPreference('ALLOW_CHANGE_GEDCOM', '1');
     Site::setPreference('SESSION_TIME', '7200');
     Site::setPreference('SMTP_ACTIVE', 'internal');
     Site::setPreference('SMTP_HOST', 'localhost');
     Site::setPreference('SMTP_PORT', '25');
     Site::setPreference('SMTP_AUTH', '1');
     Site::setPreference('SMTP_AUTH_USER', '');
     Site::setPreference('SMTP_AUTH_PASS', '');
     Site::setPreference('SMTP_SSL', 'none');
     Site::setPreference('SMTP_HELO', $_SERVER['SERVER_NAME']);
     Site::setPreference('SMTP_FROM_NAME', $_SERVER['SERVER_NAME']);
     // Search for all installed modules, and enable them.
     Module::getInstalledModules('enabled');
 }
Esempio n. 29
0
 /**
  * Upgrade to to the next version
  */
 public function upgrade()
 {
     // Originally migrated from PhpGedView, but never used.
     Database::exec("DROP TABLE IF EXISTS `##ip_address`");
     // No longer used
     Database::exec("DELETE FROM `##user_setting` WHERE setting_name IN ('editaccount')");
     Database::exec("DELETE FROM `##gedcom_setting` WHERE setting_name IN ('SHOW_STATS')");
     Database::exec("DELETE FROM `##site_setting` WHERE setting_name IN ('REQUIRE_ADMIN_AUTH_REGISTRATION')");
     // https://bugs.launchpad.net/webtrees/+bug/1405672
     Database::exec("UPDATE `##site_access_rule` SET user_agent_pattern = 'Mozilla/5.0 (% Konqueror/%'" . " WHERE user_agent_pattern='Mozilla/5.0 (compatible; Konqueror/%'");
     // Embedded variables are based on function names - which were renamed for PSR2
     Database::exec("UPDATE `##block_setting` " . " JOIN `##block` USING (block_id)" . " SET setting_value = REPLACE(setting_value, '#WT_VERSION#', '#webtreesVersion#')" . " WHERE setting_name = 'html' AND module_name = 'html'");
     Database::exec("UPDATE `##block_setting` " . " JOIN `##block` USING (block_id)" . " SET setting_value = REPLACE(setting_value, '#browserTime24#', '#browserTime#')" . " WHERE setting_name = 'html' AND module_name = 'html'");
     // Language settings have changed from locale (en_GB) to language tag (en-GB)
     Database::exec("UPDATE `##gedcom_setting` SET setting_value = REPLACE(setting_value, '_', '-') WHERE setting_name = 'language'");
     Database::exec("UPDATE `##site_setting` SET setting_value = REPLACE(setting_value, '_', '-') WHERE setting_name = 'language'");
     Database::exec("UPDATE `##user_setting` SET setting_value = REPLACE(setting_value, '_', '-') WHERE setting_name = 'language'");
     Database::exec("UPDATE `##block_setting` SET setting_value = REPLACE(setting_value, '_', '-') WHERE setting_name = 'languages'");
 }
Esempio n. 30
0
 /**
  * Upgrade to to the next version
  */
 public function upgrade()
 {
     // Remove tables/columns relating to remote linking
     try {
         Database::exec("DROP TABLE `##remotelinks`");
     } catch (PDOException $ex) {
         // already been done?
     }
     try {
         Database::exec("ALTER TABLE `##sources` DROP INDEX ix2");
     } catch (PDOException $ex) {
         // already been done?
     }
     try {
         Database::exec("ALTER TABLE `##sources` DROP COLUMN s_dbid");
     } catch (PDOException $ex) {
         // already been done?
     }
 }