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; }
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); } } }