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`;
}
}
}
}
- 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 '';
}
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);
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);
}
}