From 7cbddafd5f88fc60b02dbfd18b3f65db573243a5 Mon Sep 17 00:00:00 2001 From: Marcin Haba Date: Sat, 6 Feb 2021 21:29:05 +0100 Subject: [PATCH] baculum: Improve updating asset files after upgrade --- .../protected/Common/Class/BAssetManager.php | 94 +++++++++++++++++++ gui/baculum/protected/application.xml | 1 + 2 files changed, 95 insertions(+) create mode 100644 gui/baculum/protected/Common/Class/BAssetManager.php diff --git a/gui/baculum/protected/Common/Class/BAssetManager.php b/gui/baculum/protected/Common/Class/BAssetManager.php new file mode 100644 index 000000000..1457771cb --- /dev/null +++ b/gui/baculum/protected/Common/Class/BAssetManager.php @@ -0,0 +1,94 @@ + original file MTIME + * + * and in real the original file MTIME has newer content than that one in + * asset directory. It is because copy() changes MTIME of destination file. + * + * @category Client Script + * @package Baculum Common + */ +class BAssetManager extends TAssetManager { + + protected function copyFile($src, $dst) { + if (!is_dir($dst)) { + @mkdir($dst); + @chmod($dst, PRADO_CHMOD); + } + $dst_file = $dst . DIRECTORY_SEPARATOR . basename($src); + $src_mtime = @filemtime($src); + if (@filemtime($dst_file) !== $src_mtime) { + @copy($src, $dst_file); + if ($src_mtime !== false) { + @touch($dst_file, $src_mtime); + } + } + } + + public function copyDirectory($src, $dst) { + if (!is_dir($dst)) { + @mkdir($dst); + @chmod($dst, PRADO_CHMOD); + } + if ($folder = @opendir($src)) { + while ($file = @readdir($folder)) { + $src_file = $src . DIRECTORY_SEPARATOR . $file; + $dst_file = $dst . DIRECTORY_SEPARATOR . $file; + if ($file === '.' || $file === '..') { + continue; + } elseif (is_file($src_file)) { + $src_mtime = @filemtime($src_file); + if (@filemtime($dst_file) !== $src_mtime) { + @copy($src_file, $dst_file); + if ($src_mtime !== false) { + @touch($dst_file, $src_mtime); + } + @chmod($dst_file, PRADO_CHMOD); + } + } else { + $this->copyDirectory($src_file, $dst_file); + } + } + closedir($folder); + } else { + throw new TInvalidDataValueException('assetmanager_source_directory_invalid', $src); + } + } +} +?> diff --git a/gui/baculum/protected/application.xml b/gui/baculum/protected/application.xml index ff55430f3..15ffd6680 100644 --- a/gui/baculum/protected/application.xml +++ b/gui/baculum/protected/application.xml @@ -8,6 +8,7 @@ + -- 2.47.3