/**
 * Hilfsfunktion zum Auslesen aller noch "unerledigten" Updates
 * @param string $update_dir absoluter Pfad zum Updates-Verzeichnis
 * @param DbPdo $db eine offene Datenbankverbindung
 * @return array list of filenames
 */
function get_updates_to_do($update_dir, $db)
{
    $filenames = array();
    // get all available updates from updates directory
    $update_dir_handle = opendir($update_dir);
    if ($update_dir_handle) {
        $filenames['update_files'] = array();
        while ($update_file = readdir($update_dir_handle)) {
            if ($update_file != "update.css" && !is_dir($update_file) && $update_file[0] != ".") {
                $filenames['update_files'][] = $update_file;
            }
        }
    }
    unset($update_file);
    closedir($update_dir_handle);
    // set defaults for backwards compatibility
    $filenames['migrations_done'] = array();
    $filenames['updates_to_do'] = $filenames['update_files'];
    if ($db->table_exists("migrations")) {
        $sql = "SELECT * FROM " . PREFIX . "migrations";
        $result = $db->prepare_and_execute($sql);
        $filenames['migrations_done'] = array();
        foreach ($result as $migration_done) {
            $filenames['migrations_done'][] = $migration_done['filename'];
        }
        $filenames['updates_to_do'] = array_diff($filenames['update_files'], $filenames['migrations_done']);
    }
    sort($filenames['updates_to_do']);
    sort($filenames['update_files']);
    sort($filenames['migrations_done']);
    return $filenames;
}