<?php
/**
* Free Wallpaper Script
*
* Free Wallpaper Script by Vepa Halliyev is licensed under a Creative Commons Attribution-Share Alike 3.0 License.
*
* @package Free Wallpaper Script
* @author Vepa Halliyev
* @copyright Copyright (c) 2009, Vepa Halliyev, veppa.com.
* @license http://www.veppa.com/free-wallpaper-script/
* @link http://www.veppa.com/free-wallpaper-script/
* @since Version 1.0
* @filesource
*/
class FileDir
{
static $file_name_counter;
/**
* Check if directory exists. Create if needed.
*
* @param string $dir
* @return bool
*/
static public function checkMakeDir($dir)
{
if(!is_dir($dir))
{
self::checkMakeDir(dirname($dir));
$return = mkdir($dir);
@chmod($dir,0777);
return $return;
}
else
{
return true;
}
}
/**
* Check if file exists. Create if needed.
*
* @param string $file
* @param string $content
* @return bool
*/
static public function checkMakeFile($file,$content="")
{
//make dir
$dir = dirname($file);
if(self::checkMakeDir($dir))
{
//make file
if($content)
{
//if content given then overwrite
if (!$handle = fopen($file, 'w'))
{
//echo "Cannot open file ($file)";
echo "Cannot open file";
exit;
}
// Write $somecontent to our opened file.
if (fwrite($handle, $content) === FALSE)
{
// echo "Cannot write to file ($file)";
echo "Cannot write to file";
exit;
}
//echo "Success, wrote ($somecontent) to file ($file)";
fclose($handle);
@chmod($file,0777);
}
elseif(!is_file($file))
{
//if no content and no file then create emty file
$handle = fopen($file, "w");
fclose($handle);
@chmod($file,0777);
}
}
return is_file($file);
}
/**
* Remove directory recursive
*
* @param string $dir
* @return bool
*/
static public function rmdirr($dir)
{
$sys = true;
if($sys)
{
system("rm $dir -dfr",$ret);
if($ret==0)
{
return true;
}
else
{
return false;
}
}
else
{
if(is_dir($dir))
{
if($objs = glob($dir."/*"))
{
foreach($objs as $obj)
{
self::rmdirr($obj);
}
}
system('rm -rf '.$dir);
//return rmdir($dir);
}
elseif(is_file($dir))
{
return unlink($dir);
}
}
}
/**
* Generates unique filename in given folder. creates directory if not exists.
*
* @param string $file
* @return array with keys: name,ext,fullname,url
*/
static public function genFileName($file)
{
$filename = strtolower(basename($file));
$filename = str_replace(" ","_",$filename);
$filename = eregi_replace("[^a-z0-9._-]","",$filename);
$arr = explode(".",$filename);
$ext = $arr[(count($arr)-1)];
$name = str_replace(".".$ext,"",$filename);
$path = dirname($file)."/";
// make sure directory exists. create if required
self::checkMakeDir($path);
$i = self::$file_name_counter[$file]?self::$file_name_counter[$file]:0;
$new_filename = $name.".".$ext;
$new_path = $path.$new_filename;
while(is_file($new_path))
{
$new_filename = $name."_".($i++).".".$ext;
$new_path = $path.$new_filename;
}
self::$file_name_counter[$file] = $i;
$return['name'] = $new_filename;
$return['ext'] = $ext;
$return['fullname'] = $new_path;
$return['url'] = URL_PUBLIC.str_replace(FROG_ROOT,"",$return['fullname']);
return $return;
}
/**
* Generates unique directory in given folder.
*
* @param string $dir
* @return array with keys: name,fullname,url
*/
static public function genDirName($dir="./")
{
$dir_name = rand();
$new_path = $dir.$dir_name;
while(is_dir($new_path))
{
$dir_name = rand();
$new_path = $dir.$dir_name;
}
// create directory
self::checkMakeDir($new_path);
$return['name'] = $dir_name;
$return['fullname'] = $new_path;
$return['url'] = URL_PUBLIC.str_replace(FROG_ROOT,"",$return['fullname']);
return $return;
}
function forceDownload($filename,$name=''){
if(!$name)
{
$name = basename($filename);
}
//$filename = $_GET['file'];
// required for IE, otherwise Content-disposition is ignored
if(ini_get('zlib.output_compression'))
ini_set('zlib.output_compression', 'Off');
// addition by Jorg Weske
$file_extension = strtolower(substr(strrchr($filename,"."),1));
if( $filename == "" )
{
return false;
}
elseif ( ! file_exists( $filename ) )
{
return false;
}
switch( $file_extension )
{
case "pdf": $ctype="application/pdf"; break;
case "exe": $ctype="application/octet-stream"; break;
case "zip": $ctype="application/zip"; break;
case "doc": $ctype="application/msword"; break;
case "xls": $ctype="application/vnd.ms-excel"; break;
case "ppt": $ctype="application/vnd.ms-powerpoint"; break;
case "gif": $ctype="image/gif"; break;
case "png": $ctype="image/png"; break;
case "jpeg":
case "jpg": $ctype="image/jpg"; break;
default: $ctype="application/force-download";
}
header("Pragma: public"); // required
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private",false); // required for certain browsers
header("Content-Type: $ctype");
// change, added quotes to allow spaces in filenames, by Rajkumar Singh
header("Content-Disposition: attachment; filename=\"".$name."\";" );
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".filesize($filename));
readfile("$filename");
exit();
}
}