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