130 lines
6.1 KiB
PHP
130 lines
6.1 KiB
PHP
<?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.']);
|
|
}
|
|
} |