Exemplo n.º 1
0
 /**
  * データベースへの登録アクション
  * @return Ambigous <\Illuminate\Routing\Redirector, \Illuminate\Http\RedirectResponse, mixed, \Illuminate\Container\static>
  */
 public function insert()
 {
     $thread = new thread();
     //バリデーションの設定
     $validation = Validator::make(['thread_id' => Input::get('thread_id'), 'thread' => Input::get('thread'), 'content' => Input::get('content'), 'image' => Input::file('image')], ['thread_id' => 'integer', 'thread' => 'string', 'content' => 'required|max:512', 'image' => 'image'], ['required' => '内容は入力必須項目です', 'image' => 'jpg,png,gif以外の画像をアップロードしないでください']);
     //バリデーション失敗時
     if ($validation->fails()) {
         return redirect()->back()->withErrors($validation->errors());
     }
     //ユーザ名
     $user = Input::has('user') ? Input::get('user') : 'noname';
     // アップロード画像を取得
     $image = Input::file('image');
     if (Input::file('image')) {
         // ファイル名を生成し画像をアップロード
         $name = md5(sha1(uniqid(mt_rand(), true))) . '.' . $image->getClientOriginalExtension();
         $upload = $image->move('media', $name);
         $upload = preg_replace('/media\\\\/', 'media/', $upload);
     }
     if (Input::has('thread') && Input::has('content')) {
         //スレッド作成からのリクエスト
         //スレッドのタイトルが被らないかどうかチェック
         $threads = $thread->all(array('thread'));
         $threadName = Input::get('thread');
         foreach ($threads as $val) {
             if ($val['thread'] == $threadName) {
                 return back()->withInput()->withErrors(array('同じスレッド名が存在します'));
             }
         }
         //スレッド情報をデータベースへ登録
         $thread->thread = $threadName;
         $thread->user = $user;
         $thread->save();
         $threads = $thread->where('thread', '=', $threadName)->get();
         $thread_id = $threads[0]['id'];
         $response = NULL;
     } else {
         if (Input::has('thread_id') && Input::has('content')) {
             //スレッド詳細からのリクエスト
             $thread_id = Input::get('thread_id');
             $response = ctype_digit(Input::get('response')) ? Input::get('response') : '';
         } else {
             return back()->withInput()->withErrors(array('スレッド名と内容を入力してください'));
         }
     }
     //投稿の登録
     $result = isset($upload) && $upload ? Comment::insertComment($thread_id, $user, Input::get('content'), $response, $upload) : Comment::insertComment($thread_id, $user, Input::get('content'), $response);
     //スレッド内からのリクエストかどうかをチェック
     return !Input::has('thread') ? redirect('/thread?id=' . $thread_id) : redirect('/');
 }