Esempio n. 1
0
 /**
  * Validate and save changes.
  *
  * @return Response
  */
 public function patchIndex(Request $request)
 {
     if (!$this->user->canAdminConfig()) {
         return abort(403);
     }
     $input = Input::all();
     $optionGroups = OptionGroup::getSiteConfig();
     $requirements = [];
     // From each group,
     foreach ($optionGroups as $optionGroup) {
         // From each option within each group,
         foreach ($optionGroup->options as $option) {
             if (!isset($input[$option->option_name])) {
                 $input[$option->option_name] = null;
             }
             // Pull the validation parameter string,
             $requirements[$option->option_name] = $option->getValidation();
             $input[$option->option_name] = $option->getSanitaryInput($input[$option->option_name]);
         }
     }
     // Build our validator.
     $validator = Validator::make($input, $requirements);
     if ($validator->fails()) {
         return redirect(Request::path())->withErrors($validator->errors()->all())->withInput();
     }
     foreach ($optionGroups as &$optionGroup) {
         foreach ($optionGroup->options as &$option) {
             $setting = SiteSetting::firstOrNew(['option_name' => $option->option_name]);
             $option->option_value = $input[$option->option_name];
             $setting->option_value = $input[$option->option_name];
             $setting->save();
         }
     }
     return $this->view(static::VIEW_CONFIG, ['groups' => $optionGroups]);
 }