Example #1
0
 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;
 }
Example #2
0
 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);
     }
 }
Example #3
0
 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;
 }