From: Vincent Vanwaelscappel Date: Tue, 12 Sep 2023 19:24:14 +0000 (+0200) Subject: wip #6188 @0.5 X-Git-Url: http://git.cubedesigners.com/?a=commitdiff_plain;h=1bee29d521b74f28b3dab9e081605d173fd9bb37;p=cubist_util.git wip #6188 @0.5 --- diff --git a/src/Gzip.php b/src/Gzip.php index f88fed1..2ee66bd 100644 --- a/src/Gzip.php +++ b/src/Gzip.php @@ -9,15 +9,7 @@ class Gzip public static function compressIfNotCompressed($filename) { - if (file_exists($filename) && file_exists($filename . '.gz')) { - if (filemtime($filename) >= filemtime($filename . '.gz')) { - @unlink($filename . '.gz'); - } else { - @unlink($filename); - } - } - - if (file_exists($filename) && !file_exists($filename . '.gz')) { + if (self::file_exists($filename, false) === 'file') { `gzip $filename`; } } @@ -32,25 +24,39 @@ class Gzip } } - public static function file_exists($filename) + public static function file_exists($filename, $returntime = true) { - return file_exists($filename . '.gz') || file_exists($filename); + $gz = $filename . '.gz'; + $gzmtime = file_exists($gz) ? filemtime($gz) : false; + $mtime = file_exists($filename) ? filemtime($filename) : false; + + if (!$gzmtime && !$mtime) { + return false; + } + if (!$gzmtime) { + return $returntime ? $mtime : 'file'; + } + if (!$mtime) { + return $returntime ? $gzmtime : 'gz'; + } + + if ($gzmtime >= $mtime) { + @unlink($filename); + return $returntime ? $gzmtime : 'gz'; + } + @unlink($filename . '.gz'); + return $returntime ? $mtime : 'file'; } + public static function filemtime($filename) { - if (file_exists($filename . '.gz')) { - return filemtime($filename . '.gz'); - } else if (file_exists($filename)) { - return filemtime($filename); - } else { - return false; - } + return self::file_exists($filename); } public static function file_get_contents($filename) { - self::_filename($filename); + $filename = self::_filename($filename); if (!self::file_exists($filename)) { return ''; } @@ -62,7 +68,7 @@ class Gzip public static function file_put_contents($filename, $data, $compression = 7, $mode = 'w') { - self::_filename($filename, true); + $filename = self::_filename($filename, true); $fp = self::fopen($filename, $mode, $compression); $res = fwrite($fp, $data); fclose($fp); @@ -88,17 +94,18 @@ class Gzip return $protocol; } - protected static function _filename(&$filename, $forceGzip = false) + protected static function _filename($filename, $forceGzip = false) { - if ($forceGzip || (!file_exists($filename) && file_exists($filename . '.gz'))) { + $type = self::file_exists($filename, false); + if ($forceGzip || $type === 'gz') { $filename .= '.gz'; } + return $filename; } public static function path($path) { - self::_filename($path); - return $path; + return self::_filename($path); } }