]> _ Git - cubist_util.git/commitdiff
wip #6188 @0.5
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Tue, 12 Sep 2023 19:24:14 +0000 (21:24 +0200)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Tue, 12 Sep 2023 19:24:14 +0000 (21:24 +0200)
src/Gzip.php

index f88fed12f5409ebc4183a0075e5585285aac2e63..2ee66bd064c679cdfbe379de31774422cee48024 100644 (file)
@@ -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);
     }
 
 }