function __construct(READER $rdr, LOGGROUP $grp, DATAFilter $filter, &$opts = NULL) { if ($rdr instanceof CACHEReader) { $this->skip = true; } else { $this->skip = false; $this->filters = array(); foreach ($opts['extractors'] as $ext => &$items) { $config =& $opts['config'][$ext]; $filter_class = $config['filter']; ADEI::RequireClass("extractors/{$filter_class}", true); $this->filters[$ext] = array(); foreach ($items as $item => $mask) { $this->filters[$ext][$item] = new $filter_class($mask, $config); } } $this->mappings = $opts['mappings']; $mask = $filter->GetItemMask(); if ($mask && !$mask->IsFull()) { $this->check_masked = true; $this->cur_indexes = array(); $i = 0; foreach ($mask->ids as $id) { $this->cur_indexes[$id] = $i++; } } else { $this->check_masked = false; $this->cur_indexes = range(0, $rdr->GetGroupSize($grp) - 1); } if ($opts['mask'] && !$opts['mask']->IsFull()) { $this->real_indexes = array(); $i = 0; foreach ($opts['mask']->ids as $id) { $this->real_indexes[$id] = $i++; } } else { $this->real_indexes = range(0, $rdr->GetGroupSize($grp) - 1); } $this->remove = sizeof($this->cur_mask) - sizeof($this->real_mask); if ($this->remove < 0) { $this->remove = 0; } } }
static function Parse($srctree, $optimize = false, $flags = 0) { global $ADEI; global $ADEI_SRCTREE_EXTRA; $elements = explode(",", preg_replace_callback("/(\\([^)]+,[^)]+\\))/", create_function('$matches', ' return preg_replace("/,/", ";", $matches[0]); '), $srctree)); $curid = false; $res = array(); $idnum = array(); $extras = array(); if (!$elements || !$elements[0]) { $elements = array(); } if ($flags & SOURCETree::EXPAND_SERVERS) { $remove_dublicates = false; $new_elements = array(); foreach ($elements as $element) { if (preg_match("/^(.*)\\(([^)]+)\\)\$/", $element, $m)) { array_push($new_elements, $element); } else { $parts = explode("__", $element, 4); if (sizeof($parts) == 1) { $req = new SERVERRequest($props = array("db_server" => $parts[0])); $list = $req->GetDatabaseList(); foreach ($list as $id => $info) { array_push($new_elements, $parts[0] . "__" . $id); } $remove_dublicates = true; } else { if (sizeof($parts) > 2 && $parts[0] == "virtual") { $extra = $parts[1]; if (!$extras[$extra]) { ADEI::RequireClass("srctree/{$ADEI_SRCTREE_EXTRA[$extra]['class']}"); $extras[$extra] = new $ADEI_SRCTREE_EXTRA[$extra]['class']($req, $ADEI_SRCTREE_EXTRA[$extra]['options']); } $parts = explode("__", $element, 3); $list = $extras[$extra]->Parse($parts[2]); foreach ($list as $item) { array_push($new_elements, $item); } $remove_dublicates = true; } else { array_push($new_elements, $element); } } } } $elements = array(); foreach ($new_elements as $element) { if (preg_match("/^(.*)\\(([^)]+)\\)\$/", $element, $m)) { array_push($elements, $element); } else { $parts = explode("__", $element, 4); if (sizeof($parts) == 2) { $req = new SOURCERequest($props = array("db_server" => $parts[0], "db_name" => $parts[1])); $list = $req->GetGroupList(); foreach ($list as $gid => $info) { array_push($elements, $parts[0] . "__" . $parts[1] . "__" . $gid); } $remove_dublicates = true; } else { array_push($elements, $element); } } } if ($remove_dublicates) { if ($optimize) { $elements = array_unique($elements); } else { $new_elements = array_unique($elements); ksort($new_elements); $elements = array_values($new_elements); } } } foreach ($elements as $element) { if (preg_match("/^(.*)\\(([^)]+)\\)\$/", $element, $m)) { $id = $m[1]; $parts = explode("__", $m[1], 3); if (sizeof($parts) < 3) { throw new ADEIException(translate("Unsupported element (%s) in the source tree", $m[1])); } $items = explode(";", $m[2]); } else { $parts = explode("__", $element, 4); if (sizeof($parts) == 1 && ($flags & SOURCETree::IGNORE_UIDS) == 0) { $item_props = $ADEI->ResolveUID($parts[0]); // Controls are not supported at the moment if ($item_props) { $parts = explode("__", SOURCETree::PropsToItem($item_props)); } else { if (($flags & SOURCETree::IGNORE_BADITEMS) == 0) { throw new ADEIException(translate("UID (%s) is not available", $parts[0])); } else { continue; } } } if (sizeof($parts) < 3) { if (($flags & SOURCETree::IGNORE_BADITEMS) == 0) { throw new ADEIException(translate("Unsupported element (%s) of source tree", $element)); } else { continue; } } $id = $parts[0] . "__" . $parts[1] . "__" . $parts[2]; if (sizeof($parts) == 4) { $items = array($parts[3]); } else { $items = false; } } if ($optimize) { $realid = $id; } else { if (strcmp($id, $curid)) { if ($idnum[$id]) { $realid = $id . "__" . ++$idnum[$id]; } else { $realid = $id; $idnum[$id] = 1; } $curid = $id; } } if (!isset($res[$realid])) { $res[$realid] = array('props' => array('db_server' => $parts[0], 'db_name' => $parts[1], 'db_group' => $parts[2]), 'items' => array()); } if ($items === false) { $res[$realid]['items'] = false; unset($res[$realid]['props']['db_mask']); } else { if (is_array($res[$realid]['items'])) { $res[$realid]['items'] = array_merge($res[$realid]['items'], $items); $res[$realid]['props']['db_mask'] = implode(",", $res[$realid]['items']); } } } return $res; }
<?php global $ADEI_TIMINGS; global $EXPORT_SAMPLING_RATES; global $EXPORT_FORMATS; ADEI::RequireClass("export"); ADEI::RequireClass("draw"); header("Content-type: text/xml"); header("Cache-Control: no-cache, must-revalidate"); header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); if ($_GET['version'] == 1) { $item_tag = "MenuItem"; $item_title = "name"; $item_image = "src"; $separator_tag = "divider"; $separator_attrs = ""; } else { $item_tag = "item"; $item_title = "text"; $item_image = "img"; $separator_tag = "item"; $separator_attrs = "type=\"separator\""; } /* echo "<?xml version='1.0' ?>"; echo "<menu maxItems=\"1\" $item_title=\"\">"; echo "<$item_tag $item_title=\"\" src=\"menu.png\" id=\"main_file\" width=\"20px\" withoutImages=\"yes\"/>"; echo "</menu>"; return; */ function ListExperiments(&$list, &$query)
<?php ADEI::RequireClass("time/unixticks"); // .NET timestamp (The number of 100-nanosecond intervals that have elapsed since 12:00:00 midnight, January 1, 0001) class MSTICKS extends UNIXTicks { function __construct(READER $reader = NULL, $opts = 0) { if (!is_array($opts)) { $opts = array("correction" => $opts); } $opts['offset'] = 6.21355968E+17; $opts['ticks_per_second'] = 10000000; parent::__construct($reader, $opts); } }
function CreateCacheReader(CACHEDB &$cache = NULL) { if ($this->srv['virtual']) { $reader = $this->srv['reader']; try { ADEI::RequireClass("readers/{$reader}", true); } catch (ADEIException $ae) { if ($this->srv['reader']) { throw new ADEIException(translate("Unsupported data reader is configured: \"%s\"", $this->srv['reader'])); } else { throw new ADEIException(translate("The data reader is not configured")); } } if (method_exists($reader, "ConvertToCacheReader")) { $rdr = new $reader($this); $rdr->ConvertToCacheReader($cache); return $rdr; } if (method_exists($reader, "CreateCacheReader")) { $rdr = new $reader($this); return $rdr->CreateCacheReader($cache); } } return new CACHEReader($this, $cache); }
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); } } } } }