Newer
Older
<?php declare(strict_types=1);
require_once 'Page.php';
private const TITLE = 'title';
private const IMGURL = 'imgurl';
private const CONTENT = 'content';
protected function __construct()
{
parent::__construct();
session_start();
}
public function __destruct()
{
parent::__destruct();
}
protected function getViewData():array
{
$resultSet = $this->database->query("SELECT n.title, n.imgurl, n.content FROM news n ORDER BY n.date DESC LIMIT 5");
while ($row = $resultSet->fetch_assoc()) {
$title = htmlspecialchars($row[self::TITLE]);
$imgurl = htmlspecialchars($row[self::IMGURL]);
$content = htmlspecialchars($row[self::CONTENT]);
$news[] = new News($title, $imgurl, $content);
}
$this->generatePageHeader('NASA', '../functions.js');
<body class="nasa-body">
<img class="nasa-img" src="../img/nasa.png" alt="" />
<nav>
<ul class="top-nav">
<li><a href="#">Missions</a></li>
<li><a href="#">Galleries</a></li>
<li><a href="#">NASA TV</a></li>
<li><a href="#">Follow NASA</a></li>
<li><a href="#">Downloads</a></li>
<li><a href="#">About</a></li>
<li><a href="#">NASA Audiences</a></li>
<li>
<form id="search-form" class="search-form" method="post" accept-charset="UTF-8">
<input id="search-input" name="search-input" type="search" placeholder="Search" />
<input id="search-button" type="button" value="" />
<li class="admin-button"><a href="Admin.php">Admin</a></li>
</ul>
<ul class="center-nav">
<li><a href="#">International Space Station</a></li>
<li><a href="#">Journey to Mars</a></li>
<li><a href="#">Earth</a></li>
<li><a href="#">Technology</a></li>
<li><a href="#">Aeronautics</a></li>
<li><a href="#">Solar System and Beyond</a></li>
<li><a href="#">Education</a></li>
<li><a href="#">History</a></li>
<li><a href="#">Benefits to You</a></li>
</ul>
</nav>
</header>
<main>
<article class="content-large">
<div>
<div class="article-content-container">
<a class="article-link" href="#"></a>
<img id="slide-image" class="article-image" src="../img/nasa_news_1.jpg" alt="" />
<div class="article-content">
<div id="slide-container" class="news-headline">
<h3>Space Station</h3>
<h2>Expedition 48 Crew Lands Safely on Earth</h2>
</div>
<div class="camera-triangle"></div>
<img class="camera-img" src="../img/camera.png" alt="" />
</div>
</div>
</div>
</article>
<article class="content-small">
$title = $this->news[0]->title();
$imgurl = $this->news[0]->imgurl();
$content = $this->news[0]->content();
<a class="article-link" href="#"></a>
<img class="article-image" src="$imgurl" alt="" />
<div class="article-content">
<div class="nasa-events-container">
<div class="nasa-events-top">
<p class="nasa-events-title">$title</p>
<div class="nasa-events-bottom">
<div class="line"></div>
<div class="nasa-events-bottom-horizontal">
<a href="#">Calendar</a>
<a href="#">Launches and Landings</a>
</div>
</div>
</div>
</div>
</div>
</div>
</article>
<article class="content-small">
<div>
<div class="article-content-container">
EOT;
$title = $this->news[1]->title();
$imgurl = $this->news[1]->imgurl();
$content = $this->news[1]->content();
<img class="article-image" src="$imgurl" alt="" />
<div class="article-content">
<div class="overlay">
<h4 class="overlay-title">$title</h4>
<h4 class="overlay-description">$content</h4>
</div>
</div>
</div>
</div>
</article>
<article class="content-medium">
<div>
<div class="article-content-container">
EOT;
$title = $this->news[2]->title();
$imgurl = $this->news[2]->imgurl();
$content = $this->news[2]->content();
<img class="article-image" src="$imgurl" alt="" />
<div class="article-content">
<img class="article-half-image" src="$imgurl" alt="" />
<div class="nasa-launch-links">
<a href="#">Mission Site</a>
<a href="#">Briefing Schedule</a>
<a href="#">Launch Updates</a>
<a href="#">Video to Bennu and Back</a>
</div>
</div>
</div>
</div>
</div>
</article>
<article class="content-small">
<div>
<div class="article-content-container">
<div class="article-content">
<iframe src="https://www.youtube.com/embed/XY6idnRlPsU?si=HnFL8-if6-zB6tU2" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
</div>
</div>
</div>
</article>
<article class="content-medium">
<div>
<div class="article-content-container">
<img class="article-image" src="../img/ocean_worlds.jpg" alt="" />
</div>
</div>
</article>
<article class="content-small">
<div>
<div class="article-content-container">
<img class="article-image" src="../img/tweet.png" alt="" />
<div class="article-content"></div>
EOT;
foreach ($this->news as $news) {
$this->createSmallContent($news);
}
echo <<<EOT
EOT;
$this->generatePageFooter();
}
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
private function createSmallContent(News $news):void {
$title = $news->title();
$imgurl = $news->imgurl();
$content = $news->content();
echo <<<EOT
<article class="content-small">
<div>
<div class="article-content-container">
<div class="article-background"></div>
<a class="article-link" href="#"></a>
<img class="article-image" src="$imgurl" alt="" />
<div class="article-content">
<div class="overlay">
<h4 class="overlay-title">$title</h4>
<h4 class="overlay-description">$content</h4>
</div>
</div>
</div>
</div>
</article>
EOT;
}
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
protected function processReceivedData():void
{
parent::processReceivedData();
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
if (isset($_POST[self::FILE_NAME])) {
$_SESSION[NEWS_FILE] = $_POST[self::FILE_NAME];
header("Location: ../index.php");
die();
}
}
}
public static function main():void
{
try {
$page = new Index();
$page->processReceivedData();
$page->generateView();
} catch (Exception $e) {
header("Content-type: text/html; charset=UTF-8");
echo $e->getMessage();
}
}
}
Index::main();