*/
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
/** (bool) Determine if the weekend is shown */
protected $bShowWeekend;
/** (bool) Determine if the strings "1. lesson", "2. lesson" etc are shown */
- // FIXME needed?
protected $bShowLessons;
/** (array of strings) error messages */
protected $asMessages;
*/
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)
$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;
$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;
}
/**
* Determine if the lesson strings in the booking table are shown
* @return bool
- * FIXME needed?
*/
public function isShowLessons() { return ($this->bShowLessons == true); }