Skip to content

Commit 300b124

Browse files
committed
Add method phpweb\News\NewsHandler::getLastestNews()
1 parent 3192a75 commit 300b124

3 files changed

Lines changed: 36 additions & 5 deletions

File tree

include/layout.inc

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -519,12 +519,12 @@ function get_nav_items(): array {
519519

520520
function get_news_changes()
521521
{
522-
$newsEntries = (new NewsHandler())->getPregeneratedNews();
523-
if (!isset($newsEntries[0])) {
522+
$lastNews = (new NewsHandler())->getLastestNews();
523+
if ($lastNews === null) {
524524
return false;
525525
}
526526

527-
$date = date_create($newsEntries[0]["updated"]);
527+
$date = date_create($lastNews["updated"]);
528528
if (isset($_COOKIE["LAST_NEWS"]) && $_COOKIE["LAST_NEWS"] >= $date->getTimestamp()) {
529529
return false;
530530
}
@@ -539,8 +539,8 @@ function get_news_changes()
539539

540540
$date->modify("+1 week");
541541
if ($date->getTimestamp() > $_SERVER["REQUEST_TIME"]) {
542-
$link = preg_replace('~^(http://php.net/|https://www.php.net/)~', '/', $newsEntries[0]["link"][0]["href"]);
543-
$title = $newsEntries[0]["title"];
542+
$link = preg_replace('~^(http://php.net/|https://www.php.net/)~', '/', $lastNews["link"][0]["href"]);
543+
$title = $lastNews["title"];
544544
return "<a href='{$link}'>{$title}</a>";
545545
}
546546
return false;

src/News/NewsHandler.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,16 @@
88

99
final class NewsHandler
1010
{
11+
public function getLastestNews(): array|null
12+
{
13+
$news = $this->getPregeneratedNews();
14+
if (!isset($news[0])) {
15+
return null;
16+
}
17+
18+
return $news[0];
19+
}
20+
1121
public function getPregeneratedNews(): array
1222
{
1323
$NEWS_ENTRIES = null;
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace News;
6+
7+
use PHPUnit\Framework\Attributes\CoversClass;
8+
use PHPUnit\Framework\TestCase;
9+
use phpweb\News\NewsHandler;
10+
11+
#[CoversClass(NewsHandler::class)]
12+
final class NewsHandlerTest extends TestCase
13+
{
14+
public function testGetLastestNews(): void
15+
{
16+
$newsHandler = new NewsHandler();
17+
$news = $newsHandler->getPregeneratedNews();
18+
self::assertArrayHasKey(0, $news);
19+
self::assertSame($news[0], $newsHandler->getLastestNews());
20+
}
21+
}

0 commit comments

Comments
 (0)