function show_sub_taxa($taxons, $ranks, $name, $level) { //print tree of all taxons ($taxons) in order of ranks according $ranks, beginning from taxon with name $name of level $level $ranks_count = array(); $rank_sub = $ranks[$level]['taxon']; if (!isset($ranks_count["{$rank_sub}"])) { $ranks_count["{$rank_sub}"] = 1; } else { } foreach ($taxons["{$rank_sub}"] as $ssubtax => $ssubcontent) { if ($ssubcontent['parent'] == $name) { //print taxon data $padding = 10 * ($level + 1); print '<p style="padding-left: ' . $padding . 'px">'; print $ranks_count["{$rank_sub}"] . '. '; print_taxon($ssubcontent, $rank_sub); $taxon_name = $ssubcontent['name']; $ranks_count["{$rank_sub}"]++; print '</p>'; $sublevel = $level; $subname = $ssubcontent['name']; while (isset($ranks[$sublevel + 1])) { $sublevel++; show_sub_taxa($taxons, $ranks, $subname, $sublevel); } } else { } } }
$schname = $children->getName(); $taxons["{$t}"][$tax_name][$schname] = array(); foreach ($children->children() as $s_children) { $it_name = $s_children->getName(); $taxons["{$t}"][$tax_name][$schname][$it_name] = trim($s_children); } } } } } ksort($taxons["{$t}"]); } $root_rank = $ranks[0]['taxon']; $root_tax = array_shift($taxons["{$root_rank}"]); print '<p>'; print_taxon($root_tax, $root_rank); print '</p>'; $name = $root_tax['name']; show_sub_taxa($taxons, $ranks, $name, 1); } else { } include 'template/right'; } else { include 'template/top'; print 'К сожалению, <b>' . $c_user['name'] . '</b>, Вы - <b>' . $c_user['role_ps'] . '</b>, а не администратор системы. Попробуйте выйти и войти еще раз или свяжитесь с администратором системы для изменения Вашего статуса.'; include 'template/form_logoff'; } } else { include 'template/top'; print 'Здравствуйте! Мы Вас не знаем. Если Вы наш пользователь - представьтесь, пожалуйста'; include 'template/form_login';
foreach ($sp_ind->series as $series) { foreach ($series->specimen as $specimen) { $taxon = $specimen->taxon; $taxon = trim($taxon); if (!isset($spec["{$taxon}"])) { $spec[] = $taxon; } else { } } } ksort($spec); //------------------------------------------------------- //------------------------------------------------------- $file = $xmldir . $tree . '.xml'; $xml = simplexml_load_file('kgbase/base/bases/' . $base . '/' . $index['taxonomy']); $all_taxonomy = convert_taxonomy($xml); $ranks = $all_taxonomy['ranks']; $taxons = $all_taxonomy['taxons']; //---print taxons //count taxons print 'Всего таксонов (по рангам):<br>'; foreach ($ranks as $lev => $rank) { $tax_count = count($taxons[$rank['taxon']]); $ranks[$lev]['count'] = 1; print '- ' . $rank['pseudonym'] . ': ' . $tax_count . '.<br>'; } //root $rtaxon = array_shift($taxons[$ranks[0]['taxon']]); print_taxon($rtaxon, $ranks[0]['taxon']); $rname = $rtaxon['name']; show_sub_taxa($taxons, $ranks, $rname, 1, $spec, $site, $base);
//get the list of specimens according search pref. $num_result = count($coll_search_result); //show the results if something is found (list is not empty) if ($num_result > 0) { $end_data = construct_taxonomy($coll_search_result, $all_tax); $end_taxons = $end_data['taxons']; $end_ranks = $end_data['ranks']; $sel_taxons = $end_data['sel_taxons']; //!!!check this array!!! print '<p><b>Вот что мы нашли:</b><br>'; foreach ($end_ranks as $rank) { $r_n = $rank['taxon']; $r_ps = $rank['pseudonym']; $r_count = count($end_taxons["{$r_n}"]); print $r_ps . ': ' . $r_count . '<br>'; } print '</p>'; $rrank = $end_ranks[0]['taxon']; $rtaxon = reset($end_taxons["{$rrank}"]); print_taxon($rtaxon, $end_ranks[0]['taxon']); $rname = $rtaxon['name']; $locations = sort_locations($coll_result['locations'], $coll_search_result); show_sub_taxa_data($end_taxons, $end_ranks, $rname, 1, $sel_taxons, $site, $base, $locations, $coll_search_result); } else { print 'Извините, ничего не нашлось :( <a href="' . $site . '&base=' . $base . '&search=yes">Поискать что-нибудь другое</a><br>'; } } else { print 'Ой! Вы не сказали, что Вы ищете - все поля формы остались пустыми :( <a href="' . $site . '&base=' . $base . '&search=yes">Уточнить условия поиска (обратно)</a><br>'; } } else { }
function show_sub_taxa_data($taxons, $ranks, $name, $level, $spec, $site, $base, $locations, $specimens) { //this function in common as show_sub_taxa (u.s.), but prints also data of specimens from 2 last arguments (calls short_taxon_data function) $ranks_count = array(); $rank_sub = $ranks[$level]['taxon']; if (!isset($ranks_count["{$rank_sub}"])) { $ranks_count["{$rank_sub}"] = 1; } else { } foreach ($taxons["{$rank_sub}"] as $ssubtax => $ssubcontent) { if ($ssubcontent['parent'] == $name) { //print taxon data $padding = 10 * ($level + 1); print '<p style="padding-left: ' . $padding . 'px; margin-top: -1px; margin-bottom: -1px;">'; print $ranks_count["{$rank_sub}"] . '. '; print_taxon($ssubcontent, $rank_sub); $taxon_name = $ssubcontent['name']; $taxon_name = trim($taxon_name); if (array_search($taxon_name, $spec) !== false) { print ' <a href="' . $site . '&base=' . $base . '&txn=' . $taxon_name . '" target="_blank">коллекция</a>'; short_taxon_data($taxon_name, $locations, $padding, $site, $base); } else { } $ranks_count["{$rank_sub}"]++; print '</p>'; $sublevel = $level; $subname = $ssubcontent['name']; while (isset($ranks[$sublevel + 1])) { $sublevel++; show_sub_taxa_data($taxons, $ranks, $subname, $sublevel, $spec, $site, $base, $locations, $specimens); } } else { } } }