summaryrefslogtreecommitdiff
path: root/includes/model/Room_model.php
diff options
context:
space:
mode:
Diffstat (limited to 'includes/model/Room_model.php')
-rw-r--r--includes/model/Room_model.php129
1 files changed, 109 insertions, 20 deletions
diff --git a/includes/model/Room_model.php b/includes/model/Room_model.php
index 79536e93..098968c9 100644
--- a/includes/model/Room_model.php
+++ b/includes/model/Room_model.php
@@ -1,6 +1,30 @@
<?php
-
use Engelsystem\Database\DB;
+use Engelsystem\ValidationResult;
+
+/**
+ * Validate a name for a room.
+ *
+ * @param string $name
+ * The new name
+ * @param int $room_id
+ * The room id
+ * @return ValidationResult
+ */
+function Room_validate_name($name, $room_id)
+{
+ $valid = true;
+ if (empty($name)) {
+ $valid = false;
+ }
+ if (count(DB::select('SELECT RID FROM `Room` WHERE `Name`=? AND NOT `RID`=?', [
+ $name,
+ $room_id
+ ])) > 0) {
+ $valid = false;
+ }
+ return new ValidationResult($valid, $name);
+}
/**
* returns a list of rooms.
@@ -26,20 +50,38 @@ function Room_ids()
/**
* Delete a room
*
- * @param int $room_id
+ * @param int $room_id
*/
function Room_delete($room_id)
{
- DB::delete('DELETE FROM `Room` WHERE `RID` = ?', [$room_id]);
+ DB::delete('DELETE FROM `Room` WHERE `RID` = ?', [
+ $room_id
+ ]);
+}
+
+/**
+ * Delete a room by its name
+ *
+ * @param string $name
+ */
+function Room_delete_by_name($name)
+{
+ DB::delete('DELETE FROM `Room` WHERE `Name` = ?', [
+ $name
+ ]);
}
/**
* Create a new room
*
- * @param string $name Name of the room
- * @param boolean $from_frab Is this a frab imported room?
- * @param string $map_url URL to a map tha can be displayed in an iframe
- * @param description markdown description
+ * @param string $name
+ * Name of the room
+ * @param boolean $from_frab
+ * Is this a frab imported room?
+ * @param string $map_url
+ * URL to a map tha can be displayed in an iframe
+ * @param
+ * description markdown description
* @return false|int
*/
function Room_create($name, $from_frab, $map_url, $description)
@@ -47,23 +89,70 @@ function Room_create($name, $from_frab, $map_url, $description)
DB::insert('
INSERT INTO `Room` (`Name`, `from_frab`, `map_url`, `description`)
VALUES (?, ?, ?, ?)
- ',
- [
- $name,
- (int) $from_frab,
- $map_url,
- $description,
- ]
+ ', [
+ $name,
+ (int) $from_frab,
+ $map_url,
+ $description
+ ]);
+ $result = DB::getPdo()->lastInsertId();
+
+ engelsystem_log(
+ 'Room created: ' . $name
+ . ', frab import: ' . ($from_frab ? 'Yes' : '')
+ . ', map_url: ' . $map_url
+ . ', description: ' . $description
);
+
+ return $result;
+}
- return DB::getPdo()->lastInsertId();
+/**
+ * update a room
+ *
+ * @param string $name
+ * Name of the room
+ * @param boolean $from_frab
+ * Is this a frab imported room?
+ * @param string $map_url
+ * URL to a map tha can be displayed in an iframe
+ * @param
+ * description markdown description
+ */
+function Room_update($room_id, $name, $from_frab, $map_url, $description)
+{
+ $result = DB::update('
+ UPDATE `Room`
+ SET
+ `Name`=?,
+ `from_frab`=?,
+ `map_url`=?,
+ `description`=?
+ WHERE `RID`=?
+ LIMIT 1', [
+ $name,
+ (int) $from_frab,
+ $map_url,
+ $description,
+ $room_id
+ ]);
+
+ engelsystem_log(
+ 'Room updated: ' . $name .
+ ', frab import: ' . ($from_frab ? 'Yes' : '') .
+ ', map_url: ' . $map_url .
+ ', description: ' . $description
+ );
+
+ return $result;
}
/**
* Returns room by id.
*
- * @param int $room_id RID
- * @param bool $onlyVisible
+ * @param int $room_id
+ * RID
+ * @param bool $onlyVisible
* @return array|false
*/
function Room($room_id)
@@ -71,7 +160,7 @@ function Room($room_id)
return DB::selectOne('
SELECT *
FROM `Room`
- WHERE `RID` = ?',
- [$room_id]
- );
+ WHERE `RID` = ?', [
+ $room_id
+ ]);
}