From aeec9149fc24870cf93b4c3c29d51d27071c3bfb Mon Sep 17 00:00:00 2001 From: Daniel Date: Fri, 27 Nov 2020 22:25:37 +0000 Subject: [PATCH] [Cover] Cover route, cover now renders --- plugins/Cover/Controller/Cover.php | 16 ++++++++++-- plugins/Cover/Cover.php | 17 +++++++------ src/Entity/Cover.php | 41 ++++++++++++++++++++++++++++++ templates/cover/view.html.twig | 4 ++- 4 files changed, 67 insertions(+), 11 deletions(-) diff --git a/plugins/Cover/Controller/Cover.php b/plugins/Cover/Controller/Cover.php index 9c1ee7070b..609be8d41e 100644 --- a/plugins/Cover/Controller/Cover.php +++ b/plugins/Cover/Controller/Cover.php @@ -28,6 +28,7 @@ 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; @@ -38,7 +39,7 @@ class Cover /** * Display and handle the cover edit page */ - public function cover(Request $request) + 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.')]], @@ -61,7 +62,9 @@ class Cover $cover = DB::find('cover', ['gsactor_id' => $actor_id]); // Must get old id before inserting another one if ($cover != null) { - //$old_file = $avatar->delete(); + var_dump('test'); + $old_file = $cover->delete(); + DB::remove($cover); } DB::persist($file); // Can only get new id after inserting @@ -74,8 +77,17 @@ class Cover 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()); + } } diff --git a/plugins/Cover/Cover.php b/plugins/Cover/Cover.php index 777676c182..b725e5891c 100644 --- a/plugins/Cover/Cover.php +++ b/plugins/Cover/Cover.php @@ -20,6 +20,7 @@ namespace Plugin\Cover; +use App\Core\DB\DB; use App\Core\Event; use App\Core\Module; use App\Core\Router\RouteLoader; @@ -36,8 +37,9 @@ class Cover extends Module */ public function onAddRoute(RouteLoader $r): bool { - $r->connect('settings_cover', 'settings/cover', [Controller\Cover::class, 'cover']); + $r->connect('settings_cover', 'settings/cover', [Controller\Cover::class, 'coversettings']); + $r->connect('cover', '/cover', [Controller\Cover::class, 'cover']); return Event::next; } @@ -50,17 +52,16 @@ class Cover extends Module */ public function onStartTwigPopulateVars(array &$vars): bool { - /* - $vars['tabs'] = [['title' => 'Poll', - 'href' => 'newpoll', - ]]; - */ $vars['profile_tabs'] = [['title' => 'Cover', 'href' => 'settings_cover', ]]; + $vars['profile_temp'] = []; //fixme if (Common::user() != null) { - $vars['profile_temp'][] = ['name' => 'cover', 'vars' => ['href' => 'test']]; + $cover = DB::find('cover', ['gsactor_id' => Common::user()->getId()]); + if ($cover != null) { + $vars['profile_temp'][] = ['name' => 'cover', 'vars' => ['href' => '/cover']]; + } } return Event::next; } @@ -74,7 +75,7 @@ class Cover extends Module */ public function onStartShowStyles(array &$styles): bool { - //$styles[] = 'poll/poll.css'; + //$styles[] = 'voer/poll.css'; return Event::next; } } diff --git a/src/Entity/Cover.php b/src/Entity/Cover.php index dcd61449ef..99cee2d3fd 100644 --- a/src/Entity/Cover.php +++ b/src/Entity/Cover.php @@ -21,7 +21,9 @@ namespace App\Entity; +use App\Core\DB\DB; use App\Core\Entity; +use App\Util\Common; use DateTimeInterface; class Cover extends Entity @@ -79,6 +81,45 @@ class Cover extends Entity // }}} Autocode + private ?File $file = null; + + public function getFile(): File + { + $this->file = $this->file ?: DB::find('file', ['id' => $this->file_id]); + return $this->file; + } + + public static function getFilePathStatic(string $filename): string + { + return Common::config('cover', 'dir') . $filename; + } + + public function getFilePath(): string + { + return Common::config('cover', 'dir') . $this->getFile()->getFileName(); + } + + /** + * Delete this cover and the corresponding file and thumbnails, which this owns + */ + public function delete(bool $flush = false, bool $delete_files_now = false, bool $cascading = false): array + { + // Don't go into a loop if we're deleting from File + if (!$cascading) { + $files = $this->getFile()->delete($cascade = true, $file_flush = false, $delete_files_now); + } else { + var_dump('test3'); + DB::remove(DB::getReference('cover', ['gsactor_id' => $this->gsactor_id])); + $file_path = $this->getFilePath(); + $files[] = $file_path; + if ($flush) { + DB::flush(); + } + return $delete_files_now ? [] : $files; + } + return []; + } + public static function schemaDef(): array { return [ diff --git a/templates/cover/view.html.twig b/templates/cover/view.html.twig index d957b31723..93763de6d9 100644 --- a/templates/cover/view.html.twig +++ b/templates/cover/view.html.twig @@ -1,4 +1,6 @@
-

{{ vars.href }}

+ + Your cover. +
\ No newline at end of file