Example #1
0
    return;
}
$groups = group_terms($terms);
if (count($groups) == 1) {
    $terms = current($groups);
    $groups = array();
} else {
    $terms = array();
    foreach ($groups as $group_term_id => $group_terms) {
        if (count($group_terms) <= ($group_terms[$group_term_id] ? 4 : 3)) {
            $terms[current($group_terms)] = $group_terms;
        }
    }
    if (count($terms) > 1) {
        ksort($terms);
        $terms = my_array_sum($terms);
        foreach ($groups as $group_term_id => $group_terms) {
            if (count($group_terms) <= ($group_terms[$group_term_id] ? 4 : 3)) {
                unset($groups[$group_term_id]);
            }
        }
    } else {
        $terms = current($terms);
        if (count($terms) == 1 && $groups[key($terms)]) {
            unset($groups[key($terms)]);
        } else {
            $terms = false;
        }
    }
    foreach ($groups as $group_term_id => $group_terms) {
        unset($groups[$group_term_id][$group_term_id]);
Example #2
0
function group_branches($tree, $branches, $opts)
{
    $groups = array();
    foreach ($branches as $term_id => $name) {
        $terms = array();
        if ($tree[$term_id]) {
            $branch_groups = group_branches($tree, $tree[$term_id], $opts);
            if ($opts['short']) {
                foreach ($branch_groups as $group_term_id => $group_terms) {
                    if (count($group_terms) <= ($group_terms[$group_term_id] ? 4 : 3)) {
                        $terms += $group_terms;
                    }
                }
                if ($name || count($terms) > 3) {
                    foreach ($branch_groups as $group_term_id => $group_terms) {
                        if (count($group_terms) <= ($group_terms[$group_term_id] ? 4 : 3)) {
                            unset($branch_groups[$group_term_id]);
                        }
                    }
                } else {
                    $terms = array();
                }
            } else {
                foreach ($branch_groups as $group_term_id => $group_terms) {
                    if (count($group_terms) <= ($group_terms[$group_term_id] ? 4 : 3)) {
                        $terms[current($group_terms)] = $group_terms;
                    }
                }
                if ($name || count($terms) > 1) {
                    ksort($terms);
                    $terms = my_array_sum($terms);
                    foreach ($branch_groups as $group_term_id => $group_terms) {
                        if (count($group_terms) <= ($group_terms[$group_term_id] ? 4 : 3)) {
                            unset($branch_groups[$group_term_id]);
                        }
                    }
                } else {
                    $terms = current($terms);
                    if (count($terms) == 1 && $branch_groups[key($terms)]) {
                        unset($branch_groups[key($terms)]);
                    } else {
                        $terms = array();
                    }
                }
            }
        } else {
            $branch_groups = array();
        }
        switch (true) {
            case $name:
                $terms = array($term_id => $name) + $terms;
            case $terms:
                $branch_groups = array($term_id => $terms) + $branch_groups;
                break;
            default:
                reset($branch_groups);
        }
        $groups[get_term(key($branch_groups), 'products')->name] = $branch_groups;
    }
    ksort($groups);
    return my_array_sum($groups);
}