Want to see your conference appear here?
'; -foreach ($frontpage as $entry) { +foreach ((new NewsHandler())->getConferences() as $entry) { $link = preg_replace('~^(http://php.net/|https://www.php.net/)~', '', $entry["id"]); $id = parse_url($entry["id"], PHP_URL_FRAGMENT); $date = date_format(date_create($entry["updated"]), 'Y-m-d'); diff --git a/include/layout.inc b/include/layout.inc index b3dc6dbfa9..c69d390b32 100644 --- a/include/layout.inc +++ b/include/layout.inc @@ -2,6 +2,7 @@ use phpweb\I18n\Languages; use phpweb\Navigation\NavItem; +use phpweb\News\NewsHandler; $_SERVER['STATIC_ROOT'] = $MYSITE; $_SERVER['MYSITE'] = $MYSITE; @@ -346,7 +347,7 @@ function news_archive_sidebar(): void } // Print news -function print_news($news, $dog, $max = 5, $onlyyear = null, $return = false) { +function print_news($news, $dog, $max = 5, $return = false) { $retval = []; $count = 0; $news = $news ?: []; // default to empty array (if no news) @@ -391,10 +392,6 @@ function print_news($news, $dog, $max = 5, $onlyyear = null, $return = false) { $published = substr($item["published"], 0, 10); $nixtimestamp = strtotime($published); $newsdate = date("d M Y", $nixtimestamp); - if ($onlyyear && date("Y", $nixtimestamp) != $onlyyear) { - $count--; - continue; - } if ($return) { $retval[] = [ @@ -518,8 +515,12 @@ function get_nav_items(): array { function get_news_changes() { - include __DIR__ . "/pregen-news.inc"; - $date = date_create($NEWS_ENTRIES[0]["updated"]); + $lastNews = (new NewsHandler())->getLastestNews(); + if ($lastNews === null) { + return false; + } + + $date = date_create($lastNews["updated"]); if (isset($_COOKIE["LAST_NEWS"]) && $_COOKIE["LAST_NEWS"] >= $date->getTimestamp()) { return false; } @@ -534,8 +535,8 @@ function get_news_changes() $date->modify("+1 week"); if ($date->getTimestamp() > $_SERVER["REQUEST_TIME"]) { - $link = preg_replace('~^(http://php.net/|https://www.php.net/)~', '/', $NEWS_ENTRIES[0]["link"][0]["href"]); - $title = $NEWS_ENTRIES[0]["title"]; + $link = preg_replace('~^(http://php.net/|https://www.php.net/)~', '/', $lastNews["link"][0]["href"]); + $title = $lastNews["title"]; return "{$title}"; } return false; diff --git a/index.php b/index.php index 42c293ae5b..5e52b8a57c 100644 --- a/index.php +++ b/index.php @@ -1,5 +1,7 @@ "; -$frontpage = []; -foreach ($NEWS_ENTRIES as $entry) { - foreach ($entry["category"] as $category) { - if ($category["term"] == "frontpage") { - $frontpage[] = $entry; - if (count($frontpage) >= 25) { - break 2; - } - } - } -} -foreach ($frontpage as $entry) { +foreach ((new NewsHandler())->getFrontPageNews() as $entry) { $link = preg_replace('~^(http://php.net/|https://www.php.net/)~', '', $entry["id"]); $id = parse_url($entry["id"], PHP_URL_FRAGMENT); $date = date_create($entry['updated']); diff --git a/src/News/NewsHandler.php b/src/News/NewsHandler.php new file mode 100644 index 0000000000..a7e97f766e --- /dev/null +++ b/src/News/NewsHandler.php @@ -0,0 +1,81 @@ +getPregeneratedNews(); + if (!isset($news[0])) { + return null; + } + + return $news[0]; + } + + /** @return list