Skip to content

Commit 9dfcee8

Browse files
committed
refonte classe Afup\Site\Corporate\Branche
1 parent bb86a92 commit 9dfcee8

File tree

6 files changed

+73
-65
lines changed

6 files changed

+73
-65
lines changed

app/config/services.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,12 @@ services:
164164
Afup\Site\Association\CotisationsFactory:
165165
autowire: true
166166

167+
Afup\Site\Corporate\Branche:
168+
autowire: true
169+
170+
Afup\Site\Corporate\Page:
171+
autowire: true
172+
167173
Afup\Site\Forum\Facturation:
168174
autowire: true
169175

sources/Afup/Corporate/Branche.php

Lines changed: 30 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -4,21 +4,15 @@
44

55
namespace Afup\Site\Corporate;
66

7-
use Afup\Site\Utils\Base_De_Donnees;
7+
use AppBundle\Site\Model\Repository\SheetRepository;
8+
use AppBundle\Site\Model\Sheet;
9+
use CCMBenchmark\Ting\Repository\Collection;
810

911
class Branche
1012
{
1113
public $navigation = 'nom';
1214

13-
/**
14-
* @var Base_De_Donnees
15-
*/
16-
protected $bdd;
17-
18-
public function __construct($bdd = false)
19-
{
20-
$this->bdd = $bdd ?: new _Site_Base_De_Donnees();
21-
}
15+
public function __construct(private readonly SheetRepository $sheetRepository) {}
2216

2317
public function navigation_avec_image($bool = false): void
2418
{
@@ -29,13 +23,8 @@ public function navigation_avec_image($bool = false): void
2923

3024
public function naviguer($id, $profondeur = 1, string $identification = ""): string
3125
{
32-
$requete = 'SELECT *
33-
FROM afup_site_feuille
34-
WHERE id = ' . $this->bdd->echapper($id) . '
35-
AND etat = 1';
36-
$racine = $this->bdd->obtenirEnregistrement($requete);
37-
38-
if ($racine === false) {
26+
$racine = $this->sheetRepository->getOneBy(['id' => $id, 'state' => 1]);
27+
if (!$racine instanceof Sheet) {
3928
return '';
4029
}
4130

@@ -52,36 +41,31 @@ public function naviguer($id, $profondeur = 1, string $identification = ""): str
5241
public function extraireFeuilles($id, $profondeur): string
5342
{
5443
$extraction = '';
44+
$sheets = $this->sheetRepository->getActiveChildrenByParentIdOrderedByPostion($id);
45+
if (!$sheets instanceof Collection) {
46+
return $extraction;
47+
}
5548

56-
$requete = 'SELECT *
57-
FROM afup_site_feuille
58-
WHERE id_parent = ' . $this->bdd->echapper($id) . '
59-
AND etat = 1
60-
ORDER BY position';
61-
$feuilles = $this->bdd->obtenirTous($requete);
62-
63-
if (is_array($feuilles)) {
64-
foreach ($feuilles as $feuille) {
65-
$class = "";
66-
if ($extraction === "") {
67-
$class = ' class="top"';
68-
}
69-
$route = match (true) {
70-
preg_match('#^http://#', (string) $feuille['lien']), preg_match('#^/#', (string) $feuille['lien']) => $feuille['lien'],
71-
default => Site::WEB_PATH . Site::WEB_PREFIX . Site::WEB_QUERY_PREFIX . $feuille['lien'],
72-
};
73-
$extraction .= '<li' . $class . '>';
74-
if ($this->navigation == 'image' && $feuille['image'] !== null) {
75-
$extraction .= '<a href="' . $route . '"><img alt="' . $feuille['alt'] . '" src="' . Site::WEB_PATH . 'templates/site/images/' . $feuille['image'] . '" /><br>';
76-
$extraction .= $feuille['nom'] . '</a><br>';
77-
$extraction .= $feuille['alt'];
78-
} else {
79-
$extraction .= '<a href="' . $route . '">' . $feuille['nom'] . '</a>';
80-
}
81-
$extraction .= '</li>';
82-
if ($profondeur > 0) {
83-
$extraction .= $this->naviguer($feuille['id'], $profondeur - 1);
84-
}
49+
foreach ($sheets as $feuille) {
50+
$class = "";
51+
if ($extraction === "") {
52+
$class = ' class="top"';
53+
}
54+
$route = match (true) {
55+
preg_match('#^http://#', (string) $feuille['lien']), preg_match('#^/#', (string) $feuille['lien']) => $feuille['lien'],
56+
default => Site::WEB_PATH . Site::WEB_PREFIX . Site::WEB_QUERY_PREFIX . $feuille['lien'],
57+
};
58+
$extraction .= '<li' . $class . '>';
59+
if ($this->navigation == 'image' && $feuille['image'] !== null) {
60+
$extraction .= '<a href="' . $route . '"><img alt="' . $feuille['alt'] . '" src="' . Site::WEB_PATH . 'templates/site/images/' . $feuille['image'] . '" /><br>';
61+
$extraction .= $feuille['nom'] . '</a><br>';
62+
$extraction .= $feuille['alt'];
63+
} else {
64+
$extraction .= '<a href="' . $route . '">' . $feuille['nom'] . '</a>';
65+
}
66+
$extraction .= '</li>';
67+
if ($profondeur > 0) {
68+
$extraction .= $this->naviguer($feuille['id'], $profondeur - 1);
8569
}
8670
}
8771

sources/Afup/Corporate/Page.php

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,10 @@
99

1010
final readonly class Page
1111
{
12-
private _Site_Base_De_Donnees $bdd;
13-
14-
public function __construct(private readonly SheetRepository $sheetRepository)
15-
{
16-
$this->bdd = new _Site_Base_De_Donnees();
12+
public function __construct(
13+
private SheetRepository $sheetRepository,
14+
private Branche $branch
15+
) {
1716
}
1817

1918
public function header($url = null, UserInterface $user = null): string
@@ -110,10 +109,9 @@ public function footer(): array
110109
return $footerColumns;
111110
}
112111

113-
public function getRightColumn(): Branche
112+
public function getRightColumn(): string
114113
{
115-
$branche = new Branche($this->bdd);
116-
$branche->navigation_avec_image(true);
117-
return $branche;
114+
$this->branch->navigation_avec_image(true);
115+
return $this->branch->naviguer(1, 2, "externe");
118116
}
119117
}

sources/AppBundle/Site/Model/Repository/SheetRepository.php

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
namespace AppBundle\Site\Model\Repository;
66

77
use AppBundle\Site\Model\Sheet;
8+
use Aura\SqlQuery\Common\SelectInterface;
89
use CCMBenchmark\Ting\Exception;
910
use CCMBenchmark\Ting\Query\QueryException;
1011
use CCMBenchmark\Ting\Repository\CollectionInterface;
@@ -49,13 +50,34 @@ public function getAllSheets(string $ordre = 'date', string $direction = 'desc',
4950
return $query->query($this->getCollection(new HydratorArray()));
5051
}
5152

52-
public function getActiveChildrenByParentId(int $parentId)
53+
public function getActiveChildrenByParentId(int $parentId): CollectionInterface
5354
{
54-
$sqlQuery = 'SELECT * FROM afup_site_feuille WHERE id_parent = :parentId and etat = 1';
55-
$query = $this->getPreparedQuery($sqlQuery)->setParams(['parentId' => $parentId]);
55+
$queryBuilder = $this->getActiveChildrenByParentIdBuilder();
56+
57+
$query = $this->getPreparedQuery($queryBuilder->getStatement())->setParams(['parentId' => $parentId]);
58+
return $query->query($this->getCollection(new HydratorArray()));
59+
}
60+
61+
public function getActiveChildrenByParentIdOrderedByPostion(int $parentId): CollectionInterface
62+
{
63+
$queryBuilder = $this->getActiveChildrenByParentIdBuilder();
64+
$queryBuilder->orderBy(['position', 'asc']);
65+
66+
$query = $this->getPreparedQuery($queryBuilder->getStatement())->setParams(['parentId' => $parentId]);
5667
return $query->query($this->getCollection(new HydratorArray()));
5768
}
5869

70+
private function getActiveChildrenByParentIdBuilder(): SelectInterface
71+
{
72+
/**
73+
* @var SelectInterface $queryBuilder
74+
*/
75+
$queryBuilder = $this->getQueryBuilder(self::QUERY_SELECT);
76+
$queryBuilder->cols(['*'])->from('afup_site_feuille')->where('id_parent = :parentId')->where('etat = 1');
77+
78+
return $queryBuilder;
79+
}
80+
5981
/**
6082
* @inheritDoc
6183
*/

sources/AppBundle/Twig/ViewRenderer.php

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
namespace AppBundle\Twig;
66

77
use Afup\Site\Corporate\Page;
8-
use AppBundle\Site\Model\Repository\SheetRepository;
98
use Symfony\Bundle\SecurityBundle\Security;
109
use Symfony\Component\HttpFoundation\RequestStack;
1110
use Symfony\Component\HttpFoundation\Response;
@@ -17,7 +16,7 @@ public function __construct(
1716
private readonly Security $security,
1817
private readonly RequestStack $requestStack,
1918
private readonly Environment $twig,
20-
private readonly SheetRepository $sheetRepository,
19+
private readonly Page $page
2120
) {}
2221

2322

@@ -35,11 +34,10 @@ public function render(string $view, array $parameters = [], Response $response
3534
$blocks = [];
3635
if ($this->requestStack->getCurrentRequest()) {
3736
$requestUri = $this->requestStack->getCurrentRequest()->getRequestUri();
38-
$page = new Page($this->sheetRepository);
3937
$blocks = [
40-
'header' => $page->header($requestUri, $this->security->getUser()),
41-
'sidebar' => $page->getRightColumn(),
42-
'footer' => $page->footer(),
38+
'header' => $this->page->header($requestUri, $this->security->getUser()),
39+
'sidebar' => $this->page->getRightColumn(),
40+
'footer' => $this->page->footer(),
4341
];
4442
}
4543

templates/site/base.html.twig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@
6161
</div>
6262
<aside id="sidebar-article" class="mod item w33 m50 t100">
6363
<h2>L'afup organise...</h2>
64-
{{ sidebar.naviguer(1, 2, "externe", "") }}
64+
{{ sidebar }}
6565
</aside>
6666
</div>
6767
</div>

0 commit comments

Comments
 (0)