예제 #1
0
 /**
  * Fazer o upload das fotos e salvá-las no diretório do álbum
  *
  * É feito o upload das fotos e as salva no diretório de fotos do álbum.
  * Depois é criado o registro das fotos salvas na base de dados.
  */
 public function upload()
 {
     if (isset($_FILES) && !empty($_FILES)) {
         # Informações do álbum
         $maf = new WebM\Album($this->foto_album);
         /*
          * Garantir que o diretório para upload das imagens esteja disponível. Já executo direto o método de criação
          * do diretório pois ele já faz a verificação se o diretório existe ou não, portanto não é necessário fazer
          * isso antes.
          */
         if (!$maf->criarDiretorio()) {
             throw new \DL3Exception(sprintf(ERRO_FOTOALBUM_UPLOAD_DIRETORIO_NAO_LOCALIZADO, $maf->dir_upload), 1404);
         }
         // Fim if
         # Fazer o upload das fotos
         $oup = new \Upload("{$maf->dir_upload}/original", 'fotos');
         $oup->setExtensoes($this->conf_extensoes_imagem);
         if (!$oup->salvar($maf->nome)) {
             throw new \DL3Exception(ERRO_FOTOALBUM_UPLOAD_SALVAR, 1500);
         }
         // Fim if
         # Selecionar as configurações do álbum
         $cws = new ConfiguracaoSite();
         foreach ($oup->salvos as $f) {
             $this->id = null;
             $this->imagem = preg_replace('~^\\.?/~', '', $f);
             $this->publicar = true;
             # Criar as alternativas da imagem (foto e miniatura)
             $img_foto = new \Imagem($this->imagem);
             $img_mini = clone $img_foto;
             $img_fotow = $img_foto->getLargura();
             $img_fotoh = $img_foto->getAltura();
             if ($img_fotow > $img_fotoh) {
                 $img_foto->redimensionar($cws->getAlbumFotow(), null);
                 $img_mini->redimensionar($cws->getAlbumMiniw(), null);
             } else {
                 $img_foto->redimensionar(null, $cws->getAlbumFotoh());
                 $img_mini->redimensionar(null, $cws->getAlbumMinih());
             }
             // Fim if
             $this->foto = preg_replace('~\\/original\\/~', '/fotos/', $this->imagem);
             $this->mini = preg_replace('~\\/original\\/~', '/mini/', $this->imagem);
             $img_foto->salvar($this->foto);
             $img_mini->salvar($this->mini);
             /*
              * Utilizar a seguinte chamada "$this->salvar();" para salvar a foto não funciona da maneira desejada,
              * pois não passa pelo __call
              */
             $this->__call('salvar');
         }
         // Fim foreach
     }
     // Fim if
 }
예제 #2
0
 public function salvarFoto()
 {
     # Salvar a foto do usuário
     if ($this->id != $_SESSION['usuario_id']) {
         throw new \DL3Exception(ERRO_USUARIO_SALVAR_FOTO_OUTRO_USUARIO, 1403);
     }
     // Fim if
     $oup = new \Upload('web/uploads/usuarios', 'perfil_foto');
     $oup->setExtensoes($this->conf_extensoes_foto_perfil);
     $oup->conf_bloq_extensao = true;
     # Remover a foto atual
     if (!empty($this->perfil_foto)) {
         unlink($this->perfil_foto);
     }
     // Fim if
     if ($oup->salvar($this->info_nome)) {
         $this->perfil_foto = preg_replace('~^./~', '', $oup->salvos[0]);
         # Recortar a foto
         $tim = 200;
         $oim = new \Imagem($oup->salvos[0]);
         if ($oim->getAltura() > $oim->getLargura()) {
             $oim->redimensionar(null, $tim);
         } else {
             $oim->redimensionar($tim);
         }
         // Fim if
         $oim->salvar($oup->salvos[0]);
         $this->salvar();
     }
     // Fim if
 }