| 
<?php
 include_once 'vendor/autoload.php';
 include_once 'config.php';
 include_once 'src/Database.php';
 include_once 'src/SearchEngine.php';
 
 $httpClient = new \GuzzleHttp\Client();
 
 if ($_SERVER['REQUEST_METHOD'] == 'POST') {
 $url = $_POST['url'];
 
 $response = $httpClient->get($url);
 
 $htmlString = (string) $response->getBody();
 
 libxml_use_internal_errors(true);
 
 $htmlString = mb_convert_encoding($htmlString, 'HTML-ENTITIES', "UTF-8");
 
 $doc = new DOMDocument();
 
 $doc->loadHTML($htmlString);
 
 $xpath = new DOMXPath($doc);
 
 $titles = $xpath->evaluate('/html/head/title');
 $descriptions = $xpath->evaluate('/html/head/meta[@name="description"]/@content');
 $keywords = $xpath->evaluate('/html/head/meta[@name="keywords"]/@content');
 
 $title = '';
 
 $description = '';
 
 $keyword = '';
 
 foreach ($titles as $t) {
 $title = $t->textContent;
 }
 
 foreach ($descriptions as $d) {
 $description = $d->textContent;
 }
 
 foreach ($keywords as $k) {
 $keyword = $k->textContent;
 }
 
 if ($title == '') {
 $title = $url;
 }
 
 $site = [
 'title' => $title,
 'blurb' => $description,
 'keywords' => $keyword,
 'url' => $url
 ];
 
 $db = new Database($config);
 
 $index = new SearchEngine($db);
 
 $added = $index->addSite($site);
 }
 
 ?>
 <!DOCTYPE html>
 <html lang="en">
 
 <head>
 <meta charset="UTF-8">
 <meta http-equiv="X-UA-Compatible" content="IE=edge">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <title>Searchy - Crawl a Website</title>
 <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet">
 <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.1.1/css/all.min.css" />
 </head>
 
 <body>
 <nav class="navbar navbar-expand-lg navbar-dark bg-dark">
 <div class="container-fluid">
 <a class="navbar-brand" href="#">Searchy</a>
 <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarColor02" aria-controls="navbarColor02" aria-expanded="false" aria-label="Toggle navigation">
 <span class="navbar-toggler-icon"></span>
 </button>
 
 <div class="collapse navbar-collapse" id="navbarColor02">
 <ul class="navbar-nav me-auto">
 <li class="nav-item">
 <a class="nav-link" href="index.php">Home</a>
 </li>
 <li class="nav-item">
 <a class="nav-link" href="add.php">Add Site</a>
 </li>
 <li class="nav-item">
 <a class="nav-link active" href="crawl.php">Crawl Site</a>
 </li>
 </ul>
 </div>
 </div>
 </nav>
 
 <div class="container">
 <?php if (isset($added) && $added == false) : ?>
 <div class="d-flex align-items-center justify-content-center mt-3">
 <div class="alert alert-danger">
 <i class="fa-solid fa-circle-xmark"></i> Site already exist
 </div>
 </div>
 <?php elseif (isset($added) && $added == true) : ?>
 <div class="d-flex align-items-center justify-content-center mt-3">
 <div class="alert alert-success">
 <i class="fa-solid fa-circle-check"></i> Site Added
 </div>
 </div>
 <?php else : ?>
 <?php endif; ?>
 <div class="d-flex align-items-center justify-content-center pt-3">
 <div class="card border-dark mb-3" style="max-width: 40rem;">
 <div class="card-header">Crawl a Site</div>
 <div class="card-body">
 <form class="d-flex" method="POST">
 <input class="form-control me-sm-2" type="url" name="url" placeholder="URL...">
 <button class="btn btn-secondary my-2 my-sm-0" type="submit">Submit</button>
 </form>
 </div>
 </div>
 </div>
 </div>
 
 
 <script src="https://cdn.jsdelivr.net/npm/@popperjs/[email protected]/dist/umd/popper.min.js"></script>
 <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.min.js"></script>
 </body>
 
 </html>
 |