5
5
- Channel splitting is not supported in ZEUSMask, Backup, etc.
6
- Limited support of HARDWARE layout, just listing, but limitted support for masking & more complex actions. Also no error checking.
8
9
class ZEUSLogGroup extends LOGGROUP {
339
340
function GetGroupInfo(LOGGROUP $grp = NULL, $flags = 0) {
340
if ($flags&REQUEST::NEED_INFO)
343
$req_cols = "gid, name";
346
342
if ($grp instanceof ZEUSLogGroup)
347
$res = $this->db->Query("SELECT $req_cols FROM groups WHERE gid=" . $grp->zeus_gid);
349
$res = $this->db->Query("SELECT $req_cols FROM groups WHERE gid=" . $grp->gid);
348
if ($flags&REQUEST::LIST_HARDWARE) {
349
if ($flags&REQUEST::NEED_INFO) $req_cols = "*, oid AS gid";
350
else $req_cols = "oid AS gid, name";
351
if ($grp) $where = " WHERE oid=" . $gid;
354
$res = $this->db->Query("SELECT $req_cols FROM opc $where");
351
$res = $this->db->Query("SELECT $req_cols FROM groups");
356
if ($flags&REQUEST::NEED_INFO) $req_cols = "*";
357
else $req_cols = "gid, name";
358
if ($grp) $where = " WHERE gid=" . $gid;
361
$res = $this->db->Query("SELECT $req_cols FROM groups $where");
354
364
$groups = array();
355
365
foreach ($res as $row) {
356
366
$gid0 = $row['gid'];
569
579
$items = array();
571
$resp = $this->db->Query("SELECT id FROM g2id WHERE gid=" . $grp->zeus_gid . " ORDER BY pos ASC");
582
$group_opts = array();
583
if ($flags&REQUEST::LIST_HARDWARE) {
584
$res = $this->db->Query("SELECT mode, must_update FROM opc WHERE oid=" . $grp->zeus_gid);
585
$opc = $res->fetch(PDO::FETCH_ASSOC);
588
switch ($opc['mode']) {
590
$group_opts["read"] = 0;
591
$group_opts["write"] = 1;
594
$group_opts["read"] = 1;
595
$group_opts["write"] = 1;
598
$group_opts["read"] = 1;
599
$group_opts["write"] = 0;
601
$group_opts["sampling_rate"] = $opc['must_update'];
603
$resp = $this->db->Query("SELECT bid as id FROM blocks WHERE oid=" . $grp->zeus_gid);
605
$resp = $this->db->Query("SELECT id FROM g2id WHERE gid=" . $grp->zeus_gid . " ORDER BY pos ASC");
572
607
foreach ($resp as $row) {
573
array_push($bids, $row['id']);
608
array_push($bids, $row['id']);
576
611
$pos = 0; $rpos = 0;
577
612
foreach ($bids as $bid) {
579
$resp = $this->db->Query("SELECT length, name, itemnames FROM blocks WHERE bid=$bid");
613
$resp = $this->db->Query("SELECT oindex, length, name, itemnames FROM blocks WHERE bid=$bid");
580
614
if ($resp) $res = $resp->fetch();
581
615
else $res = false;
617
if ($flags&REQUEST::LIST_HARDWARE) {
618
$pos = $res['oindex'];
583
621
$names = preg_split("/\r?\n/", $this->db->RecodeMessage($res['itemnames']));
584
622
for ($i = 0; $i < $res['length']; $i++, $pos++) {
585
if (($pos < $grp->offset)||($pos >= ($grp->offset + $grp->length))) continue;
623
if ($flags&REQUEST::LIST_HARDWARE) {
625
if (($pos < $grp->offset)||($pos >= ($grp->offset + $grp->length))) continue;
586
628
if (!$mask->Check($pos - $grp->offset)) continue;
588
$items[$rpos] = array(
630
$items[$rpos] = array_merge($group_opts, array(
589
631
"id" => $pos - $grp->offset,
590
633
"block_name" => $this->db->RecodeMessage($res['name']),
591
634
"chan_name" => $names[$i],
592
635
"name" => $names[$i],
595
638
if (preg_match("/[\w\d]/", $items[$rpos]["name"])) {
597
640
if (($uid === true)||(preg_match($uid, $items[$rpos]["name"]))) {