diff --git a/src/UNL/WDN/Assessment.php b/src/UNL/WDN/Assessment.php index cc4be260f83b18599a758d7d8f432dd1249349c2..54790020ee521f73f3f7a9865880a37ea5dbfbb8 100644 --- a/src/UNL/WDN/Assessment.php +++ b/src/UNL/WDN/Assessment.php @@ -11,6 +11,23 @@ class UNL_WDN_Assessment $this->db = $db; } + function checkInvalid() + { + $plogger = new UNL_WDN_Assessment_PageLogger($this); + $vlogger = new UNL_WDN_Assessment_ValidateInvalidLogger($this); + $downloader = new Spider_Downloader(); + $parser = new Spider_Parser(); + $spider = new Spider($downloader, $parser); + + $spider->addLogger($plogger); + $spider->addLogger($vlogger); + $spider->addUriFilter('Spider_AnchorFilter'); + $spider->addUriFilter('Spider_MailtoFilter'); + $spider->addUriFilter('UNL_WDN_Assessment_FileExtensionFilter'); + + $spider->spider($this->baseUri); + } + function reValidate() { $this->removeEntries(); @@ -45,13 +62,13 @@ class UNL_WDN_Assessment function setValidationResult($uri, $result) { - $sth = $this->db->prepare('UPDATE assessment SET valid = ? WHERE baseurl = ? AND url = ?;'); + $sth = $this->db->prepare('UPDATE assessment SET valid = ?, timestamp = ? WHERE baseurl = ? AND url = ?;'); if ($result) { $result = 'true'; } else { $result = 'false'; } - $sth->execute(array($result, $this->baseUri, $uri)); + $sth->execute(array($result, date('Y-m-d H:i:s'), $this->baseUri, $uri)); } function getSubPages() @@ -60,4 +77,15 @@ class UNL_WDN_Assessment $sth->execute(array($this->baseUri)); return $sth->fetchAll(); } + + function pageWasValid($uri) + { + $sth = $this->db->prepare('SELECT valid FROM assessment WHERE baseurl = ? AND url = ?;'); + $sth->execute(array($this->baseUri, $uri)); + $result = $sth->fetch(); + if ($result['valid'] == 'true') { + return true; + } + return false; + } } \ No newline at end of file diff --git a/src/UNL/WDN/Assessment/ValidateInvalidLogger.php b/src/UNL/WDN/Assessment/ValidateInvalidLogger.php new file mode 100644 index 0000000000000000000000000000000000000000..c0608deef3060220f1a65b29a93c4659363b633c --- /dev/null +++ b/src/UNL/WDN/Assessment/ValidateInvalidLogger.php @@ -0,0 +1,10 @@ +<?php +class UNL_WDN_Assessment_ValidateInvalidLogger extends UNL_WDN_Assessment_ValidationLogger +{ + function log($uri, DOMXPath $xpath) + { + if (!$this->assessment->pageWasValid($uri)) { + parent::log($uri, $xpath); + } + } +} \ No newline at end of file diff --git a/www/index.php b/www/index.php index 88bf08bd1cc9d7808eb13cfe6624cdfb065d8aae..c8e32a32e92a1197b07a32f4abdadcc714c04a33 100644 --- a/www/index.php +++ b/www/index.php @@ -9,14 +9,17 @@ if (isset($_GET['uri'])) { $assessment = new UNL_WDN_Assessment($uri, $db); if (isset($_GET['revalidate'])) { $assessment->reValidate(); + } elseif (isset($_GET['invalid'])) { + $assessment->checkInvalid(); } } ?> -<h1>Welcome to the batch validator</h1> +<h1>Welcome to the new batch validator</h1> <form method="GET" action=""> <input type="text" name="uri" value="<?php echo $uri; ?>" /> Revalidate all? <input type="checkbox" name="revalidate" /> +Revalidate invalid? <input type="checkbox" name="invalid" /> <input type="submit" name="submit" /></form> <?php