Makefile: 'fakeroot id -u' is 0, better using $USER env variable
[iserv-mod-room-reservation.git] / includes / mod_roomReservationConfig.inc
old mode 100755 (executable)
new mode 100644 (file)
index 9c02e3e..bed261b
  */
 
 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
@@ -93,7 +95,6 @@ class mod_roomReservationConfig {
   /** (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;
@@ -167,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)
@@ -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); }
 
This page took 0.023996 seconds and 4 git commands to generate.