| 
<?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';
 }
 }
 }
 
 }
 
 ?>
 |