--- a/diagnostics.php +++ b/diagnostics.php @@ -1,1 +1,55 @@ +<?php +include "common.inc.php"; +if (!($firstDate = getFirstDate())) + die("Cannot complete diagnotics, cannot get first file date"); +$currentDate = $firstDate; +if (!($lastDate = getPreviousDate())) + die("Cannot complete diagnotics, cannot get last file date"); +$hashes = Array(); +while ($currentDate != $lastDate) { + $results = glob(DATA_DIR . "/" . $currentDate . "*"); + if (sizeof($results) == 0) { + echo "Error on $currentDate, no photo found for that date <br>"; + } else if (sizeof($results) > 1) { + echo "Error on $currentDate, more than one photo found for that date: <br>"; + var_dump($results); + echo "<br>"; + } else { + // normal day + $fname = basename($results[0]); + $fnParts = explode(".", $fname); + if (sizeof($fnParts) < 3) { + echo "Error on $currentDate, malformed file name {$fname} <br>"; + } else { + if (strtotime($currentDate) != strtotime($fnParts[0])) { + echo "Error on $currentDate, file name {$fname} date does not match expected date <br>"; + } + if ($imgsize = getimagesize($results[0])) { + if ($imgsize[0] < MIN_IMAGE_SIZE || $imgsize[1] < MIN_IMAGE_SIZE || $imgsize[0] != $imgsize[1]) { + echo "Error on $currentDate, file name {$fname} is not large enough dimensions or non-square dimensions <br>"; + } + } else { + echo "Error on $currentDate, file name {$fname} could not be opened as an image file. File may have been corrupted <br>"; + } + $hash = md5_file($results[0]); + if ($hash != $fnParts[1]) { + echo "Error on $currentDate, file name {$fname} hash does not match expected hash. File may have been corrupted or altered <br>"; + } + if (in_array($hash, array_keys($hashes))) { + echo "Error on $currentDate, file {$fname} hash matches that of {$hashes[$hash]}. Files may be identitical duplicates of the same image <br>"; + } + $hashes[$hash] = $fname; + + if (sizeof($fnParts[2]) > 3 || ($fnParts[2] != "png" && $fnParts[2] != "jpg")) { + echo "Error on $currentDate, file name {$fname} extension unexpected <br>"; + } + } + } + + // go to next day + $currentDate = date("Y-m-d", strtotime("+1 day", strtotime($currentDate))); +} +echo "Scanned files from $firstDate to $currentDate, no errors detected<br>"; +?> +