summaryrefslogtreecommitdiff
path: root/admin_site_upgrade.php
diff options
context:
space:
mode:
Diffstat (limited to 'admin_site_upgrade.php')
-rw-r--r--admin_site_upgrade.php17
1 files changed, 15 insertions, 2 deletions
diff --git a/admin_site_upgrade.php b/admin_site_upgrade.php
index 868bb6610f..62fea56db2 100644
--- a/admin_site_upgrade.php
+++ b/admin_site_upgrade.php
@@ -36,7 +36,7 @@ $latest_version_html = '<span dir="ltr">' . $latest_version . '</span>';
$download_url_html = '<b dir="auto"><a href="' . WT_Filter::escapeHtml($download_url) . '">' . WT_Filter::escapeHtml($download_url) . '</a></b>';
// Show a friendly message while the site is being upgraded
-$lock_file = __DIR__ . DIRECTORY_SEPARATOR . 'data' . DIRECTORY_SEPARATOR . 'site-offline.txt';
+$lock_file = __DIR__ . DIRECTORY_SEPARATOR . 'data' . DIRECTORY_SEPARATOR . 'offline.txt';
$lock_file_html = '<span dir="ltr">' . WT_Filter::escapeHtml($lock_file) . '</span>';
$lock_file_text = WT_I18N::translate('This site is being upgraded. Try again in a few minutes.') . PHP_EOL . format_timestamp(WT_TIMESTAMP) . WT_I18N::translate('UTC');
@@ -281,6 +281,7 @@ echo '</li>'; flush();
echo '<li>', /* I18N: The system is about to [...] */ WT_I18N::translate('Export all family trees to GEDCOM files…');
foreach (WT_Tree::getAll() as $tree) {
+ reset_timeout();
$filename = WT_DATA_DIR . $tree->tree_name . date('-Y-m-d') . '.ged';
if ($tree->exportGedcom($filename)) {
echo '<br>', WT_I18N::translate('Family tree exported to %s.', '<span dir="ltr">' . $filename . '</span>'), $icon_success;
@@ -301,6 +302,7 @@ echo '<li>', /* I18N: The system is about to [...]; %s is a URL. */ WT_I18N::tra
$zip_file = WT_DATA_DIR . basename($download_url);
$zip_dir = WT_DATA_DIR . basename($download_url, '.zip');
$zip_stream = fopen($zip_file, 'w');
+reset_timeout();
$start_time = microtime(true);
WT_File::fetchUrl($download_url, $zip_stream);
$end_time = microtime(true);
@@ -341,6 +343,7 @@ if (!is_array($res) || $res['status'] != 'ok') {
$num_files = $res['nb'];
+reset_timeout();
$start_time = microtime(true);
$res = $archive->extract(
PCLZIP_OPT_PATH, $zip_dir,
@@ -376,8 +379,9 @@ echo '</li>'; flush();
echo '<li>', WT_I18N::translate('Check file permissions…');
+reset_timeout();
$iterator = new RecursiveDirectoryIterator($zip_dir);
-$iterator->setFlags(RecursiveDirectoryIterator::SKIP_DOTS);
+//$iterator->setFlags(RecursiveDirectoryIterator::SKIP_DOTS);
foreach (new RecursiveIteratorIterator($iterator) as $file) {
$file = WT_ROOT . substr($file, strlen($zip_dir) + 1);
if (file_exists($file) && (!is_readable($file) || !is_writable($file))) {
@@ -421,6 +425,7 @@ echo '<li>', /* I18N: The system is about to [...] */ WT_I18N::translate('Copy f
@copy('library/WT/Gedcom/Code/Rela.php', 'library/WT/Gedcom/Code/Rela' . date('-Y-m-d') . '.php');
@copy('library/WT/Gedcom/Tag.php', 'library/WT/Gedcom/Tag' . date('-Y-m-d') . '.php');
+reset_timeout();
$start_time = microtime(true);
$res = $archive->extract(
PCLZIP_OPT_PATH, WT_ROOT,
@@ -465,6 +470,7 @@ echo '</li>'; flush();
echo '<li>', /* I18N: The system is about to [...] */ WT_I18N::translate('Delete temporary files…');
+reset_timeout();
if (WT_File::delete($zip_dir)) {
echo '<br>', WT_I18N::translate('The folder %s was deleted.', '<span dir="auto">' . $zip_dir . '</span>'), $icon_success;
} else {
@@ -481,3 +487,10 @@ echo '</li>';
echo '</ul>';
echo '<p>', WT_I18N::translate('The upgrade is complete.'), '</p>';
+
+// Reset the time limit, as timeouts in this script could leave the upgrade incomplete.
+function reset_timeout() {
+ if (!ini_get('safe_mode') && strpos(ini_get('disable_functions'), 'set_time_limit')===false) {
+ set_time_limit(ini_get('max_execution_time'));
+ }
+}