diff --git a/app/Http/Controllers/Video/VideoTable.php b/app/Http/Controllers/Video/VideoTable.php index 4b7370f..30053d5 100644 --- a/app/Http/Controllers/Video/VideoTable.php +++ b/app/Http/Controllers/Video/VideoTable.php @@ -2,6 +2,7 @@ namespace App\Http\Controllers\Video; use Illuminate\Support\Facades\DB; +use Illuminate\Http\Request; // use Illuminate\Support\Facades\Log; class VideoTable { @@ -15,18 +16,133 @@ class VideoTable { public function index ($slug) { $slg = DB::table('vid_game')->select('id', 'name')->where('slug', $slug)->first(); + if (!$slg) return view('pages.site.notfound', ['menu' => $this->menu, 'user' => $this->user]); $res = DB::table('vid_video')->where('game_id', $slg->id)->orderBy('id', 'desc')->get(); + if (!$res) return view('pages.site.notfound', ['menu' => $this->menu, 'user' => $this->user]); foreach ($res as $r) { $r->gametitle = explode('】', $r->title); - $r->title = $r->gametitle[1]; + $r->title = (isset($r->gametitle[1]) ? $r->gametitle[1] : ''); $r->gametitle = $r->gametitle[0]; $r->gametitle = str_replace('【'.$slg->name, '', $r->gametitle); if ($r->gametitle == '') $r->gametitle = '初代'; } - if (!$res) return notfound($this->menu, $this->user, $res); return view('pages.site.video.videotable', ['res' => $res, 'menu' => $this->menu, 'user' => $this->user]); } + + public function add (Request $r) { + if ($this->user && $this->user->perm['blg_addpost']) { + $game = DB::table('vid_game')->get(); + $err = ''; + $res = ''; + $frm = array('title' => '', 'vid' => '', 'game_id' => '', 'url' => '', 'youtube' => '', 'twitter' => '', 'nicovideo' => '', 'bitchute' => ''); + + if (isset($r->submit)) { + if (empty($err)) { if ($r->url == '' && $r->youtube == '' && $r->twitter == '' && $r->nicovideo == '' && $r->bitchute == '') $err = '1以上の動画URLをご入力下さい。'; } + + // フォームの値を保存して + $frm['title'] = $r->title; + $frm['vid'] = $r->vid; + $frm['game_id'] = $r->game_id; + $frm['url'] = ($r->url ?: ''); + $frm['youtube'] = ($r->youtube ?: ''); + $frm['twitter'] = ($r->twitter ?: ''); + $frm['nicovideo'] = ($r->nicovideo ?: ''); + $frm['bitchute'] = ($r->bitchute ?: ''); + + // 件名、文章又はスラッグがなければ、エラーを出て + $verify = array('件名' => $r->title, 'スラッグ' => $r->vid); + $incomplete = array(); + if (empty($err)) { + foreach ($verify as $k => $v) { if (is_null($v) || empty($v) || !isset($v)) $incomplete[] = $k; } + if (count($incomplete) > 0) $err = implode('、', $incomplete).'をご入力下さい。'; + } + + if (empty($err)) { if ($r->game_id == 0) $err = 'ゲームをご選択下さい。'; } + + // スラッグが既に存在したら、エラーを出て + if (empty($err)) { + $sl = DB::table('vid_video')->select('vid')->where('vid', $r->vid)->first(); + if ($sl && $sl->vid == $r->vid) $err = 'このスラッグがもう存在しています。'; + } + + // エラーがあったら、フォームに戻って。なければ、データベースに保存したり、ページ又はポストへ移転して + if (!empty($err)) return view('pages.site.video.play.add', ['res' => $res, 'menu' => $this->menu, 'user' => $this->user, 'err' => $err, 'frm' => $frm, 'game' => $game]); + else { + // できたの? + if ($res = DB::table('vid_video')->insert($frm)) return redirect('/video/play/'.$r->vid); + else { + // やれやれ… + return view('pages.site.video.play.add', ['res' => $res, 'menu' => $this->menu, 'user' => $this->user, 'err' => $err, 'frm' => $frm, 'game' => $game]); + } + } + } + + return view('pages.site.video.play.add', ['res' => $res, 'menu' => $this->menu, 'user' => $this->user, 'err' => $err, 'frm' => $frm, 'game' => $game]); + } + + return view('pages.site.notallowed', ['menu' => $this->menu, 'user' => $this->user]); + } + + public function delete (Request $r) { + if ($this->user->perm['blg_delpost']) { + $get = DB::table('vid_video')->select('game_id')->where('vid', $r->slug)->first(); + $red = DB::table('vid_game')->select('slug')->where('id', $get->game_id)->first(); + DB::table('vid_video')->where('vid', $r->slug)->delete(); + return $red->slug; + } + + return '許可がありません。'; + } + + public function edit (Request $r) { + if ($this->user && $this->user->perm['blg_addpost']) { + $game = DB::table('vid_game')->get(); + $frm = DB::table('vid_video')->where('vid', $r->vid)->first(); + if (!$frm) return view('pages.site.notfound', ['menu' => $this->menu, 'user' => $this->user]); + $err = ''; + $res = ''; + + if (isset($r->submit)) { + if (empty($err)) { if ($r->url == '' && $r->youtube == '' && $r->twitter == '' && $r->nicovideo == '' && $r->bitchute == '') $err = '1以上の動画URLをご入力下さい。'; } + + // フォームの値を保存して + $frm->title = $r->title; + $frm->vid = $r->vid; + $frm->game_id = $r->game_id; + $frm->url = ($r->url ?: ''); + $frm->youtube = ($r->youtube ?: ''); + $frm->twitter = ($r->twitter ?: ''); + $frm->nicovideo = ($r->nicovideo ?: ''); + $frm->bitchute = ($r->bitchute ?: ''); + + // 件名、文章又はスラッグがなければ、エラーを出て + $verify = array('件名' => $r->title, 'スラッグ' => $r->vid); + $incomplete = array(); + if (empty($err)) { + foreach ($verify as $k => $v) { if (is_null($v) || empty($v) || !isset($v)) $incomplete[] = $k; } + if (count($incomplete) > 0) $err = implode('、', $incomplete).'をご入力下さい。'; + } + + if (empty($err)) { if ($r->game_id == 0) $err = 'ゲームをご選択下さい。'; } + + // エラーがあったら、フォームに戻って。なければ、データベースに保存したり、ページ又はポストへ移転して + if (!empty($err)) return view('pages.site.video.play.edit', ['res' => $res, 'menu' => $this->menu, 'user' => $this->user, 'err' => $err, 'frm' => $frm, 'game' => $game]); + else { + // できたの? + if ($res = DB::table('vid_video')->where('vid', $r->vid)->update((array)$frm)) return redirect('/video/play/'.$r->vid); + else { + // やれやれ… + return view('pages.site.video.play.edit', ['res' => $res, 'menu' => $this->menu, 'user' => $this->user, 'err' => $err, 'frm' => $frm, 'game' => $game]); + } + } + } + + return view('pages.site.video.play.edit', ['res' => $res, 'menu' => $this->menu, 'user' => $this->user, 'err' => $err, 'frm' => $frm, 'game' => $game]); + } + + return view('pages.site.notallowed', ['menu' => $this->menu, 'user' => $this->user]); + } } diff --git a/resources/views/pages/site/video/play/add.blade.php b/resources/views/pages/site/video/play/add.blade.php new file mode 100644 index 0000000..0b2fc28 --- /dev/null +++ b/resources/views/pages/site/video/play/add.blade.php @@ -0,0 +1,61 @@ +@extends('layouts.site') + +@section('content') + +
+
動画の追加
+
+ @if ($err) + + @endif +
+ @csrf +
+
件名
+
+
+
+
スラッグ
+
+
+
+
ゲーム
+
+ +
+
+
+
URL
+
+
+
+
ユーチューブ
+
+
+
+
ツイッター
+
+
+
+
ニコニコ動画
+
+
+
+
ビットチュート
+
+
+
+
+
+
+
+
+ +@endsection diff --git a/resources/views/pages/site/video/play/edit.blade.php b/resources/views/pages/site/video/play/edit.blade.php new file mode 100644 index 0000000..2e3dd90 --- /dev/null +++ b/resources/views/pages/site/video/play/edit.blade.php @@ -0,0 +1,58 @@ +@extends('layouts.site') + +@section('content') + +
+
動画の編集
+
+ @if ($err) + + @endif +
+ @csrf +
+
件名
+
+
+
+
+
ゲーム
+
+ +
+
+
+
URL
+
+
+
+
ユーチューブ
+
+
+
+
ツイッター
+
+
+
+
ニコニコ動画
+
+
+
+
ビットチュート
+
+
+
+
+
+
+
+
+ +@endsection