nineskeletor/src/Controller/ThemeController.php

57 lines
1.7 KiB
PHP
Executable File

<?php
namespace App\Controller;
use Doctrine\Persistence\ManagerRegistry;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Finder\Finder;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Yaml\Yaml;
class ThemeController extends AbstractController
{
public function list(Request $request)
{
$finder = new Finder();
$dir = $this->getParameter('kernel.project_dir').'/public/themes';
$url = $this->getParameter('appAlias').'themes';
$finder->in($dir)->directories()->depth('== 0');
$themes = [];
$themes['']['dir'] = '';
$themes['']['url'] = $url;
$themes['']['name'] = 'Thème par défaut';
foreach ($finder as $file) {
$key = $file->getRelativePathname();
$themes[$key]['dir'] = $key;
$themes[$key]['url'] = $url.'/'.$key;
$yml = Yaml::parseFile($dir.'/'.$key.'/info.yml');
$themes[$key]['name'] = $yml['name'];
}
$current = $request->getSession()->get('apptheme');
$currentheme = $themes[$current];
unset($themes[$current]);
return $this->render('Theme/list.html.twig', [
'useheader' => true,
'usesidebar' => true,
'currentheme' => $currentheme,
'themes' => $themes,
]);
}
public function select($name, Request $request, ManagerRegistry $em)
{
$config = $em->getRepository("App\Entity\Config")->findoneBy(['id' => 'apptheme']);
$config->setValue($name);
$em->getManager()->flush();
return $this->redirectToRoute('app_admin_theme');
}
}