function CountStaffOnLeave($roleID, $date)
{
    //Assume no staff on leave to begin with.
    $countOfStaffOnLeave = 0;
    //Retrieve the date record from the database.
    $dateRecord = RetrieveDateRecordByDate($date);
    if ($dateRecord != NULL) {
        //Retrieve all approved absence bookings for this date.
        $dateID = $dateRecord[DATE_TABLE_DATE_ID];
        $filter[APPR_ABS_BOOK_DATE_DATE_ID] = $dateID;
        $bookingsForDate = RetrieveApprovedAbsenceBookingDates($filter);
        if ($bookingsForDate != NULL) {
            //One or more bookings exist. itterate through them.
            foreach ($bookingsForDate as $bookingDate) {
                //Using the absence booking record, obtain the employee
                //record from the database
                $absenceBooking = RetrieveApprovedAbsenceBookingByID($bookingDate[APPR_ABS_BOOK_DATE_ABS_BOOK_ID]);
                if ($absenceBooking != NULL) {
                    $staffMember = RetrieveEmployeeByID($absenceBooking[APPR_ABS_EMPLOYEE_ID]);
                    //-----------------------------------------------------
                    // Check to see if this member of staff performs the
                    // same role as the role of the employee requesting this
                    // leave. If so, add one to the count of staff on leave.
                    //-----------------------------------------------------
                    if ($staffMember[EMP_COMPANY_ROLE] == $roleID) {
                        $countOfStaffOnLeave = $countOfStaffOnLeave + 1;
                    }
                } else {
                    error_log("Unknown absence booking id of " . $bookingDate[APPR_ABS_BOOK_DATE_ABS_BOOK_ID]);
                }
            }
        }
    } else {
        error_log("Unknown date of {$date}");
    }
    return $countOfStaffOnLeave;
}
<?php

include 'sessionmanagement.php';
$request = array();
if ($_GET["ID"] != NULL) {
    $request = RetrieveApprovedAbsenceBookingByID($_GET["ID"]);
}
if (isset($_POST["cancel"])) {
    $url = "Location:adminApprovedAbsenceBookings.php";
    header($url);
}
if (isset($_POST["update"])) {
    DeleteApprovedAbsenceBooking($_GET["ID"]);
    $success = CreateApprovedAbsenceBooking($_POST["employeeID"], $_POST["startDate"], $_POST["endDate"], $_POST["absenceType"]);
    if ($success) {
        $url = "Location:adminApprovedAbsenceBookings.php";
        header($url);
    }
}
function GenerateEmployeeSelect($request)
{
    $employees = RetrieveEmployees();
    if ($employees != NULL) {
        echo '<select class="form-control" name="employeeID">';
        foreach ($employees as $Employee) {
            if ($Employee[EMP_ID] == $request[APPR_ABS_EMPLOYEE_ID]) {
                echo '<option selected="selected" ' . 'value="' . $Employee[EMP_ID] . '">' . $Employee[EMP_NAME] . '</option>';
            } else {
                echo '<option value="' . $Employee[EMP_ID] . '">' . $Employee[EMP_NAME] . '</option>';
            }
        }
function DeleteApprovedAbsenceBooking($ID)
{
    $result = 0;
    $approvedAbsenceBooking = RetrieveApprovedAbsenceBookingByID($ID);
    if ($approvedAbsenceBooking != NULL) {
        $sql = "DELETE FROM approvedAbsenceBookingTable WHERE approvedAbsenceBookingID=" . $ID . ";";
        $result = performSQL($sql);
        $filter[APPR_ABS_BOOK_DATE_ABS_BOOK_ID] = $ID;
        $approvedAbsenceBookingDates = RetrieveApprovedAbsenceBookingDates($filter);
        foreach ((array) $approvedAbsenceBookingDates as $approvedAbsenceBookingDate) {
            DeleteApprovedAbsenceBookingDate($approvedAbsenceBookingDate[APPR_ABS_BOOK_DATE_ID]);
        }
    }
    GenerateStatus(true, "Record successfully deleted.");
    return $result;
}
function UpdateApprovedAbsenceBookingDate($fields)
{
    //--------------------------------------------------------------------------------
    // Validate Input parameters
    //--------------------------------------------------------------------------------
    $inputIsValid = TRUE;
    $validID = false;
    $countOfFields = 0;
    foreach ($fields as $key => $value) {
        if ($key == APPR_ABS_BOOK_DATE_ID) {
            $record = RetrieveApprovedAbsenceBookingDateByID($value);
            if ($record != NULL) {
                $validID = true;
                $countOfFields++;
            }
        } else {
            if ($key == APPR_ABS_BOOK_DATE_DATE_ID) {
                $countOfFields++;
                $record = RetrieveDateByID($value);
                if ($record == NULL) {
                    error_log("Invalid APPR_ABS_BOOK_DATE_DATE_ID passed to " . "UpdateApprovedAbsenceBookingDate. Value=" . $value);
                    $inputIsValid = FALSE;
                }
            } else {
                if ($key == APPR_ABS_BOOK_DATE_ABS_BOOK_ID) {
                    $countOfFields++;
                    $record = RetrieveApprovedAbsenceBookingByID($value);
                    if ($record == NULL) {
                        error_log("Invalid APPR_ABS_BOOKING_ID passed to " . "UpdateApprovedAbsenceBookingDate. Value=" . $value);
                        $inputIsValid = FALSE;
                    }
                } else {
                    error_log("Invalid field passed to UpdateApprovedAbsenceBookingDate." . " {$key}=" . $key);
                    $inputIsValid = FALSE;
                }
            }
        }
    }
    if (!$validID) {
        error_log("No valid ID supplied in call to UpdateApprovedAbsenceBookingDate.");
        $inputIsValid = FALSE;
    }
    if ($countOfFields < 2) {
        error_log("Insufficent fields supplied in call to UpdateApprovedAbsenceBookingDate.");
        $inputIsValid = FALSE;
    }
    //--------------------------------------------------------------------------------
    // Only attempt to update a record in the database if the input parameters are ok.
    //--------------------------------------------------------------------------------
    $success = false;
    if ($inputIsValid) {
        $success = performSQLUpdate(APPROVED_ABSENCE_BOOKING_DATE, APPR_ABS_BOOK_DATE_ID, $fields);
    }
    return $success;
}