diff --git a/plugins/Repeat/Repeat.php b/plugins/Repeat/Repeat.php new file mode 100644 index 0000000000..5830504837 --- /dev/null +++ b/plugins/Repeat/Repeat.php @@ -0,0 +1,65 @@ +. +// }}} + +namespace Plugin\Repeat; + +use App\Core\DB\DB; +use App\Core\Event; +use App\Core\Form; +use App\Core\Module; +use App\Entity\Note; +use Symfony\Component\Form\Extension\Core\Type\HiddenType; +use Symfony\Component\Form\Extension\Core\Type\SubmitType; +use Symfony\Component\HttpFoundation\Request; + +class Repeat extends Module +{ + public function onAddNoteActions(Request $request, Note $note, array &$actions) + { + $to_repeat = DB::find('note', ['id' => $note->getId()]); + $is_set = false; + $form = Form::create([ + ['is_set', HiddenType::class, ['data' => $is_set ? '1' : '0']], + ['note_id', HiddenType::class, ['data' => $note->getId()]], + ['repeat', SubmitType::class, ['label' => 'Repeat']], + ]); + $form->handleRequest($request); + + if ($form->isSubmitted()) { + $data = $form->getData(); + if ($data['note_id'] == $to_repeat && $form->isValid()) { + // Loose comparison + if (!$data['is_set']) { + var_dump($note); + die(); + DB::persist(Note::create(['repeat_of' => $note->getId(), 'content' => $note->getContent(), 'is_local' => true])); + DB::flush(); + } else { + DB::remove($to_repeat); + DB::flush(); + } + } else { + // TODO display errors + } + } + + $actions[] = $form->createView(); + return Event::next; + } +} \ No newline at end of file