インポート処理のコントローラーとか実装
This commit is contained in:
@@ -3,7 +3,9 @@
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\DeactivatedUser;
|
||||
use App\Exceptions\CsvImportException;
|
||||
use App\Services\CheckinCsvExporter;
|
||||
use App\Services\CheckinCsvImporter;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
@@ -72,6 +74,36 @@ class SettingController extends Controller
|
||||
return redirect()->route('setting.privacy')->with('status', 'プライバシー設定を更新しました。');
|
||||
}
|
||||
|
||||
public function import()
|
||||
{
|
||||
return view('setting.import');
|
||||
}
|
||||
|
||||
public function storeImport(Request $request)
|
||||
{
|
||||
$validated = $request->validate([
|
||||
'file' => 'required|file'
|
||||
], [], [
|
||||
'file' => 'ファイル'
|
||||
]);
|
||||
|
||||
$file = $request->file('file');
|
||||
if (!$file->isValid()) {
|
||||
return redirect()->route('setting.import')->withErrors(['file' => 'ファイルのアップロードに失敗しました。']);
|
||||
}
|
||||
|
||||
try {
|
||||
set_time_limit(0);
|
||||
|
||||
$importer = new CheckinCsvImporter(Auth::user(), $file->path());
|
||||
$importer->execute();
|
||||
|
||||
return redirect()->route('setting.import')->with('status', 'インポートに性交しました。');
|
||||
} catch (CsvImportException $e) {
|
||||
return redirect()->route('setting.import')->with('import_errors', $e->getErrors());
|
||||
}
|
||||
}
|
||||
|
||||
public function export()
|
||||
{
|
||||
return view('setting.export');
|
||||
|
@@ -92,4 +92,43 @@ class Formatter
|
||||
|
||||
return implode(',', $srcset);
|
||||
}
|
||||
|
||||
/**
|
||||
* php.ini書式のデータサイズを正規化します。
|
||||
* @param mixed $val データサイズ
|
||||
* @return string
|
||||
*/
|
||||
public function normalizeIniBytes($val)
|
||||
{
|
||||
$val = trim($val);
|
||||
$last = strtolower(substr($val, -1, 1));
|
||||
if (ord($last) < 0x30 || ord($last) > 0x39) {
|
||||
$bytes = substr($val, 0, -1);
|
||||
switch ($last) {
|
||||
case 'g':
|
||||
$bytes *= 1024;
|
||||
// fall through
|
||||
// no break
|
||||
case 'm':
|
||||
$bytes *= 1024;
|
||||
// fall through
|
||||
// no break
|
||||
case 'k':
|
||||
$bytes *= 1024;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
$bytes = $val;
|
||||
}
|
||||
|
||||
if ($bytes >= (1 << 30)) {
|
||||
return ($bytes >> 30) . 'GB';
|
||||
} elseif ($bytes >= (1 << 20)) {
|
||||
return ($bytes >> 20) . 'MB';
|
||||
} elseif ($bytes >= (1 << 10)) {
|
||||
return ($bytes >> 10) . 'KB';
|
||||
}
|
||||
|
||||
return $bytes . 'B';
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user