Esempio n. 1
0
 private function importing($step, $limit)
 {
     $path = sys_get_temp_dir() . '/' . 'import.csv';
     $contents = file($path);
     $groups = [];
     $dbgroups = Group::get();
     foreach ($dbgroups as $g) {
         $groups[$g->name] = $g->id;
     }
     for ($i = $step, $iterations = 0; $i < count($contents); $i++) {
         $iterations++;
         if ($iterations >= $limit) {
             return $i;
         }
         $row = $contents[$i];
         $data = str_getcsv($row);
         if (count($data) == 1) {
             $mail = $data[0];
             $test = User::where('email', '=', $mail)->first();
             if ($test == null) {
                 Log::info('Missing user ' . $mail);
             } else {
                 $u = $test;
                 $password = str_random(10);
                 $u->password = Hash::make($password);
                 $u->save();
             }
             continue;
         } else {
             $username = trim($data[2]);
             $suspended = intval(trim($data[4])) == 0;
             $email = strtolower(trim($data[3]));
             $test = User::where('username', '=', $username)->first();
             if ($test != null) {
                 $changed = false;
                 if ($test->suspended != $suspended) {
                     $test->suspended = $suspended;
                     $changed = true;
                 }
                 if (strtolower($test->email) != $email && strtolower($test->email2) != $email && strtolower($test->email3) != $email) {
                     if (empty($test->email)) {
                         $test->email = $email;
                     } else {
                         if (empty($test->email2)) {
                             $test->email2 = $email;
                         } else {
                             if (empty($test->email3)) {
                                 $test->email3 = $email;
                             }
                         }
                     }
                     $changed = true;
                 }
                 if ($changed == true) {
                     Tlog::write('import', "Aggiornato utente {$username}");
                     $test->save();
                 }
             } else {
                 $u = new User();
                 $u->name = $data[0];
                 $u->surname = $data[1];
                 $u->username = $username;
                 $u->email = $email;
                 $u->suspended = $suspended;
                 if (isset($groups[$data[5]])) {
                     $u->group_id = $groups[$data[5]];
                 } else {
                     $u->group_id = -1;
                 }
                 $password = str_random(10);
                 $u->password = Hash::make($password);
                 $u->save();
                 Cloud::createFolder($u->username);
                 Tlog::write('import', "Creato nuovo utente {$username}");
                 $this->notifyNewUser($u, $password);
                 sleep(1);
             }
         }
     }
     return null;
 }
Esempio n. 2
0
 public function handle()
 {
     $disk = Storage::disk('local');
     $storagePath = Storage::disk('local')->getDriver()->getAdapter()->getPathPrefix();
     $files = $disk->files('/');
     $rules = Rule::get();
     foreach ($files as $file) {
         try {
             if (substr($file, 0, 1) == '.') {
                 continue;
             }
             Log::info('Manipolo file ' . $file);
             Event::fire(new FileToHandle($file));
             if ($disk->exists($file) == false) {
                 continue;
             }
             foreach ($rules as $rule) {
                 $target = $rule->apply($file);
                 if ($target != false) {
                     list($folder, $filename) = $target;
                     $filepath = $storagePath . $file;
                     $test = Cloud::testExistance($folder . '/' . $filename);
                     if ($test !== false) {
                         Tlog::write('files', 'File ' . $test . ' già caricato, sovrascrivo');
                         if ($this->dry_run == false) {
                             Cloud::deleteFile($folder, basename($test));
                             Cloud::loadFile($filepath, $folder, $filename);
                         }
                     } else {
                         if ($this->dry_run == false) {
                             Cloud::loadFile($filepath, $folder, $filename);
                         }
                         if (env('SEND_MAIL', false) == true) {
                             $user = User::where('username', '=', $folder)->first();
                             if ($user != null) {
                                 foreach ($user->emails as $e) {
                                     if ($this->dry_run == false) {
                                         Mail::send('emails.notify', ['text' => $user->group->mailtext], function ($m) use($user, $filepath, $e) {
                                             $m->to($e, $user->name . ' ' . $user->surname)->subject('nuovo documento disponibile');
                                             $m->attach($filepath);
                                         });
                                     }
                                     Log::info('Inviata mail a ' . $user->name . ' ' . $user->surname . ' ' . $e);
                                 }
                             } else {
                                 if ($this->dry_run == false) {
                                     $user = new User();
                                     $user->name = '???';
                                     $user->surname = '???';
                                     $user->username = $folder;
                                     $user->save();
                                 }
                                 Tlog::write('files', 'Creato nuovo utente ' . $user->username . ', necessario popolare l\'anagrafica e notificare account');
                             }
                         }
                     }
                     if ($this->dry_run == false) {
                         $disk->delete($file);
                     }
                     Tlog::write('files', 'Caricato ' . $file . ' in ' . $folder);
                     break;
                 }
             }
             if ($disk->exists($file)) {
                 Tlog::write('files', 'File ' . $file . ' non gestito');
             }
         } catch (\Exception $e) {
             Tlog::write('files', 'Errore nella manipolazione del file ' . $file . ': ' . $e->getMessage());
         }
         if ($this->dry_run == false) {
             usleep(500000);
         }
     }
 }