<?php

class UploadImagem
{
    public static function multiple($arrImagem = array(), $crop = array(), $pasta = '', $direct = '')
    {
        $arrayImgs = array();

        if (count($arrImagem) > 0) {
            for ($i = 0; $i < count($arrImagem['name']); ++$i) {
                $error = $arrImagem['error'][$i];
                $size = $arrImagem['size'][$i];
                $img = $arrImagem['tmp_name'][$i];
                $img_nome = $arrImagem['name'][$i];

                if (!empty($img)) {
                    if (UPLOAD_ERR_OK == $error) {
                        if ($size >= 2000000) {
                            Message::error('Peso para imagem muito grande');
                            $direct = $direct . '-inserir';
                            echo '<script>window.location.href="./?i=' . $direct . '"</script>';
                        } else {
                            $extensao = explode('.', $img_nome);
                            $agoraImg = date('YmdHis');
                            $ext = end($extensao);
                            $imagem = Util::retiraCaracteres($extensao[0]) . '-' . $agoraImg;
                            $listaExtensoes = array('JPG', 'JPEG', 'GIF', 'PNG');

                            if (false !== in_array(strtoupper($ext), $listaExtensoes)) {
                                $img1 = $imagem . '.' . $ext;
                                $arrayImgs[] = $img1;

                                // Salva a imagem
                                $dest = $pasta . 'full/' . $img1;

                                move_uploaded_file($img, $dest);

                                for ($x = 0; $x < count($crop); ++$x) {
                                    $cw = $crop[$x][0]; // width do crop
                                    $ch = $crop[$x][1]; // height do crop
                                    $cropPasta = ($crop[$x][2]) ? $crop[$x][2] . '/' : '';
                                    $destino = $pasta . $cropPasta . $img1;
                                    $preparaCrop = TrataImagem::preparaCropDefault($dest, $destino, $cw, $ch);
                                }
                            } else {
                                Message::error('Imagem nos formatos: ' . implode(', ', $listaExtensoes) . '.');
                            }
                        }
                    } else {
                        switch ($error) {
                            case UPLOAD_ERR_FORM_SIZE:
                            case UPLOAD_ERR_INI_SIZE:
                                Message::error('O arquivo excedeu o tamanho máximo.');
                                break;
                            case UPLOAD_ERR_PARTIAL:
                                Message::error('O arquivo foi parcialmente enviado.');
                                break;
                            case UPLOAD_ERR_NO_FILE:
                                Message::error('O arquivo não foi enviado.');
                                break;
                            case UPLOAD_ERR_NO_TMP_DIR:
                            case UPLOAD_ERR_CANT_WRITE:
                            case UPLOAD_ERR_EXTENSION:
                                Message::error('Ocorreu um erro interno.');
                                break;
                            default:
                                Message::error('Ocorreu um erro não especificado.');
                                break;
                        }
                    }
                }
            }
        }
        
        return $arrayImgs;
    }
}
