示例#1
0
 public function GetItemList(LOGGROUP $grp = NULL, MASK $mask = NULL, $flags = 0)
 {
     if (!($flags & REQUEST::CONTROL)) {
         return parent::GetItemList($grp, $mask, $flags);
     }
     $grp = $this->CheckGroup($grp, $flags);
     if (!$mask) {
         $mask = $this->CreateMask($grp, $info = NULL, $flags);
     }
     $uid = $this->opts->Get('control_uids', false);
     $items = array();
     $bid = $grp->gid;
     $resp = $this->db->Query("SELECT length, name, itemnames, oid FROM blocks WHERE bid={$bid}");
     if ($resp) {
         $res = $resp->fetch();
     } else {
         $res = false;
     }
     unset($resp);
     if (!$res) {
         return $items;
     }
     $oid = $res['oid'];
     $allow_read = true;
     $allow_write = false;
     $must_update = 0;
     $resp = $this->db->Query("SELECT mode, must_update FROM opc WHERE oid={$oid}");
     if ($resp) {
         $opcres = $resp->fetch();
         if ($opcres) {
             switch ($opcres['mode']) {
                 case 1:
                     // write only
                     $allow_read = false;
                 case 2:
                     // read-write
                     $allow_write = true;
             }
             $must_update = $opcres['must_update'];
         }
     }
     $names = preg_split("/\r?\n/", $res['itemnames']);
     for ($rpos = 0, $pos = 0; $pos < $res['length']; $pos++) {
         if (!$mask->Check($pos)) {
             continue;
         }
         $items[$rpos] = array("id" => $pos, "group" => $res['name'], "name" => $names[$pos], "read" => $allow_read, "write" => $allow_write, "sampling_rate" => $must_update);
         if (preg_match("/[\\w\\d]/", $items[$rpos]["name"])) {
             if ($uid) {
                 if ($uid === true || preg_match($uid, $items[$rpos]["name"])) {
                     $items[$rpos]["uid"] = $items[$rpos]["name"];
                 }
             }
         } else {
             // This convention is considered in Get/SetControls functions
             $items[$rpos]["name"] = "item" . $pos;
         }
         $rpos++;
     }
     unset($names);
     return $items;
 }