/**
  * Clear singular board assets.
  *
  * @return Response
  */
 public function deleteAssets(Request $request, Board $board)
 {
     $input = Input::all();
     $validator = Validator::make($input, ['asset_type' => ["required", "in:board_banner,board_icon,file_deleted,file_spoiler"]]);
     if (!$validator->passes()) {
         return redirect()->back()->withErrors($validator->errors());
     }
     $assets = $board->assets()->with('storage')->where('asset_type', $input['asset_type'])->get();
     foreach ($assets as $asset) {
         $asset->delete();
         $asset->storage->challengeExistence();
     }
     Event::fire(new BoardWasModified($board));
     return $this->getAssets($board);
 }
 /**
  * Removes existing assets.
  *
  * @return Response
  */
 public function patchAssets(Board $board)
 {
     if (!$board->canEditConfig($this->user)) {
         return abort(403);
     }
     $assetsToKeep = Input::get('asset', []);
     $assetsToName = Input::get('asset_name', []);
     $assetsToReplace = Input::file('asset_file', []);
     $assetType = Input::get('patching', false);
     $assets = $board->assets()->where('asset_type', $assetType)->get();
     foreach ($assets as $assetIndex => $asset) {
         if (!isset($assetsToKeep[$asset->board_asset_id]) || !$assetsToKeep[$asset->board_asset_id]) {
             $asset->delete();
             $asset->storage->challengeExistence();
         } else {
             $changed = false;
             if (isset($assetsToName[$asset->board_asset_id])) {
                 $changed = true;
                 $asset->asset_name = $assetsToName[$asset->board_asset_id];
             }
             if (isset($assetsToReplace[$asset->board_asset_id]) && !is_null($assetsToReplace[$asset->board_asset_id])) {
                 $newFile = $assetsToReplace[$asset->board_asset_id];
                 switch ($assetType) {
                     // Don't copy this logic.
                     // This is a lazy duplicate of putAssets.
                     case "board_flags":
                         $imageRules = array_merge(["required"], BoardAsset::getRulesForFlags($board));
                         $validator = Validator::make(['file' => $newFile], ['file' => $imageRules]);
                         if (!$validator->passes()) {
                             return redirect()->back()->withErrors($validator->errors());
                         }
                         $storage = FileStorage::storeUpload($newFile);
                         if ($storage->exists) {
                             $changed = true;
                             $asset->file_id = $storage->file_id;
                         } else {
                             return redirect()->back()->withErrors(["validation.custom.file_generic"]);
                         }
                         break;
                 }
             }
             $asset->save();
         }
     }
     Event::fire(new BoardWasModified($board));
     return $this->getAssets($board);
 }