Exemplo n.º 1
0
 /**
  * Handle a file edit POST.
  *
  * @param Request $request
  * @param Form    $form
  * @param File    $file
  * @param string  $type
  *
  * @return JsonResponse
  */
 private function handleEdit(Request $request, Form $form, File $file, $type)
 {
     $form->submit($request->get($form->getName()));
     if ($form->isValid()) {
         $data = $form->getData();
         $contents = Input::cleanPostedData($data['contents']) . "\n";
         $result = ['ok' => true, 'msg' => 'Unhandled state.'];
         // Before trying to save a yaml file, check if it's valid.
         if ($type === 'yml') {
             $yamlparser = new Parser();
             try {
                 $yamlparser->parse($contents);
             } catch (ParseException $e) {
                 $result['ok'] = false;
                 $result['msg'] = Trans::__("File '%s' could not be saved:", ['%s' => $file->getPath()]) . $e->getMessage();
             }
         }
         if ($result['ok']) {
             // Remove ^M (or \r) characters from the file.
             $contents = str_ireplace("\r", '', $contents);
             if ($file->update($contents)) {
                 $result['msg'] = Trans::__("File '%s' has been saved.", ['%s' => $file->getPath()]);
                 $result['datechanged'] = date_format(new \DateTime('@' . $file->getTimestamp()), 'c');
             } else {
                 $result['msg'] = Trans::__("File '%s' could not be saved, for some reason.", ['%s' => $file->getPath()]);
             }
         }
     } else {
         $result = ['ok' => false, 'msg' => Trans::__("File '%s' could not be saved, because the form wasn't valid.", ['%s' => $file->getPath()])];
     }
     return $this->json($result);
 }