Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- class PuploadBehavior extends ModelBehavior{
- var $Model = null;
- var $options = array(
- 'dir' => 'img'
- );
- var $empfields = array();
- var $allowExtension = array('txt','pdf','jpg','jpeg','png','flv','mp3');
- var $errors = array();
- function setup(&$model, $settings = array()){
- $this->Model = $model;
- $this->options['mname'] = $model->alias;
- if(!empty($settings['fields'])) $this->options['fields'] = $settings['fields'];
- }
- function beforeSave(){
- $this->doUpload();
- }
- function doUpload(){
- $als = $this->options['mname'];
- foreach($this->options['fields'] as $field){
- if(empty($this->Model->data[$als][$field]['name'])){
- $this->empfields[] = $field;
- unset($this->Model->data[$als][$field]);
- }
- else {
- $filename = explode('.', $this->Model->data[$als][$field]['name']);
- $ext = end($filename);
- if($this->whiteList($ext)){
- $p = $this->makepath($field);
- if(!empty($p)){
- if(file_exists($p . '/' . implode('.', $filename))) $filename[0] = $filename[0] . '-' . time();
- if(move_uploaded_file($this->Model->data[$als][$field]['tmp_name'], $p . '/' . implode('.', $filename))){
- $this->Model->data[$als][$field] = implode('.', $filename);
- } else $this->errors[$field][] = 'upload field';
- }
- }
- }
- }
- }
- function whiteList($ext = null){
- if(in_array($ext, $this->allowExtension)) return true;
- else return false;
- }
- function makepath($field = null){
- $mpath = WWW_ROOT . $this->options['dir'] . '/' . $this->Model->alias . '/' . $field;
- $steps = explode('/', $mpath);
- unset($steps[0]);
- $dirs = null;
- foreach($steps as $dir){
- $dirs = $dirs . '/' . $dir;
- if(!is_dir($dirs)) mkdir($dirs, 0777);
- }
- if(!is_dir($mpath)){
- if(mkdir($mpath, 0775)) return $mpath;
- else {
- $this->errors[$field] [] = 'path not found';
- return false;
- }
- } else return $mpath;
- }
- }
Add Comment
Please, Sign In to add comment