protected $strPostAccount;
/** (int) recurrence interval, POST data */
protected $nPostInterval;
+ /** (string) Array of error messages */
+ protected $asErrors = array();
/***************************************************************************/
/**
$this->oRm = $oRm;
$this->oBm = $oBm;
- $this->processRequestVariables();
+ try {
+ $this->processRequestVariables();
+ } catch(Exception $e) {
+ $this->asErrors[] = $e->getMessage();
+ }
$this->addCSS();
}
*/
/**
- * Process the REQUEST variables and preset the some variables
+ * Process the REQUEST variables and preset the some variables. Throws an
+ * exception if the room provided by the GET data is not allowed for booking
* @return void
+ * @throws Exception
*/
protected function processRequestVariables() {
// default values
- $aoRooms = $this->oRm->getRooms();
- if($aoRooms != array()) {
- $or = $aoRooms[0];
- $this->setRoom($or->getName());
+ $aoRooms = $this->oCfg->getWhitelistedRooms();
+ if(count($aoRooms) < 1) {
+ $this->setRoom("");
+ } else {
+ $this->setRoom($aoRooms[0]->getName());
}
$this->setDate(time());
$this->setAction(MOD_ROOM_RESERVATION_BT_ACTION_SHOW);
MOD_ROOM_RESERVATION_BT_ACTION_SHOW)))));
$this->setDate(isset($_GET["mod_roomReservationBookingTable"]["date"]) ?
intval($_GET["mod_roomReservationBookingTable"]["date"]) : time());
- $this->setRoom(isset($_GET["mod_roomReservationBookingTable"]["room"]) ?
- $_GET["mod_roomReservationBookingTable"]["room"] : "");
+ if(isset($_GET["mod_roomReservationBookingTable"]["room"])) {
+ $this->setRoom($_GET["mod_roomReservationBookingTable"]["room"]);
+ }
$this->setTsFirst(
isset($_GET["mod_roomReservationBookingTable"]["tsfirst"]) ?
intval($_GET["mod_roomReservationBookingTable"]["tsfirst"]) : 0);
/**
* Set the room of the requested booking or the room to be shown in the
- * booking table
+ * booking table. Throws an Exception if the room is not allowed for booking.
* @param $str (string)
+ * @throws Exception
*/
- protected function setRoom($str) { $this->strRoom = $str; }
+ protected function setRoom($str) {
+ // only allow whitelisted rooms
+ if($this->oCfg->isRoomWhitelisted($str)) {
+ $this->strRoom = $str;
+ } else {
+ throw new Exception(_c("room-reservation:This room is not available ".
+ "for booking."));
+ }
+ }
/**
* Set the reason of the requested booking
throw new AccessException(MOD_ROOM_RESERVATION_ERROR_ACCESS_DENIED);
return;
}
-
+
+ // print error messages and return if there are any
+ if(count($this->asErrors) > 0) {
+ printf("<p class='err'>%s</p>", join("<br />\n", $this->asErrors));
+ return;
+ }
+
// Print the header with the days
$ncTs = sizeof($this->oCfg->getTimeslices());
$nDays = ($this->oCfg->isShowWeekend()) ? 7 : 5;
$strLessons = $this->oCfg->isShowLessons() ?_sprintf_ord(
_c("room-reservation:%s# lesson"), $nTs + 1) . "<br />" : "";
$oTs = $this->oCfg->getTimeslice($nTs);
- $strTs = sprintf("%s - %s", strftime(_("%#I:%M %p"), $oTs->getBegin()),
- strftime(_("%#I:%M %p"), $oTs->getEnd()));
+ $strTs = sprintf("%s - %s", gmstrftime(_("%#I:%M %p"), $oTs->getBegin()),
+ gmstrftime(_("%#I:%M %p"), $oTs->getEnd()));
// First column: Lesson
echo sprintf("<tr><td class='lesson'>%s</td>", $strLessons . $strTs);
if($nNewUid > 0) {
// print new booking and increment the "next row" variable by
// the current span
+ $oNewBooking->setUid($nNewUid);
$anNextRow[$i] += $this->printBooking($nTs, $ts, $oNewBooking,
MOD_ROOM_RESERVATION_BTPB_NEW);
}