1a3dc3edaSGreg Roach<?php 2a3dc3edaSGreg Roach/** 3a3dc3edaSGreg Roach * webtrees: online genealogy 48fcd0d32SGreg Roach * Copyright (C) 2019 webtrees development team 5a3dc3edaSGreg Roach * This program is free software: you can redistribute it and/or modify 6a3dc3edaSGreg Roach * it under the terms of the GNU General Public License as published by 7a3dc3edaSGreg Roach * the Free Software Foundation, either version 3 of the License, or 8a3dc3edaSGreg Roach * (at your option) any later version. 9a3dc3edaSGreg Roach * This program is distributed in the hope that it will be useful, 10a3dc3edaSGreg Roach * but WITHOUT ANY WARRANTY; without even the implied warranty of 11a3dc3edaSGreg Roach * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12a3dc3edaSGreg Roach * GNU General Public License for more details. 13a3dc3edaSGreg Roach * You should have received a copy of the GNU General Public License 14a3dc3edaSGreg Roach * along with this program. If not, see <http://www.gnu.org/licenses/>. 15a3dc3edaSGreg Roach */ 16e7f56f2aSGreg Roachdeclare(strict_types=1); 17e7f56f2aSGreg Roach 18a3dc3edaSGreg Roachnamespace Fisharebest\Webtrees\Services; 19a3dc3edaSGreg Roach 20a3dc3edaSGreg Roachuse Exception; 21e5c19fcdSGreg Roachuse Illuminate\Database\Capsule\Manager as DB; 22a3dc3edaSGreg Roachuse League\Flysystem\Filesystem; 23a3dc3edaSGreg Roach 24a3dc3edaSGreg Roach/** 25a3dc3edaSGreg Roach * Clean up old data, files and folders. 26a3dc3edaSGreg Roach */ 27a3dc3edaSGreg Roachclass HousekeepingService 28a3dc3edaSGreg Roach{ 29a3dc3edaSGreg Roach // This is a list of old files and directories, from earlier versions of webtrees. 30a3dc3edaSGreg Roach // git diff 1.7.9..master --name-status | grep ^D 3116d6367aSGreg Roach private const OLD_PATHS = [ 32a3dc3edaSGreg Roach // Removed in 1.0.2 33a3dc3edaSGreg Roach 'language/en.mo', 34a3dc3edaSGreg Roach // Removed in 1.0.3 35a3dc3edaSGreg Roach 'themechange.php', 36a3dc3edaSGreg Roach // Removed in 1.1.0 37a3dc3edaSGreg Roach 'addremotelink.php', 38a3dc3edaSGreg Roach 'addsearchlink.php', 39a3dc3edaSGreg Roach 'client.php', 40a3dc3edaSGreg Roach 'dir_editor.php', 41a3dc3edaSGreg Roach 'editconfig_gedcom.php', 42a3dc3edaSGreg Roach 'editgedcoms.php', 43a3dc3edaSGreg Roach 'edit_merge.php', 44a3dc3edaSGreg Roach 'edit_news.php', 45a3dc3edaSGreg Roach 'genservice.php', 46a3dc3edaSGreg Roach 'logs.php', 47a3dc3edaSGreg Roach 'manageservers.php', 48a3dc3edaSGreg Roach 'media.php', 49a3dc3edaSGreg Roach 'module_admin.php', 50a3dc3edaSGreg Roach //WT_ROOT.'modules', // Do not delete - users may have stored custom modules/data here 51a3dc3edaSGreg Roach 'opensearch.php', 52a3dc3edaSGreg Roach 'PEAR.php', 53a3dc3edaSGreg Roach 'pgv_to_wt.php', 54a3dc3edaSGreg Roach 'places', 55a3dc3edaSGreg Roach //WT_ROOT.'robots.txt', // Do not delete this - it may contain user data 56a3dc3edaSGreg Roach 'serviceClientTest.php', 57a3dc3edaSGreg Roach 'siteconfig.php', 58a3dc3edaSGreg Roach 'SOAP', 59a3dc3edaSGreg Roach 'themes/clouds/mozilla.css', 60a3dc3edaSGreg Roach 'themes/clouds/netscape.css', 61a3dc3edaSGreg Roach 'themes/colors/mozilla.css', 62a3dc3edaSGreg Roach 'themes/colors/netscape.css', 63a3dc3edaSGreg Roach 'themes/fab/mozilla.css', 64a3dc3edaSGreg Roach 'themes/fab/netscape.css', 65a3dc3edaSGreg Roach 'themes/minimal/mozilla.css', 66a3dc3edaSGreg Roach 'themes/minimal/netscape.css', 67a3dc3edaSGreg Roach 'themes/webtrees/mozilla.css', 68a3dc3edaSGreg Roach 'themes/webtrees/netscape.css', 69a3dc3edaSGreg Roach 'themes/webtrees/style_rtl.css', 70a3dc3edaSGreg Roach 'themes/xenea/mozilla.css', 71a3dc3edaSGreg Roach 'themes/xenea/netscape.css', 72a3dc3edaSGreg Roach 'uploadmedia.php', 73a3dc3edaSGreg Roach 'useradmin.php', 74a3dc3edaSGreg Roach 'webservice', 75a3dc3edaSGreg Roach 'wtinfo.php', 76a3dc3edaSGreg Roach // Removed in 1.1.2 77a3dc3edaSGreg Roach 'treenav.php', 78a3dc3edaSGreg Roach // Removed in 1.2.0 79a3dc3edaSGreg Roach 'themes/clouds/jquery', 80a3dc3edaSGreg Roach 'themes/colors/jquery', 81a3dc3edaSGreg Roach 'themes/fab/jquery', 82a3dc3edaSGreg Roach 'themes/minimal/jquery', 83a3dc3edaSGreg Roach 'themes/webtrees/jquery', 84a3dc3edaSGreg Roach 'themes/xenea/jquery', 85a3dc3edaSGreg Roach // Removed in 1.2.2 86a3dc3edaSGreg Roach 'themes/clouds/chrome.css', 87a3dc3edaSGreg Roach 'themes/clouds/opera.css', 88a3dc3edaSGreg Roach 'themes/clouds/print.css', 89a3dc3edaSGreg Roach 'themes/clouds/style_rtl.css', 90a3dc3edaSGreg Roach 'themes/colors/chrome.css', 91a3dc3edaSGreg Roach 'themes/colors/opera.css', 92a3dc3edaSGreg Roach 'themes/colors/print.css', 93a3dc3edaSGreg Roach 'themes/colors/style_rtl.css', 94a3dc3edaSGreg Roach 'themes/fab/chrome.css', 95a3dc3edaSGreg Roach 'themes/fab/opera.css', 96a3dc3edaSGreg Roach 'themes/minimal/chrome.css', 97a3dc3edaSGreg Roach 'themes/minimal/opera.css', 98a3dc3edaSGreg Roach 'themes/minimal/print.css', 99a3dc3edaSGreg Roach 'themes/minimal/style_rtl.css', 100a3dc3edaSGreg Roach 'themes/xenea/chrome.css', 101a3dc3edaSGreg Roach 'themes/xenea/opera.css', 102a3dc3edaSGreg Roach 'themes/xenea/print.css', 103a3dc3edaSGreg Roach 'themes/xenea/style_rtl.css', 104a3dc3edaSGreg Roach // Removed in 1.2.3 105*49a243cbSGreg Roach 'modules_v2', 106a3dc3edaSGreg Roach // Removed in 1.2.4 107a3dc3edaSGreg Roach 'search_engine.php', 108a3dc3edaSGreg Roach 'themes/clouds/modules.css', 109a3dc3edaSGreg Roach 'themes/colors/modules.css', 110a3dc3edaSGreg Roach 'themes/fab/modules.css', 111a3dc3edaSGreg Roach 'themes/minimal/modules.css', 112a3dc3edaSGreg Roach 'themes/webtrees/modules.css', 113a3dc3edaSGreg Roach 'themes/xenea/modules.css', 114a3dc3edaSGreg Roach // Removed in 1.2.5 115a3dc3edaSGreg Roach 'sidebar.php', 116a3dc3edaSGreg Roach // Removed in 1.2.6 117a3dc3edaSGreg Roach // Removed in 1.2.7 118a3dc3edaSGreg Roach 'login_register.php', 119a3dc3edaSGreg Roach // Removed in 1.3.0 120a3dc3edaSGreg Roach 'admin_site_ipaddress.php', 121a3dc3edaSGreg Roach 'downloadgedcom.php', 122a3dc3edaSGreg Roach 'export_gedcom.php', 123a3dc3edaSGreg Roach 'gedcheck.php', 124a3dc3edaSGreg Roach 'images', 125a3dc3edaSGreg Roach // Removed in 1.3.1 126a3dc3edaSGreg Roach 'imageflush.php', 127*49a243cbSGreg Roach '/lightbox/js/tip_balloon_RTL.js', 128a3dc3edaSGreg Roach // Removed in 1.4.0 129a3dc3edaSGreg Roach 'imageview.php', 130a3dc3edaSGreg Roach 'media/MediaInfo.txt', 131a3dc3edaSGreg Roach 'media/thumbs/ThumbsInfo.txt', 132a3dc3edaSGreg Roach 'themes/webtrees/chrome.css', 133a3dc3edaSGreg Roach // Removed in 1.4.2 134a3dc3edaSGreg Roach 'themes/clouds/jquery-ui-1.10.0', 135a3dc3edaSGreg Roach 'themes/colors/jquery-ui-1.10.0', 136a3dc3edaSGreg Roach 'themes/fab/jquery-ui-1.10.0', 137a3dc3edaSGreg Roach 'themes/minimal/jquery-ui-1.10.0', 138a3dc3edaSGreg Roach 'themes/webtrees/jquery-ui-1.10.0', 139a3dc3edaSGreg Roach 'themes/xenea/jquery-ui-1.10.0', 140a3dc3edaSGreg Roach // Removed in 1.5.0 141a3dc3edaSGreg Roach 'themes/clouds/favicon.png', 142a3dc3edaSGreg Roach 'themes/clouds/images', 143a3dc3edaSGreg Roach 'themes/clouds/msie.css', 144a3dc3edaSGreg Roach 'themes/clouds/style.css', 145a3dc3edaSGreg Roach 'themes/colors/css', 146a3dc3edaSGreg Roach 'themes/colors/favicon.png', 147a3dc3edaSGreg Roach 'themes/colors/images', 148a3dc3edaSGreg Roach 'themes/colors/ipad.css', 149a3dc3edaSGreg Roach 'themes/colors/msie.css', 150a3dc3edaSGreg Roach 'themes/fab/favicon.png', 151a3dc3edaSGreg Roach 'themes/fab/images', 152a3dc3edaSGreg Roach 'themes/fab/msie.css', 153a3dc3edaSGreg Roach 'themes/fab/style.css', 154a3dc3edaSGreg Roach 'themes/minimal/favicon.png', 155a3dc3edaSGreg Roach 'themes/minimal/images', 156a3dc3edaSGreg Roach 'themes/minimal/msie.css', 157a3dc3edaSGreg Roach 'themes/minimal/style.css', 158a3dc3edaSGreg Roach 'themes/webtrees/favicon.png', 159a3dc3edaSGreg Roach 'themes/webtrees/images', 160a3dc3edaSGreg Roach 'themes/webtrees/msie.css', 161a3dc3edaSGreg Roach 'themes/webtrees/style.css', 162a3dc3edaSGreg Roach 'themes/xenea/favicon.png', 163a3dc3edaSGreg Roach 'themes/xenea/images', 164a3dc3edaSGreg Roach 'themes/xenea/msie.css', 165a3dc3edaSGreg Roach 'themes/xenea/style.css', 166a3dc3edaSGreg Roach // Removed in 1.5.1 167a3dc3edaSGreg Roach 'themes/clouds/css-1.5.0', 168a3dc3edaSGreg Roach 'themes/colors/css-1.5.0', 169a3dc3edaSGreg Roach 'themes/fab/css-1.5.0', 170a3dc3edaSGreg Roach 'themes/minimal/css-1.5.0', 171a3dc3edaSGreg Roach 'themes/webtrees/css-1.5.0', 172a3dc3edaSGreg Roach 'themes/xenea/css-1.5.0', 173a3dc3edaSGreg Roach // Removed in 1.5.2 174a3dc3edaSGreg Roach 'themes/clouds/css-1.5.1', 175a3dc3edaSGreg Roach 'themes/colors/css-1.5.1', 176a3dc3edaSGreg Roach 'themes/fab/css-1.5.1', 177a3dc3edaSGreg Roach 'themes/minimal/css-1.5.1', 178a3dc3edaSGreg Roach 'themes/webtrees/css-1.5.1', 179a3dc3edaSGreg Roach 'themes/xenea/css-1.5.1', 180a3dc3edaSGreg Roach // Removed in 1.5.3 181a3dc3edaSGreg Roach 'readme.html', 182a3dc3edaSGreg Roach 'themes/clouds/css-1.5.2', 183a3dc3edaSGreg Roach 'themes/colors/css-1.5.2', 184a3dc3edaSGreg Roach 'themes/fab/css-1.5.2', 185a3dc3edaSGreg Roach 'themes/minimal/css-1.5.2', 186a3dc3edaSGreg Roach 'themes/webtrees/css-1.5.2', 187a3dc3edaSGreg Roach 'themes/xenea/css-1.5.2', 188a3dc3edaSGreg Roach // Removed in 1.6.0 189a3dc3edaSGreg Roach 'downloadbackup.php', 190a3dc3edaSGreg Roach 'site-php-version.php', 191a3dc3edaSGreg Roach 'themes/clouds/css-1.5.3', 192a3dc3edaSGreg Roach 'themes/colors/css-1.5.3', 193a3dc3edaSGreg Roach 'themes/fab/css-1.5.3', 194a3dc3edaSGreg Roach 'themes/minimal/css-1.5.3', 195a3dc3edaSGreg Roach 'themes/webtrees/css-1.5.3', 196a3dc3edaSGreg Roach 'themes/xenea/css-1.5.3', 197a3dc3edaSGreg Roach // Removed in 1.6.2 198a3dc3edaSGreg Roach 'themes/clouds/jquery-ui-1.10.3', 199a3dc3edaSGreg Roach 'themes/colors/css-1.6.0', 200a3dc3edaSGreg Roach 'themes/colors/jquery-ui-1.10.3', 201a3dc3edaSGreg Roach 'themes/fab/css-1.6.0', 202a3dc3edaSGreg Roach 'themes/fab/jquery-ui-1.10.3', 203a3dc3edaSGreg Roach 'themes/minimal/css-1.6.0', 204a3dc3edaSGreg Roach 'themes/minimal/jquery-ui-1.10.3', 205a3dc3edaSGreg Roach 'themes/webtrees/css-1.6.0', 206a3dc3edaSGreg Roach 'themes/webtrees/jquery-ui-1.10.3', 207a3dc3edaSGreg Roach 'themes/xenea/css-1.6.0', 208a3dc3edaSGreg Roach 'themes/xenea/jquery-ui-1.10.3', 209a3dc3edaSGreg Roach // Removed in 1.7.0 210a3dc3edaSGreg Roach 'admin_site_other.php', 211a3dc3edaSGreg Roach 'js', 212a3dc3edaSGreg Roach 'language/en_GB.mo', 213a3dc3edaSGreg Roach // Replaced with en-GB.mo 214a3dc3edaSGreg Roach 'language/en_US.mo', 215a3dc3edaSGreg Roach // Replaced with en-US.mo 216a3dc3edaSGreg Roach 'language/pt_BR.mo', 217a3dc3edaSGreg Roach // Replaced with pt-BR.mo 218a3dc3edaSGreg Roach 'language/zh_CN.mo', 219a3dc3edaSGreg Roach // Replaced with zh-Hans.mo 220a3dc3edaSGreg Roach 'language/extra', 221a3dc3edaSGreg Roach 'library', 222a3dc3edaSGreg Roach 'save.php', 223a3dc3edaSGreg Roach 'themes/clouds/css-1.6.2', 224a3dc3edaSGreg Roach 'themes/clouds/templates', 225a3dc3edaSGreg Roach 'themes/clouds/header.php', 226a3dc3edaSGreg Roach 'themes/clouds/footer.php', 227a3dc3edaSGreg Roach 'themes/colors/css-1.6.2', 228a3dc3edaSGreg Roach 'themes/colors/templates', 229a3dc3edaSGreg Roach 'themes/colors/header.php', 230a3dc3edaSGreg Roach 'themes/colors/footer.php', 231a3dc3edaSGreg Roach 'themes/fab/css-1.6.2', 232a3dc3edaSGreg Roach 'themes/fab/templates', 233a3dc3edaSGreg Roach 'themes/fab/header.php', 234a3dc3edaSGreg Roach 'themes/fab/footer.php', 235a3dc3edaSGreg Roach 'themes/minimal/css-1.6.2', 236a3dc3edaSGreg Roach 'themes/minimal/templates', 237a3dc3edaSGreg Roach 'themes/minimal/header.php', 238a3dc3edaSGreg Roach 'themes/minimal/footer.php', 239a3dc3edaSGreg Roach 'themes/webtrees/css-1.6.2', 240a3dc3edaSGreg Roach 'themes/webtrees/templates', 241a3dc3edaSGreg Roach 'themes/webtrees/header.php', 242a3dc3edaSGreg Roach 'themes/webtrees/footer.php', 243a3dc3edaSGreg Roach 'themes/xenea/css-1.6.2', 244a3dc3edaSGreg Roach 'themes/xenea/templates', 245a3dc3edaSGreg Roach 'themes/xenea/header.php', 246a3dc3edaSGreg Roach 'themes/xenea/footer.php', 247a3dc3edaSGreg Roach // Removed in 1.7.2 248a3dc3edaSGreg Roach 'assets/js-1.7.0', 249a3dc3edaSGreg Roach // Removed in 1.7.4 250a3dc3edaSGreg Roach 'assets/js-1.7.2', 251a3dc3edaSGreg Roach 'themes/clouds/css-1.7.0', 252a3dc3edaSGreg Roach 'themes/colors/css-1.7.0', 253a3dc3edaSGreg Roach 'themes/fab/css-1.7.0', 254a3dc3edaSGreg Roach 'themes/minimal/css-1.7.0', 255a3dc3edaSGreg Roach 'themes/webtrees/css-1.7.0', 256a3dc3edaSGreg Roach 'themes/xenea/css-1.7.0', 257a3dc3edaSGreg Roach // Removed in 1.7.5 258a3dc3edaSGreg Roach 'themes/clouds/css-1.7.4', 259a3dc3edaSGreg Roach 'themes/colors/css-1.7.4', 260a3dc3edaSGreg Roach 'themes/fab/css-1.7.4', 261a3dc3edaSGreg Roach 'themes/minimal/css-1.7.4', 262a3dc3edaSGreg Roach 'themes/webtrees/css-1.7.4', 263a3dc3edaSGreg Roach 'themes/xenea/css-1.7.4', 264a3dc3edaSGreg Roach // Removed in 1.7.7 265a3dc3edaSGreg Roach 'assets/js-1.7.4', 266a3dc3edaSGreg Roach // Removed in 1.7.8 267a3dc3edaSGreg Roach 'themes/clouds/css-1.7.5', 268a3dc3edaSGreg Roach 'themes/colors/css-1.7.5', 269a3dc3edaSGreg Roach 'themes/fab/css-1.7.5', 270a3dc3edaSGreg Roach 'themes/minimal/css-1.7.5', 271a3dc3edaSGreg Roach 'themes/webtrees/css-1.7.5', 272a3dc3edaSGreg Roach 'themes/xenea/css-1.7.5', 273a3dc3edaSGreg Roach // Removed in 2.0.0 274a3dc3edaSGreg Roach 'action.php', 275a3dc3edaSGreg Roach 'addmedia.php', 276a3dc3edaSGreg Roach 'addmin.php', 277a3dc3edaSGreg Roach 'admin_media.php', 278a3dc3edaSGreg Roach 'admin_media_upload.php', 279a3dc3edaSGreg Roach 'admin_module_blocks.php', 280a3dc3edaSGreg Roach 'admin_module_charts.php', 281a3dc3edaSGreg Roach 'admin_module_menus.php', 282a3dc3edaSGreg Roach 'admin_module_reports.php', 283a3dc3edaSGreg Roach 'admin_module_sidebar.php', 284a3dc3edaSGreg Roach 'admin_module_tabs.php', 285a3dc3edaSGreg Roach 'admin_modules.php', 286a3dc3edaSGreg Roach 'admin_pgv_to_wt.php', 287a3dc3edaSGreg Roach 'admin_site_access.php', 288a3dc3edaSGreg Roach 'admin_site_change.php', 289a3dc3edaSGreg Roach 'admin_site_clean.php', 290a3dc3edaSGreg Roach 'admin_site_config.php', 291a3dc3edaSGreg Roach 'admin_site_info.php', 292a3dc3edaSGreg Roach 'admin_site_logs.php', 293a3dc3edaSGreg Roach 'admin_site_merge.php', 294a3dc3edaSGreg Roach 'admin_site_readme.php', 295a3dc3edaSGreg Roach 'admin_site_upgrade.php', 296a3dc3edaSGreg Roach 'admin_trees_check.php', 297a3dc3edaSGreg Roach 'admin_trees_config.php', 298a3dc3edaSGreg Roach 'admin_trees_download.php', 299a3dc3edaSGreg Roach 'admin_trees_duplicates.php', 300a3dc3edaSGreg Roach 'admin_trees_export.php', 301a3dc3edaSGreg Roach 'admin_trees_manage.php', 302a3dc3edaSGreg Roach 'admin_trees_merge.php', 303a3dc3edaSGreg Roach 'admin_trees_places.php', 304a3dc3edaSGreg Roach 'admin_trees_renumber.php', 305a3dc3edaSGreg Roach 'admin_trees_unconnected.php', 306a3dc3edaSGreg Roach 'admin_users.php', 307a3dc3edaSGreg Roach 'admin_users_bulk.php', 308a3dc3edaSGreg Roach 'ancestry.php', 309a3dc3edaSGreg Roach 'app/Controller', 310a3dc3edaSGreg Roach 'app/HitCounter.php', 311a3dc3edaSGreg Roach 'app/Module/ClippingsCart/ClippingsCartController.php', 312a3dc3edaSGreg Roach 'app/Module/FamiliesSidebarModule.php', 313a3dc3edaSGreg Roach 'app/Module/FamilyTreeFavorites', 314a3dc3edaSGreg Roach 'app/Module/GoogleMaps', 315a3dc3edaSGreg Roach 'app/Module/IndividualSidebarModule.php', 316a3dc3edaSGreg Roach 'app/Module/PageMenuModule.php', 31780536c2dSGreg Roach 'app/Query', 318a3dc3edaSGreg Roach 'app/SpecialChars', 319a3dc3edaSGreg Roach 'assets/js-1.7.7', 320a3dc3edaSGreg Roach 'assets/js-1.7.9', 321a3dc3edaSGreg Roach 'autocomplete.php', 322a3dc3edaSGreg Roach 'block_edit.php', 323a3dc3edaSGreg Roach 'branches.php', 324a3dc3edaSGreg Roach 'calendar.php', 325a3dc3edaSGreg Roach 'compact.php', 326a3dc3edaSGreg Roach 'data/html_purifier_cache', 327a3dc3edaSGreg Roach 'descendancy.php', 328a3dc3edaSGreg Roach 'editnews.php', 329a3dc3edaSGreg Roach 'edituser.php', 330a3dc3edaSGreg Roach 'edit_changes.php', 331a3dc3edaSGreg Roach 'edit_interface.php', 332a3dc3edaSGreg Roach 'expand_view.php', 333a3dc3edaSGreg Roach 'familybook.php', 334a3dc3edaSGreg Roach 'famlist.php', 335a3dc3edaSGreg Roach 'fanchart.php', 336a3dc3edaSGreg Roach 'find.php', 337a3dc3edaSGreg Roach 'help_text.php', 338a3dc3edaSGreg Roach 'hourglass.php', 339a3dc3edaSGreg Roach 'hourglass_ajax.php', 340a3dc3edaSGreg Roach 'import.php', 341a3dc3edaSGreg Roach 'includes', 342a3dc3edaSGreg Roach 'index_edit.php', 343a3dc3edaSGreg Roach 'indilist.php', 344a3dc3edaSGreg Roach 'inverselink.php', 345a3dc3edaSGreg Roach 'lifespan.php', 346a3dc3edaSGreg Roach 'login.php', 347a3dc3edaSGreg Roach 'logout.php', 348a3dc3edaSGreg Roach 'mediafirewall.php', 349a3dc3edaSGreg Roach 'medialist.php', 350a3dc3edaSGreg Roach 'message.php', 351a3dc3edaSGreg Roach 'module.php', 352*49a243cbSGreg Roach 'modules_v3', 353a3dc3edaSGreg Roach 'notelist.php', 354a3dc3edaSGreg Roach 'packages', 355a3dc3edaSGreg Roach 'pedigree.php', 356a3dc3edaSGreg Roach 'relationship.php', 357a3dc3edaSGreg Roach 'repolist.php', 358a3dc3edaSGreg Roach 'reportengine.php', 359a3dc3edaSGreg Roach 'search.php', 360a3dc3edaSGreg Roach 'search_advanced.php', 361a3dc3edaSGreg Roach 'site-offline.php', 362a3dc3edaSGreg Roach 'site-unavailable.php', 363a3dc3edaSGreg Roach 'sourcelist.php', 364a3dc3edaSGreg Roach 'statistics.php', 365a3dc3edaSGreg Roach 'statisticsplot.php', 366a3dc3edaSGreg Roach 'themes/_administration', 367a3dc3edaSGreg Roach 'themes/_custom', 368a3dc3edaSGreg Roach 'themes/clouds/css-1.7.8', 369a3dc3edaSGreg Roach 'themes/clouds/jquery-ui-1.11.2', 370a3dc3edaSGreg Roach 'themes/colors/css-1.7.8', 371a3dc3edaSGreg Roach 'themes/colors/jquery-ui-1.11.2', 372a3dc3edaSGreg Roach 'themes/fab/css-1.7.8', 373a3dc3edaSGreg Roach 'themes/fab/jquery-ui-1.11.2', 374a3dc3edaSGreg Roach 'themes/minimal/css-1.7.8', 375a3dc3edaSGreg Roach 'themes/minimal/jquery-ui-1.11.2', 376a3dc3edaSGreg Roach 'themes/webtrees/css-1.7.8', 377a3dc3edaSGreg Roach 'themes/webtrees/jquery-ui-1.11.2', 378a3dc3edaSGreg Roach 'themes/xenea/css-1.7.8', 379a3dc3edaSGreg Roach 'themes/xenea/jquery-ui-1.11.2', 380a3dc3edaSGreg Roach 'timeline.php', 381a3dc3edaSGreg Roach ]; 382a3dc3edaSGreg Roach 383a3dc3edaSGreg Roach /** 384a3dc3edaSGreg Roach * Delete files and folders that belonged to an earlier version of webtrees. 385a3dc3edaSGreg Roach * Return a list of those that we could not delete. 386a3dc3edaSGreg Roach * 387a3dc3edaSGreg Roach * @param Filesystem $filesystem 388a3dc3edaSGreg Roach * 389a3dc3edaSGreg Roach * @return array 390a3dc3edaSGreg Roach */ 391a3dc3edaSGreg Roach public function deleteOldWebtreesFiles(Filesystem $filesystem): array 392a3dc3edaSGreg Roach { 393a3dc3edaSGreg Roach $paths_to_delete = []; 394a3dc3edaSGreg Roach 395a3dc3edaSGreg Roach foreach (self::OLD_PATHS as $path) { 396a3dc3edaSGreg Roach if (!$this->deleteFileOrFolder($filesystem, $path)) { 397a3dc3edaSGreg Roach $paths_to_delete[] = $path; 398a3dc3edaSGreg Roach } 399a3dc3edaSGreg Roach } 400a3dc3edaSGreg Roach 401a3dc3edaSGreg Roach return $paths_to_delete; 402a3dc3edaSGreg Roach } 403a3dc3edaSGreg Roach 404a3dc3edaSGreg Roach /** 405a3dc3edaSGreg Roach * Delete old cache files. 406a3dc3edaSGreg Roach * 407a3dc3edaSGreg Roach * @param Filesystem $filesystem 408a3dc3edaSGreg Roach * @param string $path_to_cache 409a3dc3edaSGreg Roach * @param int $max_age_in_seconds 410c7ff4153SGreg Roach * 411c7ff4153SGreg Roach * @return void 412a3dc3edaSGreg Roach */ 413a3dc3edaSGreg Roach public function deleteOldCacheFiles(Filesystem $filesystem, string $path_to_cache, int $max_age_in_seconds) 414a3dc3edaSGreg Roach { 415a3dc3edaSGreg Roach $list = $filesystem->listContents($path_to_cache, true); 416a3dc3edaSGreg Roach 417a3dc3edaSGreg Roach foreach ($list as $metadata) { 418a3dc3edaSGreg Roach if ($metadata['timestamp'] ?? WT_TIMESTAMP < WT_TIMESTAMP - $max_age_in_seconds) { 419a3dc3edaSGreg Roach $this->deleteFileOrFolder($filesystem, $metadata['path']); 420a3dc3edaSGreg Roach } 421a3dc3edaSGreg Roach } 422a3dc3edaSGreg Roach } 423a3dc3edaSGreg Roach 424a3dc3edaSGreg Roach /** 425a3dc3edaSGreg Roach * @param int $max_age_in_seconds 426c7ff4153SGreg Roach * 427c7ff4153SGreg Roach * @return void 428a3dc3edaSGreg Roach */ 429a3dc3edaSGreg Roach public function deleteOldLogs(int $max_age_in_seconds) 430a3dc3edaSGreg Roach { 431e5c19fcdSGreg Roach DB::table('log') 432e5c19fcdSGreg Roach ->whereIn('log_type', ['error', 'media']) 433e5c19fcdSGreg Roach ->whereRaw('log_time < FROM_UNIXTIME(?)', [WT_TIMESTAMP - $max_age_in_seconds]) 434e5c19fcdSGreg Roach ->delete(); 435a3dc3edaSGreg Roach } 436a3dc3edaSGreg Roach 437a3dc3edaSGreg Roach /** 438a3dc3edaSGreg Roach * @param int $max_age_in_seconds 439c7ff4153SGreg Roach * 440c7ff4153SGreg Roach * @return void 441a3dc3edaSGreg Roach */ 442a3dc3edaSGreg Roach public function deleteOldSessions(int $max_age_in_seconds) 443a3dc3edaSGreg Roach { 444e5c19fcdSGreg Roach DB::table('session') 445e5c19fcdSGreg Roach ->whereRaw('session_time < FROM_UNIXTIME(?)', [WT_TIMESTAMP - $max_age_in_seconds]) 446e5c19fcdSGreg Roach ->delete(); 447a3dc3edaSGreg Roach } 448a3dc3edaSGreg Roach 449a3dc3edaSGreg Roach /** 450a3dc3edaSGreg Roach * Delete a file or folder, if we can. 451a3dc3edaSGreg Roach * 452a3dc3edaSGreg Roach * @param Filesystem $filesystem 453a3dc3edaSGreg Roach * @param string $path 454a3dc3edaSGreg Roach * 455a3dc3edaSGreg Roach * @return bool 456a3dc3edaSGreg Roach */ 457a3dc3edaSGreg Roach private function deleteFileOrFolder(Filesystem $filesystem, string $path): bool 458a3dc3edaSGreg Roach { 459a3dc3edaSGreg Roach if ($filesystem->has($path)) { 460a3dc3edaSGreg Roach try { 461a3dc3edaSGreg Roach $metadata = $filesystem->getMetadata($path); 462a3dc3edaSGreg Roach 463a3dc3edaSGreg Roach if ($metadata['type'] === 'dir') { 464a3dc3edaSGreg Roach $filesystem->deleteDir($path); 465a3dc3edaSGreg Roach } 466a3dc3edaSGreg Roach 467a3dc3edaSGreg Roach if ($metadata['type'] === 'file') { 468a3dc3edaSGreg Roach $filesystem->delete($path); 469a3dc3edaSGreg Roach } 470a3dc3edaSGreg Roach } catch (Exception $ex) { 471a3dc3edaSGreg Roach return false; 472a3dc3edaSGreg Roach } 473a3dc3edaSGreg Roach } 474a3dc3edaSGreg Roach 475a3dc3edaSGreg Roach return true; 476a3dc3edaSGreg Roach } 477a3dc3edaSGreg Roach} 478