예제 #1
0
 public function show($folder, $filename)
 {
     /*
         La funzione deleteFileAfterSend() usata sotto non sembra funzionare
         molto bene, sicché qui per sicurezza provvediamo a rimuovere tutti
         gli eventuali files più vecchi di 24 ore onde evitare di riempire
         a sproposito il disco
     */
     try {
         $existing = glob(sys_get_temp_dir() . 'download*');
         $expiration = time() - 60 * 60 * 24;
         foreach ($existing as $e) {
             $info = stat($e);
             if ($info['atime'] < $expiration) {
                 @unlink($e);
             }
         }
     } catch (\Exception $e) {
         Log::error('Errore rimuovendo vecchi files scaricati');
     }
     $user = Auth::user();
     if ($user->testAccess($folder) == true) {
         $contents = Cloud::readFile($folder, $filename);
         $path = tempnam(sys_get_temp_dir(), 'download');
         file_put_contents($path, $contents);
         return response()->download($path, $filename)->deleteFileAfterSend(true);
     } else {
         abort(403);
     }
 }
예제 #2
0
 public function handle()
 {
     $users_file = $this->argument('users');
     $text_file = $this->argument('message');
     if (file_exists($users_file) == false) {
         echo "Impossibile aprire il file con le mail degli utenti coinvolti.\n";
         exit;
     }
     if (file_exists($text_file) == false) {
         echo "Impossibile aprire il file con il testo della mail di accompagnamento.\n";
         exit;
     }
     $text = file_get_contents($text_file);
     $mails = file($users_file);
     foreach ($mails as $m) {
         $m = strtolower(trim($m));
         if (empty($m)) {
             continue;
         }
         $user = User::where(DB::raw('LOWER(email)'), '=', $m)->first();
         if ($user != null) {
             $files = Cloud::getContents($user->username);
             $local_files = [];
             foreach ($files as $f) {
                 $filename = basename($f);
                 $path = sprintf('/tmp/%s', $filename);
                 $data = Cloud::readFile($user->username, $filename);
                 file_put_contents($path, $data);
                 $local_files[] = $path;
             }
             if (empty($local_files)) {
                 echo "Nessun file da spedire a " . $m . "\n";
                 continue;
             }
             foreach ($user->emails as $e) {
                 try {
                     Mail::send('emails.empty', ['text' => $user->group->mailtext], function ($m) use($user, $local_files, $e) {
                         $m->to($e, $user->name . ' ' . $user->surname)->subject('nuovo documento disponibile');
                         foreach ($local_files as $filepath) {
                             $m->attach($filepath);
                         }
                     });
                     echo $m . " - " . $e . ": OK\n";
                 } catch (\Exception $ex) {
                     echo $m . " - " . $e . ": FAILED\n";
                 }
             }
             foreach ($local_files as $f) {
                 unlink($f);
             }
         } else {
             echo "Utente non trovato per mail " . $m . "\n";
         }
         usleep(500000);
     }
 }