. // }}} namespace Plugin\Cover\Controller; use App\Core\DB\DB; use App\Core\Form; use function App\Core\I18n\_m; use App\Entity\Cover as CoverEntity; use App\Util\Common; use App\Util\Exception\ClientException; use Component\Media\Media; use Component\Media\Media as M; use Symfony\Component\Form\Extension\Core\Type\FileType; use Symfony\Component\Form\Extension\Core\Type\HiddenType; use Symfony\Component\Form\Extension\Core\Type\SubmitType; use Symfony\Component\HttpFoundation\Request; class Cover { /** * Display and handle the cover edit page */ public function coverSettings(Request $request) { $form = Form::create([ ['cover', FileType::class, ['label' => _m('Cover'), 'help' => _m('You can upload your personal cover. The maximum file size is 2MB.')]], ['hidden', HiddenType::class, []], ['save', SubmitType::class, ['label' => _m('Submit')]], ]); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { $data = $form->getData(); if (isset($data['cover'])) { $sfile = $data['cover']; } else { throw new ClientException('Invalid form'); } $user = Common::user(); $actor_id = $user->getId(); $file = Media::validateAndStoreFile($sfile, Common::config('cover', 'dir'), $title = null, $is_local = true, $use_unique = $actor_id); $old_file = null; $cover = DB::find('cover', ['gsactor_id' => $actor_id]); // Must get old id before inserting another one if ($cover != null) { var_dump('test'); $old_file = $cover->delete(); DB::remove($cover); } DB::persist($file); // Can only get new id after inserting DB::flush(); $cover = CoverEntity::create(['gsactor_id' => $actor_id, 'file_id' => $file->getId()]); //var_dump($cover); DB::persist($cover); DB::flush(); // Only delete files if the commit went through if ($old_file != null) { @unlink($old_file); } var_dump($cover->getFilePath()); } return ['_template' => 'cover/cover.html.twig', 'form' => $form->createView()]; } public function cover() { $cover = DB::find('cover', ['gsactor_id' => Common::user()->getId()]); $file = $cover->getFile(); return M::sendFile($cover->getFilePath(), $file->getMimetype(), $file->getTitle()); } }