X-Git-Url: https://git.rohieb.name/iserv-mod-room-reservation.git/blobdiff_plain/8aa81d777b83e2828cf8ca63e178413de0fa81ee..5a9c429536bed77958a77906b5395aadae0ef6e4:/includes/mod_roomReservationConfig.inc diff --git a/includes/mod_roomReservationConfig.inc b/includes/mod_roomReservationConfig.inc index 9a2bf9c..bed261b 100644 --- a/includes/mod_roomReservationConfig.inc +++ b/includes/mod_roomReservationConfig.inc @@ -27,8 +27,10 @@ */ require_once("sec/secure.inc"); +require_once("db.inc"); require_once("mod_room-reservation/functions.inc"); require_once("mod_room-reservation/mod_roomReservationTimeslice.inc"); +require_once("mod_room-reservation/mod_roomReservationRoomsManager.inc"); /** * Determines if a privilege has been assigned @@ -166,6 +168,74 @@ class mod_roomReservationConfig { */ public function flushTimeslices() { $this->aoTimeslices = array(); } + /** + * Add a room to the list of rooms who can be booked. Throws an SQLException + * in case of an error. + * @param $sRoom (string) The name of the room + * @throws SQLException, Exception + * @return void + */ + public function whitelistRoom($sRoom) { + if(!$this->isRoomWhitelisted($sRoom)) { + $r = db_store("mod_roomreservation_roomswhitelist", + array("rrr_name" => $sRoom)); + if(!$r) { + throw new SQLException(MOD_ROOM_RESERVATION_ERROR_SQL); + } else { + log_insert(sprintf("Raum „%s“ für Buchungen gesperrt", $sRoom)); + } + } + } + + /** + * Forbid bookings for a room. Throws an SQLException in case of an error. + * @param $sRoom The name of the room + * @throws SQLException + */ + public function unWhitelistRoom($sRoom) { + $h = db_query("DELETE FROM mod_roomreservation_roomswhitelist WHERE ". + "rrr_name = $1;", $sRoom); + if(!$h) { + throw new SQLException(MOD_ROOM_RESERVATION_ERROR_SQL); + } else { + log_insert(sprintf("Raum „%s“ für Buchungen zur Verfügung gestellt", + $sRoom)); + } + } + + /** + * Determine if a room is allowed for booking. Throws an SQLException + * in case of an error. + * @param $sRoom (string) The name of the room + * @return bool + * @throws SQLException + */ + public function isRoomWhitelisted($sRoom) { + $h = db_query("SELECT * FROM mod_roomreservation_roomswhitelist WHERE ". + "rrr_name=$1;", $sRoom); + if(!$h) { + throw new SQLException(MOD_ROOM_RESERVATION_ERROR_SQL); + } + return (pg_num_rows($h) > 0); + } + + /** + * Get all rooms that are allowed for booking. Throws an SQLException + * in case of an error. + * @throws SQLException + * @return array of mod_roomReservationRoomsManager objects + */ + public function getWhitelistedRooms() { + $aor = mod_roomReservationRoomsManager::getRooms(); + $ar = array(); + foreach($aor as $key => $or) { + if($this->isRoomWhitelisted($or->getName())) { + $ar[] = $or; + } + } + return $ar; + } + /** * Show or hide the weekend * @param $b (bool)