errors []= $directory.' not a directory'; } if (!is_writable($directory)) { $this -> errors []= $directory.' unwritable'; } $this -> directory = $directory; } /** * set files attribute * * @param mixed $files * @return */ function files($files) { if(empty($files)) { throw new Exception('file array is empty'); } if (!is_array($files['tmp_name'])) { $this -> files['tmp_name'][] = $files['tmp_name']; $this -> files['name'][] = $files['name']; $this -> files['type'][] = $files['type']; $this -> files['size'][] = $files['size']; } else { for ($i = 0; $i < count($files['name']); $i++) { if ($files['name'][$i]) { $this -> files['tmp_name'][] = $files['tmp_name'][$i]; $this -> files['name'][] = $files['name'][$i]; $this -> files['type'][] = $files['type'][$i]; $this -> files['size'][] = $files['size'][$i]; } } } } /** * Uploader::bad_character_rewrite() * * @param mixed $text * @return */ private function bad_character_rewrite($text) { $first = array("\\\\", "/", ":", ";", "~", "|", "(", ")", "\\"", "#", "*", "$", "@", "%", "[", "]", "{", "}", "<", ">", "`", "'", ",", " ", "臒", "臑", "眉", "脺", "艧", "艦", "谋", "陌", "枚", "脰", "莽", "脟"); $last = array("_", "_", "_", "_", "_", "_", "", "_", "_", "_", "_", "_", "_", "_", "_", "_", "_", "_", "_", "_", "_", "", "_", "_", "g", "G", "u", "U", "s", "S", "i", "I", "o", "O", "c", "C"); $text_rewrite = str_replace($first, $last, $text); return $text_rewrite; } /** * get file extension * * @param mixed $file_name * @return */ public function file_extension($file_name) { $file_extension = strtolower(substr(strrchr($file_name, '.'), 1)); return $file_extension; } private function file_name($file) { return strtolower(substr($file, 0, strpos($file, '.'))); } /** * create random file name * * @param mixed $file_name no used * @return */ private function _file_name_control($file_name) { if(file_exists($this->directory.'/'.$file_name)) { //return $this->file_name($file_name).strtolower(rand() % 1000000).'.'.$this->file_extension($file_name); return strtolower(rand() % 1000000).'_'.$file_name; } else return $file_name; } /** * Uploader::_begin_upload() * * @param mixed $extensions * @return void */ function _begin_upload($extensions) { if(!count($this->errors)) { for ($i = 0; $i < count($this -> files['tmp_name']); $i++) { if (in_array($this->file_extension($this->files['name'][$i]), $extensions)) { $this->file_new_name = $this ->_file_name_control($this-> files['name'][$i]); move_uploaded_file($this -> files['tmp_name'][$i], $this-> directory.'/'.$this -> file_new_name); $this -> uploaded_files[] = $this -> file_new_name; $this -> results .= '