. // }}} namespace Plugin\Favourite; use App\Core\DB\DB; use App\Core\Event; use App\Core\Form; use App\Core\Modules\Module; use App\Entity\Note; use App\Util\Common; use Plugin\Favourite\Entity\Favourite as Fave; use Symfony\Component\Form\Extension\Core\Type\HiddenType; use Symfony\Component\Form\Extension\Core\Type\SubmitType; use Symfony\Component\HttpFoundation\Request; class Favourite extends Module { /** * HTML rendering event that adds the favourite form as a note * action, if a user is logged in */ public function onAddNoteActions(Request $request, Note $note, array &$actions) { if (($user = Common::user()) == null) { return Event::next; } $opts = ['note_id' => $note->getId(), 'gsactor_id' => $user->getId()]; $is_set = DB::find('favourite', $opts) != null; $form = Form::create([ ['is_set', HiddenType::class, ['data' => $is_set ? '1' : '0']], ['note_id', HiddenType::class, ['data' => $note->getId()]], ['favourite', SubmitType::class, ['label' => ' ']], ]); // Form handler $ret = self::noteActionHandle($request, $form, $note, 'favourite', function ($note, $data) use ($opts) { $fave = DB::find('favourite', $opts); if (!$data['is_set'] && ($fave == null)) { DB::persist(Fave::create($opts)); DB::flush(); } else { DB::remove($fave); DB::flush(); } return Event::stop; }); if ($ret != null) { return $ret; } $actions[] = $form->createView(); return Event::next; } }