function Superpose(MASK $mask = NULL) { if (!$mask || $mask->IsFull()) { return $this; } else { if ($this->IsFull()) { return $mask; } } $res = array(); foreach ($mask->ids as $id) { if (isset($this->ids[$id])) { array_push($res, $this->ids[$id]); } else { throw new ADEIException(translate("Invalid mask (%s) is passed for supperposing. The base mask is (%s)", $mask->GetProp(), $this->GetProp())); } } $mask = new MASK(); $mask->SetIDs($res); return $mask; }
function CreateMask(LOGGROUP $grp = NULL, array &$minfo = NULL, $flags = 0) { if ($minfo === NULL) { if ($this->req instanceof ITEMGroupRequest) { $minfo = $this->req->GetMaskInfo($flags); } } if (preg_match("/^maskid(\\d+)\$/", $minfo["db_mask"], $m)) { $res = new MASK(array(), $this, $grp, $flags); $masks = $this->GetFilteredMaskList($grp, $m[1], $flags); $mask = $masks->current(); if ($mask) { $res->SetIDs($mask['mask'], $mask['id']); } return $res; } else { return new MASK($minfo, $this, $grp, $flags); } }
function CreateDataFilter(LOGGROUP $grp = NULL, MASK $mask = NULL, $resample = false, $limit = 0, $additional_filter = NULL) { $grp = $this->CheckGroup($grp); $filters = $this->GetGroupOption($grp, "data_filters"); if (!$filters && isset($this->data_filters)) { $filters = $this->data_filters; } $exts = $this->GetGroupOption($grp, "data_extractors"); if ($exts) { $list = $this->GetItemList($grp, $mask); $extra = array(); $ids = array(); $extractors = array(); $mapping = array(); foreach ($list as &$item) { $id = $item['id']; if ($item['item_type']) { if (isset($item['item_dependency'])) { $dep = $item['item_dependency']; if (!$mask || !$mask->CheckStandard($dep)) { array_push($extra, $dep); } } if (!isset($extractors[$item['item_extractor_id']])) { $extractors[$item['item_extractor_id']] = array(); } if (!isset($extractors[$item['item_extractor_id']][$item['item_dependency']])) { $extractors[$item['item_extractor_id']][$item['item_dependency']] = array(); } array_push($extractors[$item['item_extractor_id']][$item['item_dependency']], $item['extractor_item']); $mapping[$id] = array($item['item_extractor_id'], $item['item_dependency'], $item['extractor_item']); } else { array_push($ids, $item['id']); //$mapping[$id] = true; } } if ($extractors) { if ($filters) { if ($additional_filter) { $additional_filter = new READER_SUPERDataFilter($additional_filter, $this, $grp, $filters, $mask, $resample, $limit); } else { $additional_filter = new READER_DATAFilter($this, $grp, $filters, $mask, $resample, $limit); } } $new_mask = new MASK(); $new_mask->SetIDs(array_merge($ids, array_unique($extra))); $extra_filter = array("class" => "EXTRACTORFilter", "mask" => $mask, "config" => $exts, "extractors" => $extractors, "mappings" => $mapping); $filters = array($extra_filter); $mask = $new_mask; } } if ($mask) { $custom_filters = $this->GetGroupOption($grp, "custom_data_filters"); if ($custom_filters && $mask->IsCustom()) { if ($filters) { $filters = array_merge($custom_filters, $filters); } else { $filters = $custom_filters; } } } if ($resample === false) { $resample = $this->GetGroupOption($grp, "resample", 0); } if ($filters || $mask || $resample || $limit) { if ($additional_filter) { $filter = new READER_SUPERDataFilter($additional_filter, $this, $grp, $filters, $mask, $resample, $limit); } else { $filter = new READER_DATAFilter($this, $grp, $filters, $mask, $resample, $limit); } return $filter; } return $additional_filter; }