changelog.html: degraded bugs to "to do"s
[iserv-mod-room-reservation.git] / includes / mod_roomReservationConfig.inc
index 9a2bf9c..bed261b 100644 (file)
  */
 
 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)
This page took 0.023651 seconds and 4 git commands to generate.