jilo-web/app/classes/platform.php

139 lines
4.3 KiB
PHP

<?php
/**
* Class Platform
*
* Handles platform management in the database, including retrieving, adding, editing, and deleting platforms.
*/
class Platform {
/**
* @var PDO|null $db The database connection instance.
*/
private $db;
/**
* Platform constructor.
*
* @param Database $database The database connection object.
*/
public function __construct($database) {
$this->db = $database->getConnection();
}
/**
* Retrieve details of a specific platform or all platforms.
*
* @param string $platform_id The ID of the platform to retrieve details for (optional).
*
* @return array An associative array containing platform details.
*/
public function getPlatformDetails($platform_id = '') {
$sql = 'SELECT * FROM platforms';
if ($platform_id !== '') {
$sql .= ' WHERE id = :platform_id';
$query = $this->db->prepare($sql);
$query->bindParam(':platform_id', $platform_id);
} else {
$query = $this->db->prepare($sql);
}
$query->execute();
return $query->fetchAll(PDO::FETCH_ASSOC);
}
/**
* Add a new platform to the database.
*
* @param array $newPlatform An associative array containing the details of the new platform:
* - `name` (string): The name of the platform.
* - `jitsi_url` (string): The URL for the Jitsi integration.
* - `jilo_database` (string): The database name for Jilo integration.
*
* @return bool|string True if the platform was added successfully, or an error message on failure.
*/
public function addPlatform($newPlatform) {
try {
$sql = 'INSERT INTO platforms
(name, jitsi_url, jilo_database)
VALUES
(:name, :jitsi_url, :jilo_database)';
$query = $this->db->prepare($sql);
$query->execute([
':name' => $newPlatform['name'],
':jitsi_url' => $newPlatform['jitsi_url'],
':jilo_database' => $newPlatform['jilo_database'],
]);
return true;
} catch (Exception $e) {
return $e->getMessage();
}
}
/**
* Edit an existing platform in the database.
*
* @param int $platform_id The ID of the platform to update.
* @param array $updatedPlatform An associative array containing the updated platform details:
* - `name` (string): The updated name of the platform.
* - `jitsi_url` (string): The updated Jitsi URL.
* - `jilo_database` (string): The updated Jilo database name.
*
* @return bool|string True if the platform was updated successfully, or an error message on failure.
*/
public function editPlatform($platform_id, $updatedPlatform) {
try {
$sql = 'UPDATE platforms SET
name = :name,
jitsi_url = :jitsi_url,
jilo_database = :jilo_database
WHERE
id = :platform_id';
$query = $this->db->prepare($sql);
$query->execute([
':name' => $updatedPlatform['name'],
':jitsi_url' => $updatedPlatform['jitsi_url'],
':jilo_database' => $updatedPlatform['jilo_database'],
':platform_id' => $platform_id,
]);
return true;
} catch (Exception $e) {
return $e->getMessage();
}
}
/**
* Delete a platform from the database.
*
* @param int $platform_id The ID of the platform to delete.
*
* @return bool|string True if the platform was deleted successfully, or an error message on failure.
*/
public function deletePlatform($platform_id) {
try {
$sql = 'DELETE FROM platforms
WHERE
id = :platform_id';
$query = $this->db->prepare($sql);
$query->bindParam(':platform_id', $platform_id);
$query->execute();
return true;
} catch (Exception $e) {
return $e->getMessage();
}
}
}
?>