/** * Determine if the cache folder is writeable * * @param string $folder The folder or NULL to use the static property CacheFolder (default: NULL) * @return boolean Writeable? */ public static function IsCacheFolderWriteAble($folder = null) { if (!is_null(self::$CacheFolderWriteAble)) { return self::$CacheFolderWriteAble; } if (is_null($folder)) { $folder = self::$CacheFolder; } if (is_null($folder)) { self::$CacheFolderWriteAble = false; return false; } if (!is_dir($folder)) { self::Debug('Invalid cache folder (not a directory?)'); self::$CacheFolderWriteAble = false; return; } $file = uniqid(); while (file_exists($folder . '/' . $file)) { $file = uniqid(); } $file = $folder . '/' . $file; $temp = uniqid(); if (file_put_contents($file, $temp) === false) { self::$CacheFolderWriteAble = false; return false; } $res = file_get_contents($file) === $temp; unlink($file); self::$CacheFolderWriteAble = $res; return $res; }