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) . ');'; $result = new SQL($sql); while ($row = $result->fetch('ASSOC')) { if (in_array($row['objekt_id'], array_keys($articles))) {
$_SESSION[$swk_setup]['mem_classes'] = $classes; $_SESSION[$swk_setup]['classes'] = $classes = sizeof($classes_filter) > 0 ? $classes_filter : $classes; } elseif (in_array($field, $fields) && $keyword != '') { $searches[$field] = $keyword; } } if (count($searches)) { // forget pre selection $pre_selected = array(); //fold the tree $unfolded = array(); $search = new TreeSearch($searches, $classes, $language_id); //add search result to be open in trees foreach ($search->getResults() as $object_id) { while ($object_id !== null) { $object_id = $opArray->find_parent($object_id); if ($object_id !== null && !in_array($object_id, $unfolded)) { $unfolded[] = $object_id; } } } } if ($timer_debug) { $timer->printTime('end search', $timer_debug == 1 ? true : false); } } else { $_SESSION[$swk_setup]['classes'] = $classes = $_SESSION[$swk_setup]['mem_classes']; } // /search // unfold pre selected parents foreach ($pre_selected as $object_id) {
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, '); } } }