v1.0 Initial commit of project

This commit is contained in:
2026-01-01 10:54:18 +01:00
commit 768cf78b57
990 changed files with 241213 additions and 0 deletions

View File

@@ -0,0 +1,130 @@
<?php
namespace api\classes;
use api\classes\API;
use api\classes\imageProcessor;
require_once 'API.php';
class API_devices extends API
{
public function getDevices($returnBoolean = false)
{
list($query, $types, $params) = $this->buildDynamicQuery('vc_devices');
$items = $this->generalGetFunction($query, $types, $params, $returnBoolean, 'Device');
return $items;
}
private function getDeviceSlugify()
{
$query = "SELECT * FROM vc_devices WHERE device_slugify = ?";
$stmt = $this->prepareStatement($query);
$stmt->bind_param("s", $this->data['device_slugify']);
$this->executeStatement($stmt);
return $stmt->get_result();
}
public function createDeviceImage($imageRestrictions)
{
try {
# Main image
$imageProcessor = new imageProcessor('device_image');
$imageProcessor->imageRestrictions = $imageRestrictions;
$imageProcessor->validateAndProcess();
$ImageData = $imageProcessor->returnBase64image();
} catch (Exception $e) {
$this->apiOutput(401, ['error' => 'Error: ' . $e->getMessage()]);
}
return $ImageData;
}
public function createDevice()
{
if (isset($this->data['device_image'])) {
$query = "INSERT INTO vc_devices (device_uuid, device_vendor_uuid, device_type, device_name, device_slugify, device_enabled, device_notes, device_eol, device_extensions, device_extra, device_create_timestamp, device_image, device_image_thumbnail)
VALUES (UUID(), ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
$stmt = $this->prepareStatement($query);
$stmt->bind_param("ssssisississ", $this->data['device_vendor_uuid'], $this->data['device_type'], $this->data['device_name'], $this->data['device_slugify'], $this->data['device_enabled'], $this->data['device_notes'], $this->data['device_eol'], $this->data['device_extensions'], $this->data['device_extra'], time(), $this->data['device_image'], $this->data['device_image_thumbnail']);
} else {
$query = "INSERT INTO vc_devices (device_uuid, device_vendor_uuid, device_type, device_name, device_slugify, device_enabled, device_notes, device_eol, device_extensions, device_extra, device_create_timestamp)
VALUES (UUID(), ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
$stmt = $this->prepareStatement($query);
$stmt->bind_param("ssssisissi", $this->data['device_vendor_uuid'], $this->data['device_type'], $this->data['device_name'], $this->data['device_slugify'], $this->data['device_enabled'], $this->data['device_notes'], $this->data['device_eol'], $this->data['device_extensions'], $this->data['device_extra'], time());
}
$this->executeStatement($stmt);
$stmt->close();
$result = $this->getDeviceSlugify();
if ($result->num_rows === 0) {
$this->apiOutput(500, ['error' => 'Something went wrong creating the device.'], 'error_contact_support');
}
$createDirsFailed = false;
$dirsToCreate = array(
$_SERVER['DOCUMENT_ROOT'] . "/data/devices/" . $this->data['device_slugify'],
$_SERVER['DOCUMENT_ROOT'] . "/data/devices/" . $this->data['device_slugify'] . "/firmware",
$_SERVER['DOCUMENT_ROOT'] . "/data/devices/" . $this->data['device_slugify'] . "/documents"
);
foreach ($dirsToCreate as $dir) {
if (!file_exists($dir)) {
if (!mkdir($dir)) {
$createDirsFailed = true;
}
}
}
if ($createDirsFailed) {
$this->apiOutput(500, ['error' => 'Something went wrong creating the device on the server.'], 'error_contact_support');
}
$platform_data = $result->fetch_assoc();
$this->apiOutput(200, ['success' => $platform_data], 'item_added');
}
public function updateDevice()
{
if (isset($this->data['device_image'])) {
$query = "UPDATE vc_devices SET device_modified_timestamp = ?, device_vendor_uuid = ?, device_name = ?, device_enabled = ?, device_notes = ?, device_eol = ?, device_extensions = ?, device_extra = ?, device_image = ?, device_image_thumbnail = ? WHERE device_uuid = ?";
$stmt = $this->prepareStatement($query);
$stmt->bind_param("issisisssss", time(), $this->data['device_vendor_uuid'], $this->data['device_name'], $this->data['device_enabled'], $this->data['device_notes'], $this->data['device_eol'], $this->data['device_extensions'], $this->data['device_extra'], $this->data['device_image'], $this->data['device_image_thumbnail'], $this->data['device_uuid']);
} else {
$query = "UPDATE vc_devices SET device_modified_timestamp = ?, device_vendor_uuid = ?, device_name = ?, device_enabled = ?, device_notes = ?, device_eol = ?, device_extensions = ?, device_extra = ? WHERE device_uuid = ?";
$stmt = $this->prepareStatement($query);
$stmt->bind_param("issisisss", time(), $this->data['device_vendor_uuid'], $this->data['device_name'], $this->data['device_enabled'], $this->data['device_notes'], $this->data['device_eol'], $this->data['device_extensions'], $this->data['device_extra'], $this->data['device_uuid']);
}
if ($this->executeStatement($stmt)) {
$this->apiOutput(200, ['success' => 'Device updated successfully.']);
}
}
public function deleteDevice()
{
# check if the device exists
$_GET['builder'] = [1 => ['where' => [0 => 'device_uuid', 1 => $this->data['device_uuid']]]];
$device = $this->getDevices()[0];
# remove from database
$query = "DELETE FROM vc_devices WHERE device_uuid = ?";
$stmt = $this->prepareStatement($query);
$stmt->bind_param("s", $device['device_uuid']);
$this->executeStatement($stmt);
# Delete the device data folder.
$dirsToDelete = $_SERVER['DOCUMENT_ROOT'] . "/data/devices/" . $device['device_slugify'];
$this->RecursiveDeleteFolder($dirsToDelete);
$this->apiOutput(200, ['success' => 'Device removed successfully.']);
}
}