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