X-Git-Url: https://git.rohieb.name/iserv-mod-room-reservation.git/blobdiff_plain/5760b2a8d146d7c186daab1743c84683d0d84cea..fc460d91d0660f9a632523ccd0a3884e0ad37702:/includes/mod_roomReservationConfig.inc?ds=sidebyside diff --git a/includes/mod_roomReservationConfig.inc b/includes/mod_roomReservationConfig.inc old mode 100755 new mode 100644 index 9c02e3e..8dde982 --- 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 @@ -77,7 +79,7 @@ function rrConfigSortTimeslices(mod_roomReservationTimeslice $oTs1, define("MOD_ROOM_RESERVATION_CONFIGFILE_HEADER", "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 zur Verfügung gestellt", + $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 gesperrt", $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) @@ -204,7 +273,7 @@ class mod_roomReservationConfig { $aot = $this->getTimeslices(); $aRet = array(); foreach($aot as $ao) { - $aRet[] = $bFormat ? _date("%#I:%M %p", $ao->getBegin()) : + $aRet[] = $bFormat ? gmstrftime(_("%#I:%M %p"), $ao->getBegin()) : $ao->getBegin(); } return $aRet; @@ -221,7 +290,8 @@ class mod_roomReservationConfig { $aot = $this->getTimeslices(); $aRet = array(); foreach($aot as $ao) { - $aRet[] = $bFormat ? _date("%#I:%M %p", $ao->getEnd()) : $ao->getEnd(); + $aRet[] = $bFormat ? gmstrftime(_("%#I:%M %p"), $ao->getEnd()) : + $ao->getEnd(); } return $aRet; } @@ -242,7 +312,6 @@ class mod_roomReservationConfig { /** * Determine if the lesson strings in the booking table are shown * @return bool - * FIXME needed? */ public function isShowLessons() { return ($this->bShowLessons == true); }