Advertisement
Guest User

CakePhp

a guest
Sep 21st, 2014
307
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 3.15 KB | None | 0 0
  1. <?php
  2.     class Trabalhe extends AppModel {
  3.         var $name = 'Trabalhe';
  4.        
  5.     var $useTable = 'trabalhes';
  6.         //var $useTable = false;
  7.  
  8.        
  9.        
  10.         /**
  11.          * Organiza o upload.
  12.          * @access public
  13.          * @param Array $imagem
  14.          * @param String $data
  15.         */  
  16.          
  17.         public function upload($imagem = array(), $dir = 'files'){  
  18.             $dir = WWW_ROOT.$dir.DS;
  19.             if(($imagem['error']!=0) and ($imagem['size']==0)){  
  20.                 throw new NotImplementedException('Alguma coisa deu errado, o upload retornou erro '.$imagem['error'].' e tamanho '.$imagem['size']);
  21.             }
  22.                 $this->checa_dir($dir);
  23.                 $imagem = $this->checa_nome($imagem, $dir);
  24.                 $this->move_arquivos($imagem, $dir);
  25.                 return $dir;
  26.                 //return $imagem['name'];
  27.         }
  28.        
  29.         /**
  30.         * Verifica se o diretório existe, se não ele cria.
  31.         * @access public
  32.         * @param Array $imagem
  33.         * @param String $data
  34.         * */  
  35.         public function checa_dir($dir){  
  36.             App::uses('Folder', 'Utility');  
  37.             $folder = new Folder();  
  38.             if (!is_dir($dir)){  
  39.                 $folder->create($dir);
  40.             }
  41.             else{
  42.                 throw new NotImplementedException('Erro no diretorio '.$imagem['error'].' e tamanho '.$imagem['size']);
  43.             }  
  44.         }  
  45.  
  46.         /**
  47.         * Verifica se o nome do arquivo já existe, se existir adiciona um numero ao nome e verifica novamente
  48.         * @access public
  49.         * @param Array $imagem
  50.         * @param String $data
  51.         * @return nome da imagem
  52.         */  
  53.         public function checa_nome($imagem, $dir){  
  54.             $imagem_info = pathinfo($dir.$imagem['name']);  
  55.             $imagem_nome = $this->trata_nome($imagem_info['filename']).'.'.$imagem_info['extension'];  
  56.             debug($imagem_nome);  
  57.             $conta = 2;  
  58.             while (file_exists($dir.$imagem_nome)) {  
  59.                 $imagem_nome  = $this->trata_nome($imagem_info['filename']).'-'.$conta;  
  60.                 $imagem_nome .= '.'.$imagem_info['extension'];  
  61.                 $conta++;  
  62.                 debug($imagem_nome);  
  63.             }  
  64.             $imagem['name'] = $imagem_nome;  
  65.             return $imagem;  
  66.         }  
  67.  
  68.         /**
  69.         * Trata o nome removendo espaços, acentos e caracteres em maiúsculo.
  70.         * @access public
  71.         * @param Array $imagem
  72.         * @param String $data
  73.         */  
  74.         public function trata_nome($imagem_nome){  
  75.             $imagem_nome = strtolower(Inflector::slug($imagem_nome,'-'));  
  76.             return $imagem_nome;  
  77.         }  
  78.  
  79.         /**
  80.         * Move o arquivo para a pasta de destino.
  81.         * @access public
  82.         * @param Array $imagem
  83.         * @param String $data
  84.         */  
  85.         public function move_arquivos($imagem, $dir){
  86.             App::uses('File', 'Utility');  
  87.             $arquivo = new File($imagem['tmp_name']);  
  88.             $arquivo->copy($dir.$imagem['name']);  
  89.             $arquivo->close();  
  90.         }        
  91.         public function beforeSave($options = array()){  
  92.         //  debug($this->data['Trabalhe']['campoDoArquivo']['name']);
  93.         //  exit();
  94.             if(!empty($this->data['Trabalhe']['campoDoArquivo']['name'])) {  
  95.                 $this->data['Trabalhe']['campoDoArquivo'] = $this->upload($this->data['Trabalhe']['campoDoArquivo']);
  96.             } else {  
  97.                 unset($this->data['Trabalhe']['campoDoArquivo']);  
  98.             }
  99.            
  100.             parent::beforeSave($options);
  101.         }
  102.     }  
  103. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement