function build_cats_tree_list($tree, $active)
{
    if (is_array($tree)) {
        $tree_list = "";
        $tree_list .= "<ul class='catalog-menu'>";
        foreach ($tree as $item) {
            $tree_list .= "<li" . ($active == $item['ctg_cat_id'] ? " class='active'" : "") . ">";
            $tree_list .= "<span><a href='" . BASEDIR . "catalog.php?action=category&cat_id=" . $item['ctg_cat_id'] . "'>" . $item['ctg_cat_title'] . "</a></span>";
            if (isset($item['childs'])) {
                $tree_list .= build_cats_tree_list($item['childs'], $active);
            }
            $tree_list .= "</li>";
        }
        $tree_list .= "</ul>";
    } else {
        return null;
    }
    return $tree_list;
}
<?php

defined("IN_FUSION") or die;
if (!isset($catalog_setting)) {
    require_once INFUSIONS . "al_catalog/infusion_db.php";
    add_to_head("<link rel='stylesheet' href='" . AL_CATALOG_DIR . "asset/catalog-styles.css' />");
}
require_once INFUSIONS . "al_catalog/functions.php";
if (file_exists(AL_CATALOG_DIR . "locale/" . $settings['locale'] . ".php")) {
    include AL_CATALOG_DIR . "locale/" . $settings['locale'] . ".php";
} else {
    include AL_CATALOG_DIR . "locale/Russian.php";
}
$cats_result = dbquery("SELECT * FROM " . DB_AL_CATALOG_CATS);
if (dbrows($cats_result)) {
    $cats_assoc = array();
    while ($cc = dbarray($cats_result)) {
        $cats_assoc[$cc['ctg_cat_id']] = $cc;
    }
    $cats_tree = build_cats_tree_array($cats_assoc);
    opentable($locale['ctg42']);
    echo build_cats_tree_list($cats_tree, isset($_GET['cat_id']) && isnum($_GET['cat_id']) ? $_GET['cat_id'] : 0);
    closetable();
}