Code Coverage |
||||||||||
Lines |
Functions and Methods |
Classes and Traits |
||||||||
Total | |
0.00% |
0 / 58 |
|
0.00% |
0 / 2 |
CRAP | |
0.00% |
0 / 1 |
OlzNewsAktuellKaderblogTile | |
0.00% |
0 / 58 |
|
0.00% |
0 / 2 |
42 | |
0.00% |
0 / 1 |
getRelevance | |
0.00% |
0 / 1 |
|
0.00% |
0 / 1 |
2 | |||
getHtml | |
0.00% |
0 / 57 |
|
0.00% |
0 / 1 |
30 |
1 | <?php |
2 | |
3 | // ============================================================================= |
4 | // Zeigt eine Startseiten-Kachel mit kürzlich veröffentlichten News an. |
5 | // ============================================================================= |
6 | |
7 | namespace Olz\Startseite\Components\OlzNewsAktuellKaderblogTile; |
8 | |
9 | use Olz\Entity\News\NewsEntry; |
10 | use Olz\Entity\Users\User; |
11 | use Olz\News\Utils\NewsFilterUtils; |
12 | use Olz\Startseite\Components\AbstractOlzTile\AbstractOlzTile; |
13 | |
14 | class OlzNewsAktuellKaderblogTile extends AbstractOlzTile { |
15 | public function getRelevance(?User $user): float { |
16 | return 0.65; |
17 | } |
18 | |
19 | public function getHtml(mixed $args): string { |
20 | $entity_manager = $this->dbUtils()->getEntityManager(); |
21 | $code_href = $this->envUtils()->getCodeHref(); |
22 | $news_filter_utils = NewsFilterUtils::fromEnv(); |
23 | |
24 | $aktuell_url = $news_filter_utils->getUrl(['format' => 'aktuell']); |
25 | $kaderblog_url = $news_filter_utils->getUrl(['format' => 'kaderblog']); |
26 | $out = <<<ZZZZZZZZZZ |
27 | <h3> |
28 | <a href='{$aktuell_url}&von=startseite'> |
29 | <img src='{$code_href}assets/icns/entry_type_aktuell_20.svg' alt='Aktuell' class='link-icon'> |
30 | Aktuell |
31 | </a> |
32 | & |
33 | <a href='{$kaderblog_url}&von=startseite'> |
34 | <img src='{$code_href}assets/icns/entry_type_kaderblog_20.svg' alt='Kaderblog' class='link-icon'> |
35 | Kaderblog |
36 | </a> |
37 | </h3> |
38 | ZZZZZZZZZZ; |
39 | |
40 | $out .= "<ul class='links'>"; |
41 | $news_entry_class = NewsEntry::class; |
42 | $query = $entity_manager->createQuery(<<<ZZZZZZZZZZ |
43 | SELECT n |
44 | FROM {$news_entry_class} n |
45 | WHERE n.on_off = '1' and n.format IN ('aktuell', 'kaderblog') |
46 | ORDER BY n.published_date DESC, n.published_time DESC |
47 | ZZZZZZZZZZ); |
48 | $query->setMaxResults(4); |
49 | $index = 0; |
50 | foreach ($query->getResult() as $news_entry) { |
51 | $id = $news_entry->getId(); |
52 | $date = $this->dateUtils()->compactDate($news_entry->getPublishedDate()); |
53 | $title = $news_entry->getTitle(); |
54 | $format = $news_entry->getFormat(); |
55 | $image_ids = $news_entry->getImageIds(); |
56 | $icon = $this->newsUtils()->getNewsFormatIcon($format); |
57 | |
58 | $image = ''; |
59 | $is_image_right = ($index % 2) === 0; |
60 | if (count($image_ids) > 0) { |
61 | $class = $is_image_right ? 'right' : 'left'; |
62 | $olz_image = $this->imageUtils()->olzImage( |
63 | 'news', |
64 | $id, |
65 | $image_ids[0] ?? null, |
66 | 80, |
67 | null, |
68 | ' class="noborder"' |
69 | ); |
70 | $image = "<div class='link-image-{$class}'>{$olz_image}</div>"; |
71 | } |
72 | $image_left = ''; |
73 | $image_right = ''; |
74 | if ($is_image_right) { |
75 | $image_right = $image; |
76 | } else { |
77 | $image_left = $image; |
78 | } |
79 | |
80 | $out .= <<<ZZZZZZZZZZ |
81 | <li> |
82 | <a href='{$code_href}news/{$id}?von=startseite' class='flex min-two-lines aktuell-kaderblog-tile'> |
83 | {$image_left} |
84 | <img src='{$icon}' alt='{$format}' class='link-icon'> |
85 | <div style='flex-grow:1;'> |
86 | <span class='title'>{$title}</span> |
87 | <span class='secondary'>({$date})</span> |
88 | </div> |
89 | {$image_right} |
90 | </a> |
91 | </li> |
92 | ZZZZZZZZZZ; |
93 | |
94 | $index++; |
95 | } |
96 | $out .= "</ul>"; |
97 | |
98 | return $out; |
99 | } |
100 | } |