Files
EdgeManager/EdgeManager/EController/EConfigure.php

162 lines
4.8 KiB
PHP

<?php
namespace EdgeManager\EController;
class EConfigure {
function __construct(
protected $dbconn,
protected $post = NULL,
protected $get = NULL,
) {}
function add_server() {
pg_query($this -> dbconn, "BEGIN");
$addr_exists = pg_query($this -> dbconn, sprintf(
"SELECT EXISTS (
SELECT 1 FROM hf_mes_scada_edgeserver_controller_server
WHERE url = '%s'
AND port = '%s'
)",
$this -> post -> url,
$this -> post -> port
));
$name_exists = pg_query($this -> dbconn, sprintf(
"SELECT EXISTS (
SELECT 1 FROM hf_mes_scada_edgeserver_controller_server
WHERE name = '%s'
)",
$this -> post -> name
));
if (
pg_fetch_assoc($addr_exists)['exists'] === 't'
or pg_fetch_assoc($name_exists)['exists'] === 't'
) {
pg_query($this -> dbconn, "ROLLBACK");
return "REPLICATED";
} else {
$res = pg_insert(
$this -> dbconn,
'hf_mes_scada_edgeserver_controller_server',
(array) $this -> post
);
if ($res) {
pg_query($this -> dbconn, "COMMIT");
return true;
} else {
pg_query($this -> dbconn, "ROLLBACK");
return false;
}
}
}
function remove_server() {
pg_query($this -> dbconn, "BEGIN");
$exists = pg_query($this -> dbconn, sprintf(
"SELECT EXISTS(
SELECT 1 FROM hf_mes_scada_edgeserver_controller_device
WHERE server_id = '%s'
)", $this -> post -> id
));
if (pg_fetch_assoc($exists)['exists'] === 't') {
pg_query($this -> dbconn, "ROLLBACK");
return "REMAINING";
} else {
$res = pg_delete(
$this -> dbconn,
'hf_mes_scada_edgeserver_controller_server',
(array) $this -> post,
);
if ($res) {
pg_query($this -> dbconn, "COMMIT");
return true;
} else {
pg_query($this -> dbconn, "ROLLBACK");
return false;
}
}
}
function update_server() {
return pg_update(
$this -> dbconn,
'hf_mes_scada_edgeserver_controller_server',
(array) $this -> post,
['id' => $this -> post -> id]
);
}
static function get_servers($dbconn) {
$res = pg_query($dbconn, "SELECT * FROM hf_mes_scada_edgeserver_controller_server");
return pg_fetch_all($res);
}
function add_device() {
$res = pg_insert(
$this -> dbconn,
'hf_mes_scada_edgeserver_controller_device',
(array) $this -> post
);
return $res === false ? $res : true;
}
function remove_device() {
return pg_delete(
$this -> dbconn,
'hf_mes_scada_edgeserver_controller_device',
(array) $this -> post
);
}
function update_device () {
return pg_update(
$this -> dbconn,
'hf_mes_scada_edgeserver_controller_device',
(array) $this -> post,
['id' => $this -> post -> id]
);
}
function get_device() {
$res = pg_query($this -> dbconn, sprintf(
"SELECT * FROM hf_mes_scada_edgeserver_controller_device
WHERE id = '%s'",
$this -> get['id']
));
return pg_fetch_all($res);
}
function get_device_list() {
$res = pg_query($this -> dbconn, sprintf(
"SELECT id, name FROM hf_mes_scada_edgeserver_controller_device
WHERE server_id = '%s'",
$this -> get['id']
));
return pg_fetch_all($res);
}
static function get_all_devices() {
$res = pg_query(
"SELECT server_id,
server.name AS server_name,
url, port,
device.name AS device_name,
conf -> '@DeviceType' AS device_type
FROM hf_mes_scada_edgeserver_controller_server server,
hf_mes_scada_edgeserver_controller_device device
WHERE (conf -> '@DeviceType') IS NOT NULL
AND server.id = server_id;"
);
$server_devices = pg_fetch_all($res);
$all_devices = [];
foreach ($server_devices as $device) {
if (!isset($all_devices[$device['server_id']]))
$all_devices[$device['server_id']] = array_slice($device, 0, 4);
$all_devices[$device['server_id']]['devices'][] = array_slice($device, -2);
}
return $all_devices;
}
}