162 lines
4.8 KiB
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;
|
|
}
|
|
}
|