<?php
/**
*
* up - A simple upload file safely class
*
* @author Author: hasan movahed . ( website : wallfa.com ) love google search hasan movahed .
* @git https://github.com/wallfa/upload
* @version 0.1
*
*/
class upload
{
var $format; //varible for type file
var $size; // varible for size file
var $dir; // varible for directory
var $path = 'upload/%year%/%month%/%day%';// %year% for year, %month% for month, %day% for day, or just write exact path.
var $path_right = '0777'; //int mod or permision
/**
* @param $format all type allowed upload
* @param $dir directory upload file
*/
public function __construct($format, $dir)
{
$this->dir = $dir;
$this->format = $format;
}
/**
* comparing mime type with type file
*
* @param $file is file send from
*
*/
public function mime($file)
{
if(array_key_exists($file['type'],$this->format)){
return $file ;
}else return false;
}
/**
* comparing size value with size file
*
* @param $file is file send from
*
*/
public function size($file)
{
if($file == false ){
return false;
}
elseif ($file['size'] <= $this->format[$file['type']] )
{
return $file;
} else return false;
}
/**
* chek exist folder
*
* @param $path is new folder create class
*
*/
public function exfolder()
{
if (is_dir($this->path))
{
return true;
}
}
/**
* comparing mime type with type file
*
* @param $file is file send from
*
*/
public function exfile($name)
{
if (file_exists($name))
{
return true;
}else
{
return $name;
}
}
/**
* comparing mime type with type file
*
* @param $file is file send from
*
*/
public function newfolder()
{
if (!@mkdir($this->path, $this->path_right, true))
{
echo "can not create a folder";
} else
{
return true;
}
}
/**
* new path dir
*
* @param no param
*/
public function path()
{
$path_keys = array(
'%year%',
'%month%',
'%day%');
$replace_keys = array(
date("Y"),
date("m"),
date("d"));
for ($i = 0; $i <= 2; $i++)
{
$this->path = str_replace($path_keys[$i], $replace_keys[$i], $this->path);
}
}
/**
* create new name for file
*
* @param $ext format this file
*
*/
public function rename($ext)
{
$name = rand() . "-" . time() . "." . $ext;
return $name;
}
/**
* object for upload file
*
* @param $file is file send from
*
*/
public function uploadfile($file)
{
$file = $this->size( $this->mime($file) );
if ($file == false ){
echo 'error1';
}else{
$filename = basename($file['name']);
$ext = substr($filename, strrpos($filename, '.') + 1);
$this->path();
//if the folder is not found
if( $this->exfolder($this->path) == false ){
$umask = umask(0);
$this->newfolder();
if (!@move_uploaded_file($file['tmp_name'], $this->path . '/' . $filename))
{
echo "can not upload file";
}
umask($umask);
}
//if the file is not found and folder exist
elseif ($this->exfolder($this->path) == true && $this->exfile($this->path.$file['name']) != true ){
$umask = umask(0);
if (!@move_uploaded_file($file['tmp_name'], $this->path . '/' . $filename))
{
echo "can not upload file";
}
umask($umask);
}
//if the file and folder exist
elseif( $this->exfolder($this->path) == true && $this->exfile($this->path.$file['name']) == true ){
$filename = $this->rename($ext);
$umask = umask(0);
if (!@move_uploaded_file($file['tmp_name'], $this->path . '/' . $filename))
{
echo "can not upload file";
}
umask($umask);
}
//not
else{
echo 'oooooooooooooooooooooooooooooooooooooooooooooooof love php';
}
}
}
}
?>
|