protected function AppendExtractedItems(LOGGROUP $grp, MASK $mask, array &$items, $flags = 0) { if ($flags & REQUEST::SKIP_GENERATED) { return; } $exts = $this->GetGroupOption($grp, "data_extractors"); if ($exts) { $all_items = $this->GetItemList($grp, $full_mask = new MASK(), REQUEST::LIST_CUSTOM | REQUEST::SKIP_GENERATED); $nextid = 0; foreach ($all_items as &$item) { if (!$item['custom'] && $item['id'] >= $nextid) { $nextid = $item['id'] + 1; } } foreach ($exts as $ekey => $opts) { $filter_class = $opts['filter']; ADEI::RequireClass("extractors/" . strtolower($filter_class), true); if (isset($opts['item_mask'])) { if (is_array($opts['item_mask'])) { $key = $opts['item_mask']['key']; $re = $opts['item_mask']['items']; } else { $key = "id"; $re = $opts['item_mask']; } } else { $key = "id"; $re = "/./"; } if (isset($opts['output_mask'])) { if (is_array($opts['output_mask'])) { $fkey = $opts['output_mask']['key']; $fre = $opts['output_mask']['items']; } else { $fkey = "id"; $fre = $opts['output_mask']; } } else { $fkey = "id"; $fre = "/./"; } foreach ($all_items as &$item) { if (!preg_match($re, $item[$key])) { continue; } $filter_items = $filter_class::GetItemList($item, $flags); foreach ($filter_items as $eid => $fi) { if (!preg_match($fre, $fi[$fkey])) { continue; } $fi['id'] = $nextid++; if (!$mask->Check($fi['id'])) { continue; } if (isset($opts['title'])) { $fi['name'] = sprintf($opts['title'], $item['name']); } else { if (isset($fi['name'])) { $fi['name'] = sprintf($fi['name'], $item['name']); } else { $fi['name'] = "{$item['name']} {$filter_class}"; } } $fi['item_type'] = 'extract'; $fi['item_extractor'] = $opts['filter']; $fi['item_extractor_id'] = $ekey; $fi['item_dependency'] = $item['id']; $fi['extractor_item'] = $eid; foreach ($item as $ikey => $val) { $fi["item_dependency_{$ikey}"] = $val; } array_push($items, $fi); } } } } }