replace($pattern, $replace, $contents); if( $contents !== $replaceContents ) { file_put_contents($file, $replaceContents); } return $replaceContents; } /** * Deletes the file. * * @param string $name * * @return bool */ public static function delete(string $name) : bool { $name = Info::rpath($name); if( ! is_file($name)) { throw new Exception\FileNotFoundException(NULL, $name); } else { return unlink($name); } } /** * Extracts a zip file to the specified location. * * @param string $source * @param string $target * * @return bool */ public static function zipExtract(string $source, ?string $target = NULL) : bool { $source = Info::rpath($source); $target = Info::rpath($target); $source = Base::suffix($source, '.zip'); if( ! file_exists($source) ) { throw new Exception\FileNotFoundException(NULL, $source); } if( empty($target) ) { $target = Extension::remove($source); } $zip = new ZipArchive; if( $zip->open($source) === true ) { $zip->extractTo($target); $zip->close(); return true; } else { return false; } } /** * Create a zip file. * * @param string $path * @param array $data * * @return bool */ public static function createZip(string $path, array $data) : bool { $opath = $path; $path = Info::rpath($path); $zip = new ZipArchive; $zipPath = Base::suffix($path, ".zip"); if( file_exists($zipPath) ) { unlink($zipPath); // @codeCoverageIgnore } if( ! is_dir($pathDirName = Info::pathInfo($path, 'dirname')) ) { mkdir($pathDirName); } $zip->open($zipPath, ZipArchive::CREATE); $status = ''; if( ! empty($data) ) foreach( $data as $key => $val ) { if( is_numeric($key) ) { $file = $val; $fileName = ''; } else { $file = $key; $fileName = $val; } if( is_dir($file) ) { $allFiles = FileList::allFiles($file, true); foreach( $allFiles as $f ) { $status = $zip->addFile($f, Base::removePrefix($f, Base::suffix($opath))); } } else { $status = $zip->addFile($file, $fileName); } } return $zip->close(); } /** * Change the name of a file. * * @param string $oldName * @param string $newName * * @return bool */ public static function rename(string $oldName, string $newName) : bool { $oldName = Info::rpath($oldName); if( ! file_exists($oldName) ) { throw new Exception\FileNotFoundException(NULL, $oldName); } return rename($oldName, $newName); } /** * Clears file status cache * * @param string $fileName = NULL * @param bool $real = false */ public static function cleanCache(?string $fileName = NULL, bool $real = false) { $fileName = Info::rpath($fileName); if( ! file_exists($fileName) ) { clearstatcache($real); } else { clearstatcache($real, $fileName); } } /** * Truncates a file to a given length * * @param string $file * @param int $limit = 0 * @param string $mode = 'r+' */ public static function truncate(string $file, int $limit = 0, string $mode = 'r+') { $file = Info::rpath($file); if( ! is_file($file) ) { throw new Exception\FileNotFoundException(NULL, $file); } $fileOpen = fopen($file, $mode); $fileWrite = ftruncate($fileOpen, $limit); fclose($fileOpen); } /** * Changes file mode. * * @param string $name * @param int $permission = 0755 * * @return bool */ public static function permission(string $name, int $permission = 0755) : bool { $name = Info::rpath($name); if( ! file_exists($name) ) { throw new Exception\FileNotFoundException(NULL, $name); } return chmod($name, $permission); } /** * Create an index. * * @param string $file * @param int $permission = 0755 * @param bool $recursive = true * * @return bool */ public static function createFolder(string $file, int $permission = 0755, bool $recursive = true) : bool { return Filesystem::createFolder(Info::rpath($file), $permission, $recursive); } /** * Used to delete an empty directory. * * @param string $folder * * @return bool */ public static function deleteEmptyFolder(string $folder) : bool { return Filesystem::deleteEmptyFolder(Info::rpath($folder)); } /** * Used to delete a directory along with its contents. * * @param string $name * * @return bool */ public static function deleteFolder(string $name) : bool { return Filesystem::deleteFolder(Info::rpath($name)); } /** * Used to copy a directory to another specified location. * This includes other subdirectories and files of the directory to be copied. * * @param string $source * @param string $target * * @return bool */ public static function copy(string $source, string $target) : bool { return Filesystem::copy(Info::rpath($source), Info::rpath($target)); } /** * It is used to change the active working directory of PHP. * * @param string $name * * @return bool */ public static function changeFolder(string $name) : bool { $name = Info::rpath($name); if( ! is_dir($name) ) { throw new Exception\FolderNotFoundException(NULL, $name); } return chdir($name); } }