/newscoop/javascript/tinymce/plugins/campsiteattachment/classes/Files.php
https://github.com/strogo/Newscoop · PHP · 215 lines · 114 code · 25 blank · 76 comment · 26 complexity · 41fa8b03e138512ceec9ba3a9c9701c8 MD5 · raw file
- <?php
- /**
- * File Utilities.
- * @author $Author: paul $
- * @version $Id: Files.php 5087 2006-06-01 21:54:08Z paul $
- * @package ImageManager
- */
- define('FILE_ERROR_NO_SOURCE', 100);
- define('FILE_ERROR_COPY_FAILED', 101);
- define('FILE_ERROR_DST_DIR_FAILED', 102);
- define('FILE_COPY_OK', 103);
- /**
- * File Utilities
- * @author $Author: paul $
- * @version $Id: Files.php 5087 2006-06-01 21:54:08Z paul $
- * @package ImageManager
- * @subpackage files
- */
- class Files
- {
-
- /**
- * Copy a file from source to destination. If unique == true, then if
- * the destination exists, it will be renamed by appending an increamenting
- * counting number.
- * @param string $source where the file is from, full path to the files required
- * @param string $destination_file name of the new file, just the filename
- * @param string $destination_dir where the files, just the destination dir,
- * e.g., /www/html/gallery/
- * @param boolean $unique create unique destination file if true.
- * @return string the new copied filename, else error if anything goes bad.
- */
- function copyFile($source, $destination_dir, $destination_file, $unique=true)
- {
- if(!(file_exists($source) && is_file($source)))
- return FILE_ERROR_NO_SOURCE;
- $destination_dir = Files::fixPath($destination_dir);
- if(!is_dir($destination_dir))
- Return FILE_ERROR_DST_DIR_FAILED;
- $filename = Files::escape($destination_file);
- if($unique)
- {
- $dotIndex = strrpos($destination_file, '.');
- $ext = '';
- if(is_int($dotIndex))
- {
- $ext = substr($destination_file, $dotIndex);
- $base = substr($destination_file, 0, $dotIndex);
- }
- $counter = 0;
- while(is_file($destination_dir.$filename))
- {
- $counter++;
- $filename = $base.'_'.$counter.$ext;
- }
- }
- if (!copy($source, $destination_dir.$filename))
- return FILE_ERROR_COPY_FAILED;
-
- //verify that it copied, new file must exists
- if (is_file($destination_dir.$filename))
- Return $filename;
- else
- return FILE_ERROR_COPY_FAILED;
- }
- /**
- * Create a new folder.
- * @param string $newFolder specifiy the full path of the new folder.
- * @return boolean true if the new folder is created, false otherwise.
- */
- function createFolder($newFolder)
- {
- mkdir ($newFolder, 0777);
- return chmod($newFolder, 0777);
- }
- /**
- * Escape the filenames, any non-word characters will be
- * replaced by an underscore.
- * @param string $filename the orginal filename
- * @return string the escaped safe filename
- */
- function escape($filename)
- {
- Return preg_replace('/[^\w\._]/', '_', $filename);
- }
- /**
- * Delete a file.
- * @param string $file file to be deleted
- * @return boolean true if deleted, false otherwise.
- */
- function delFile($file)
- {
- if(is_file($file))
- Return unlink($file);
- else
- Return false;
- }
- /**
- * Delete folder(s), can delete recursively.
- * @param string $folder the folder to be deleted.
- * @param boolean $recursive if true, all files and sub-directories
- * are delete. If false, tries to delete the folder, can throw
- * error if the directory is not empty.
- * @return boolean true if deleted.
- */
- function delFolder($folder, $recursive=false)
- {
- $deleted = true;
- if($recursive)
- {
- $d = dir($folder);
- while (false !== ($entry = $d->read()))
- {
- if ($entry != '.' && $entry != '..')
- {
- $obj = Files::fixPath($folder).$entry;
- //var_dump($obj);
- if (is_file($obj))
- {
- $deleted &= Files::delFile($obj);
- }
- else if(is_dir($obj))
- {
- $deleted &= Files::delFolder($obj, $recursive);
- }
-
- }
- }
- $d->close();
- }
- //$folder= $folder.'/thumbs';
- //var_dump($folder);
- if(is_dir($folder))
- $deleted &= rmdir($folder);
- else
- $deleted &= false;
- Return $deleted;
- }
- /**
- * Append a / to the path if required.
- * @param string $path the path
- * @return string path with trailing /
- */
- function fixPath($path)
- {
- //append a slash to the path if it doesn't exists.
- if(!(substr($path,-1) == '/'))
- $path .= '/';
- Return $path;
- }
- /**
- * Concat two paths together. Basically $pathA+$pathB
- * @param string $pathA path one
- * @param string $pathB path two
- * @return string a trailing slash combinded path.
- */
- function makePath($pathA, $pathB)
- {
- $pathA = Files::fixPath($pathA);
- if(substr($pathB,0,1)=='/')
- $pathB = substr($pathB,1);
- Return Files::fixPath($pathA.$pathB);
- }
- /**
- * Similar to makePath, but the second parameter
- * is not only a path, it may contain say a file ending.
- * @param string $pathA the leading path
- * @param string $pathB the ending path with file
- * @return string combined file path.
- */
- function makeFile($pathA, $pathB)
- {
- $pathA = Files::fixPath($pathA);
- if(substr($pathB,0,1)=='/')
- $pathB = substr($pathB,1);
-
- Return $pathA.$pathB;
- }
-
- /**
- * Format the file size, limits to Mb.
- * @param int $size the raw filesize
- * @return string formated file size.
- */
- function formatSize($size)
- {
- if($size < 1024)
- return $size.' bytes';
- else if($size >= 1024 && $size < 1024*1024)
- return sprintf('%01.2f',$size/1024.0).' Kb';
- else
- return sprintf('%01.2f',$size/(1024.0*1024)).' Mb';
- }
- }
- ?>