El Problema está con como está formateado el IF, asi como lo tienes no tiene ningun efecto ya que el if si entra pero dentro del bloque de ejecucción no hay nada, cambia tu código por esto:
Código PHP:
<?php
// <-- more code...
foreach ($result as $row) {
$sub_array = [];
$sub_array[] = $row["id_grades"];
$sub_array[] = "<div> " . $row["names"] . " </div>";
$sub_array[] = "<div> " . $row["hour"] . " </div>";
$sub_array[] = "<div> " . $row["score"] . " </div>";
// Teacher
if ($_SESSION["level"] == "1") {
$sub_array[] =
'<div>
<button type="button" name="delete" id="' .
$row["id_grades"] .
'">Delete</button></div>';
}
// Students
elseif ($_SESSION["level"] == "2") {
if ($row["hour"] == "00:00:00") {
$sub_array[] =
'<div>
<button type="button" name="edit" id="' .
$row["id_grades"] .
'">Edit</button></div>';
}
}
$data[] = $sub_array;
}
// ...more code ->
?>
De todas formas aunque no conozco del todo la lógica requerida, me parece que comparar con la hora 00:00:00 para mostrar un botón no es una buena opción.
Para ponerte un ejemplo, si un usuario edita la fila a exactamente 00:00:00 el siempre podrá seguir editando.