$articles[$article_id]['emails'] = array();
        }
        foreach ($row['mail'] as $email) {
            if (!in_array($email, $articles[$article_id]['emails'])) {
                $articles[$article_id]['emails'][] = $email;
            }
        }
    }
}
$object_parent_array = array();
$sql = 'select objekt_id, parent_id from objekt_objekt;';
$result = new SQL($sql);
while ($row = $result->fetch('ASSOC')) {
    $object_parent_array[] = $row;
}
$objArray = new ObjectParentArray($object_parent_array);
$parent_ids = array();
foreach ($articles as $article_id => $article) {
    $parent_id = $objArray->find_parent((string) $article_id);
    while ($parent_id) {
        $articles[$article_id]['parents'][$parent_id] = array();
        if (!in_array($parent_id, $parent_ids)) {
            $parent_ids[] = $parent_id;
        }
        $parent_id = $objArray->find_parent($parent_id);
    }
}
$parents = array();
$select_ids = array_merge(array_keys($articles), $parent_ids);
if ($select_ids) {
    $sql = 'select objekt_id, pealkiri, keel from objekt where objekt_id in (' . implode(',', $select_ids) . ');';
if ($_COOKIE['swk_unfolded_ids']) {
    $unfolded = explode(',', $_COOKIE['swk_unfolded_ids']);
}
if (empty($unfolded)) {
    $unfolded = array($trunk_id);
}
// /params & defaults
$tree = new Node($trunk);
if ($timer_debug) {
    $timer->printTime('populate tree', $timer_debug == 1 ? true : false);
}
$tree->populateTree($remove_objects);
if ($timer_debug) {
    $timer->printTime('end populate tree', $timer_debug == 1 ? true : false);
}
$opArray = new ObjectParentArray($tree->object_parent_array);
//search
$search = 0;
if ($_POST['form_action'] == 'search') {
    if ($timer_debug) {
        $timer->printTime('start search', $timer_debug == 1 ? true : false);
    }
    $searches = array();
    $classes_filter = array();
    foreach ($_POST as $field => $keyword) {
        if ($field == 'classes') {
            $classes_filter = explode(',', $keyword);
            foreach ($classes_filter as $i => $class) {
                if (!in_array($class, $classes)) {
                    unset($classes_filter[$i]);
                }
 function execSearch()
 {
     global $site;
     if ($this->ok) {
         $this->show_exec_times = $_COOKIE['debug'] ? true : false;
         // bug #2477, hidden objects must be excluded
         $this->query_sql->add_where("objekt.is_hided_in_menu = '0'");
         if ($this->show_exec_times) {
             printr($site->timer->get_aeg() . ' - alamlist');
         }
         $query_result = new Alamlist(array('alamlistSQL' => $this->query_sql));
         if ($this->show_exec_times) {
             $query_result->debug->print_msg();
         }
         if ($this->show_exec_times) {
             printr($site->timer->get_aeg() . ' - done, get tree');
         }
         $object_parent_array = array();
         $sql = 'select objekt_id, parent_id from objekt_objekt;';
         $result = new SQL($sql);
         while ($row = $result->fetch('ASSOC')) {
             $object_parent_array[] = $row;
         }
         $objArray = new ObjectParentArray($object_parent_array);
         if ($this->show_exec_times) {
             printr($site->timer->get_aeg() . ' - done, start exclude all but homesection');
         }
         while ($object = $query_result->next()) {
             $parent_id = $objArray->find_parent((string) $object->objekt_id);
             $loop_guard = 0;
             $loop_ids = array();
             while ($parent_id) {
                 $loop_guard++;
                 if (!in_array($parent_id, $loop_ids)) {
                     $loop_ids[] = $parent_id;
                 }
                 if ($loop_guard > 100) {
                     new Log(array('component' => 'Search', 'type' => 'ERROR', 'message' => 'Neverending loop! ID list: ' . implode(',', $loop_ids), 'user_id' => 0));
                     exit;
                 }
                 if (in_array($parent_id, $this->section_id)) {
                     $this->result_objects[$object->all['klass']][] = $object;
                     $this->search_count++;
                     break;
                 }
                 $parent_id = $objArray->find_parent($parent_id);
             }
         }
         if ($this->show_exec_times) {
             printr($site->timer->get_aeg() . ' - done, ');
         }
     }
 }